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) 2011-2018 Sylvie Boldo
Copyright (C) 2011-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) 2011-2018 Guillaume Melquiond
Require Import Core Digits Binary. Section Binary_Bits. Arguments exist {A} {P}. Arguments B754_zero {prec} {emax}. Arguments B754_infinity {prec} {emax}. Arguments B754_nan {prec} {emax}. Arguments B754_finite {prec} {emax}.
Number of bits for the fraction and exponent
Variable mw ew : Z. Definition join_bits (s : bool) m e := (Z.shiftl ((if s then Zpower 2 ew else 0) + e) mw + m)%Z.mw, ew:Zforall (s : bool) (m e : Z), (0 <= m < 2 ^ mw)%Z -> (0 <= e < 2 ^ ew)%Z -> (0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zforall (s : bool) (m e : Z), (0 <= m < 2 ^ mw)%Z -> (0 <= e < 2 ^ ew)%Z -> (0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:Zmw':positiveHm:(0 <= m < 2 ^ Z.neg mw')%ZHe:(0 <= e < 2 ^ ew)%Z(0 <= Z.neg mw')%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Z(0 <= ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%Zew':positiveHe:(0 <= e < 2 ^ Z.neg ew')%ZHmw:(0 <= mw)%Z(0 <= Z.neg ew')%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= Z.shiftl ((if s then 2 ^ ew else 0) + e) mw + m < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 * 2 ^ mw <= ((if s then 2 ^ ew else 0 * 2 ^ mw) + e) * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= (if s then 2 ^ ew else 0 * 2 ^ mw) + e)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ ew + e)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 0 * 2 ^ mw + e)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 0 * 2 ^ mw + e)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zclear -Hm ; omega.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < ((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + 1 * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(m < 1 * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (ew + 1) * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ (ew + 1))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ ew * 2 ^ 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ ew * 2)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= ew + 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zeasy. Qed. Definition split_bits x := let mm := Zpower 2 mw in let em := Zpower 2 ew in (Zle_bool (mm * em) x, Zmod x mm, Zmod (Z.div x mm) em)%Z.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= mw)%Zmw, ew:Zforall (s : bool) (m e : Z), (0 <= m < 2 ^ mw)%Z -> (0 <= e < 2 ^ ew)%Z -> split_bits (join_bits s m e) = (s, m, e)mw, ew:Zforall (s : bool) (m e : Z), (0 <= m < 2 ^ mw)%Z -> (0 <= e < 2 ^ ew)%Z -> split_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%Z(0 <= mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:Zmw':positiveHm:(0 <= m < 2 ^ Z.neg mw')%ZHe:(0 <= e < 2 ^ ew)%Z(0 <= Z.neg mw')%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%Z(0 <= ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%Zew':positiveHe:(0 <= e < 2 ^ Z.neg ew')%ZHmw:(0 <= mw)%Z(0 <= Z.neg ew')%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Zsplit_bits (join_bits s m e) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((2 ^ mw * 2 ^ ew <=? Z.shiftl ((if s then 2 ^ ew else 0) + e) mw + m)%Z, ((Z.shiftl ((if s then 2 ^ ew else 0) + e) mw + m) mod 2 ^ mw)%Z, (((Z.shiftl ((if s then 2 ^ ew else 0) + e) mw + m) / 2 ^ mw) mod 2 ^ ew)%Z) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((2 ^ mw * 2 ^ ew <=? ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z, ((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) mod 2 ^ mw)%Z, (((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) / 2 ^ mw) mod 2 ^ ew)%Z) = (s, m, e)mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z = smw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) mod 2 ^ mw)%Z = mmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) / 2 ^ mw) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z = smw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? (2 ^ ew + e) * 2 ^ mw + m)%Z = truemw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? (0 + e) * 2 ^ mw + m)%Z = falsemw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? (2 ^ ew + e) * 2 ^ mw + m)%Z = truemw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <= (2 ^ ew + e) * 2 ^ mw + m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= (2 ^ ew + e) * 2 ^ mw + m - 2 ^ mw * 2 ^ ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= e * 2 ^ mw + m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= e * 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= e)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= m)%Zapply Hm.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= m)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 2 ^ ew <=? (0 + e) * 2 ^ mw + m)%Z = falsemw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((0 + e) * 2 ^ mw + m < 2 ^ mw * 2 ^ ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * - e + ((0 + e) * 2 ^ mw + m) < 2 ^ mw * - e + 2 ^ mw * 2 ^ ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(m * 1 < 2 ^ mw * - e + 2 ^ mw * 2 ^ ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(m * 1 < 2 ^ mw * (- e + 2 ^ ew))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(m * 1 < 2 ^ mw * 1)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 1 <= 2 ^ mw * (- e + 2 ^ ew))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(2 ^ mw * 1 <= 2 ^ mw * (- e + 2 ^ ew))%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(1 <= - e + 2 ^ ew)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zclear -Hm ; omega.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(0 <= 2 ^ mw)%Zmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) mod 2 ^ mw)%Z = mmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((m + ((if s then 2 ^ ew else 0) + e) * 2 ^ mw) mod 2 ^ mw)%Z = mnow apply Zmod_small.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(m mod 2 ^ mw)%Z = mmw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) / 2 ^ mw) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + m / 2 ^ mw) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e + 0) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(((if s then 2 ^ ew else 0) + e) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((2 ^ ew + e) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((0 + e) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((2 ^ ew + e) mod 2 ^ ew)%Z = emw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((e + 1 * 2 ^ ew) mod 2 ^ ew)%Z = enow apply Zmod_small.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z(e mod 2 ^ ew)%Z = enow apply Zmod_small. Qed. Hypothesis Hmw : (0 < mw)%Z. Hypothesis Hew : (0 < ew)%Z. Let emax := Zpower 2 (ew - 1). Let prec := (mw + 1)%Z. Let emin := (3 - emax - prec)%Z. Let binary_float := binary_float prec emax.mw, ew:Zs:boolm, e:ZHm:(0 <= m < 2 ^ mw)%ZHe:(0 <= e < 2 ^ ew)%ZHmw:(0 <= mw)%ZHew:(0 <= ew)%Z((0 + e) mod 2 ^ ew)%Z = emw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:Set(0 < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:Set(0 < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:Set(0 < mw + 1)%Znow apply Zlt_le_weak. Qed.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:Set(0 <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%Z(0 < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%Z(0 < 2 ^ mw)%Znow apply Zlt_le_weak. Qed.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%Z(0 <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%Z(0 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%Z(0 < 2 ^ ew)%Znow apply Zlt_le_weak. Qed. Hypothesis Hmax : (prec < emax)%Z.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%Z(0 <= ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> let '(s, m, e) := split_bits x in join_bits s m e = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> let '(s, m, e) := split_bits x in join_bits s m e = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zlet '(s, m, e) := split_bits x in join_bits s m e = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(Z.shiftl ((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew) mw + x mod 2 ^ mw)%Z = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew) * 2 ^ mw + x mod 2 ^ mw)%Z = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew) * 2 ^ mw + x mod 2 ^ mw)%Z = (2 ^ mw * (x / 2 ^ mw) + x mod 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew) * 2 ^ mw)%Z = (2 ^ mw * (x / 2 ^ mw))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw * ((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew))%Z = (2 ^ mw * (x / 2 ^ mw))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew)%Z = (x / 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z((if 2 ^ mw * 2 ^ ew <=? x then 2 ^ ew else 0) + (x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew * (x / 2 ^ mw / 2 ^ ew) + (x / 2 ^ mw) mod 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then (2 ^ ew)%Z else 0%Z) = (2 ^ ew * (x / 2 ^ mw / 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then (2 ^ ew)%Z else 0%Z) = (2 ^ ew * (if 2 ^ mw * 2 ^ ew <=? x then 1 else 0))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z) = (x / 2 ^ mw / 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z = (2 ^ ew * 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z0%Z = (2 ^ ew * 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z) = (x / 2 ^ mw / 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z0%Z = (2 ^ ew * 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z) = (x / 2 ^ mw / 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z) = (x / 2 ^ mw / 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z) = (x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(x / (2 ^ mw * 2 ^ ew))%Z = (if (2 ^ mw * 2 ^ ew <=? x)%Z then 1%Z else 0%Z)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 1%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x / (2 ^ mw * 2 ^ ew) <= 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x / (2 ^ mw * 2 ^ ew) < 2)%Z -> (x / (2 ^ mw * 2 ^ ew) <= 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x / (2 ^ mw * 2 ^ ew) < 2)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x / (2 ^ mw * 2 ^ ew) < 2)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(0 < 2 ^ mw * 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x < 2 * (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x < 2 * (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x < 2 * 2 ^ (mw + ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x < 2 ^ 1 * 2 ^ (mw + ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(x < 2 ^ (1 + (mw + ew)))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(mw + ew >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(mw + ew >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(mw + ew >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(0 <= mw + ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 <= x / (2 ^ mw * 2 ^ ew))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(0 < 2 ^ mw * 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 * (2 ^ mw * 2 ^ ew) <= x)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(2 ^ mw * 2 ^ ew <= x)%Z(1 * (2 ^ mw * 2 ^ ew) <= x)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(x / (2 ^ mw * 2 ^ ew))%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHs:(x < 2 ^ mw * 2 ^ ew)%Z(0 <= x < 2 ^ mw * 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(0 <= 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ ew)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Znow apply Zgt_not_eq. Qed.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(2 ^ mw)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x y : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> (0 <= y < 2 ^ (mw + ew + 1))%Z -> split_bits x = split_bits y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x y : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> (0 <= y < 2 ^ (mw + ew + 1))%Z -> split_bits x = split_bits y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsplit_bits x = split_bits y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Z(let '(s, m, e) := split_bits x in join_bits s m e = x) -> (let '(s, m, e) := split_bits y in join_bits s m e = y) -> split_bits x = split_bits y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zjoin_bits sx mx ex = x -> (let '(s, m, e) := split_bits y in join_bits s m e = y) -> (sx, mx, ex) = split_bits y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zsy:boolmy, ey:Zjoin_bits sx mx ex = x -> join_bits sy my ey = y -> (sx, mx, ex) = (sy, my, ey) -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zsy:boolmy, ey:ZJx:join_bits sx mx ex = xJy:join_bits sy my ey = yH:(sx, mx, ex) = (sy, my, ey)x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zsy:boolmy, ey:ZH:(sx, mx, ex) = (sy, my, ey)join_bits sx mx ex = x -> join_bits sy my ey = y -> x = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zsy:boolmy, ey:Zjoin_bits sy my ey = x -> join_bits sy my ey = y -> x = ynow rewrite <- Jx. Qed. Definition bits_of_binary_float (x : binary_float) := match x with | B754_zero sx => join_bits sx 0 0 | B754_infinity sx => join_bits sx 0 (Zpower 2 ew - 1) | B754_nan sx plx _ => join_bits sx (Zpos plx) (Zpower 2 ew - 1) | B754_finite sx mx ex _ => let m := (Zpos mx - Zpower 2 mw)%Z in if Zle_bool 0 m then join_bits sx m (ex - emin + 1) else join_bits sx (Zpos mx) 0 end. Definition split_bits_of_binary_float (x : binary_float) := match x with | B754_zero sx => (sx, 0, 0)%Z | B754_infinity sx => (sx, 0, Zpower 2 ew - 1)%Z | B754_nan sx plx _ => (sx, Zpos plx, Zpower 2 ew - 1)%Z | B754_finite sx mx ex _ => let m := (Zpos mx - Zpower 2 mw)%Z in if Zle_bool 0 m then (sx, m, ex - emin + 1)%Z else (sx, Zpos mx, 0)%Z end.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx, y:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZHy:(0 <= y < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Zsy:boolmy, ey:ZJx:join_bits sy my ey = xJy:join_bits sy my ey = yx = ymw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, split_bits (bits_of_binary_float x) = split_bits_of_binary_float xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, split_bits (bits_of_binary_float x) = split_bits_of_binary_float xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = truesplit_bits (bits_of_binary_float (B754_nan sx plx Hplx)) = split_bits_of_binary_float (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = truesplit_bits (join_bits sx (Z.pos plx) (2 ^ ew - 1)) = (sx, Z.pos plx, (2 ^ ew - 1)%Z)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.pos (SpecFloatCopy.digits2_pos plx) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(Z.pos plx < ?m)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(?m <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(2 ^ Z.of_nat (S (digits2_Pnat plx)) <= 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(radix2 ^ Z.of_nat (S (digits2_Pnat plx)) <= radix2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = trueH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) < prec)%ZH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - (mw + 1))%Z:Zbinary_float:=Binary.binary_float (mw + 1) emax:SetHprec:(0 < mw + 1)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(mw + 1 < emax)%Zsx:boolplx:positiveHplx:(Z.of_nat (S (digits2_Pnat plx)) < mw + 1)%ZH:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%ZH0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = truesplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = true(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':canonical_mantissa prec emax mx ex = true(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Z.pos (SpecFloatCopy.digits2_pos mx) + ex)) ex = true(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = true(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = trueFLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> (emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = trueZ.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = trueZ.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (3 - emax - prec <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Zsplit_bits (if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) = (if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z))(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= Z.pos mx - 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx < 2 * 2 ^ mw)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx < 2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx < 2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Z.pos mx < 2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(2 ^ prec)%Z = (2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(2 ^ prec)%Z = (2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(2 ^ prec)%Z = (2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(2 ^ (mw + 1))%Z = (2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(2 ^ (1 + mw))%Z = (2 * 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Z(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(0 <= ex - emin + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(emin <= ex)%Z -> (0 <= ex - emin + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%Z(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(ex - (3 - emax - prec) + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(ex - (3 - emax - prec) + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 ^ ew)%Z = (2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 ^ Z.succ (Z.pred ew))%Z = (2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 ^ (Z.pred ew + 1))%Z = (2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(2 ^ (1 + Z.pred ew))%Z = (2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(0 <= 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(0 <= Z.pred ew)%Znow apply Zlt_0_le_0_pred. Qed.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZHx:bounded prec emax mx ex = trueHf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%ZH:(2 ^ mw <= Z.pos mx)%ZHx':(ex <=? emax - prec)%Z = true(0 <= Z.pred ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, (0 <= bits_of_binary_float x < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, (0 <= bits_of_binary_float x < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, (0 <= match x with | B754_zero sx => join_bits sx 0 0 | B754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | B754_nan sx plx _ => join_bits sx (Z.pos plx) (2 ^ ew - 1) | B754_finite sx mx ex _ => if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= join_bits sx 0 0 < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= join_bits sx 0 (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:nan_pl prec pl = true(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZH:bounded prec emax mx ex = true(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zapply join_bits_range ; now split.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= join_bits sx 0 0 < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= join_bits sx 0 (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= 0 < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zclear -He_gt_0 ; omega.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:nan_pl prec pl = true(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= Z.pos pl < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= Z.pos pl)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(Z.pos pl < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(Z.pos pl < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(Zdigits radix2 (Z.pos pl) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(Zdigits radix2 (Z.pos pl) < Z.succ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zclear -He_gt_0 ; omega.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolpl:positivepl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z(0 <= 2 ^ ew - 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZH:bounded prec emax mx ex = true(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZH:(canonical_mantissa prec emax mx ex && (ex <=? emax - prec)%Z)%bool = true(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:canonical_mantissa prec emax mx ex = trueB:(ex <=? emax - prec)%Z = true(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:canonical_mantissa prec emax mx ex = trueB:(ex <= emax - prec)%Z(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Zeq_bool (Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec)) ex = trueB:(ex <= emax - prec)%Z(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%Z(0 <= (if 0 <=? Z.pos mx - 2 ^ mw then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(Z.pos mx - 2 ^ mw < 0)%Z(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= Z.pos mx - 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ (mw + 1))%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ mw * 2 ^ 1)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ mw * 2)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Z.pos mx < 2 ^ prec)%Zclear -A ; zify ; omega.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(Zdigits radix2 (Z.pos mx) <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(0 <= ex - emin + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1 < 2 ^ (ew - 1 + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1 < 2 ^ (ew - 1) * 2 ^ 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - 2 ^ (ew - 1) - prec)%Z:Zbinary_float:=Binary.binary_float prec (2 ^ (ew - 1)):SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < 2 ^ (ew - 1))%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - 2 ^ (ew - 1) - prec) = exB:(ex <= 2 ^ (ew - 1) - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - (3 - 2 ^ (ew - 1) - prec) + 1 < 2 ^ (ew - 1) * 2 ^ 1)%Zclear -B ; omega.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - 2 ^ (ew - 1) - prec)%Z:Zbinary_float:=Binary.binary_float prec (2 ^ (ew - 1)):SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < 2 ^ (ew - 1))%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - 2 ^ (ew - 1) - prec) = exB:(ex <= 2 ^ (ew - 1) - prec)%ZH:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - (3 - 2 ^ (ew - 1) - prec) + 1 < 2 ^ (ew - 1) * 2)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(Z.pos mx - 2 ^ mw < 0)%Z(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Zapply join_bits_range ; now split. Qed. Definition binary_float_of_bits_aux x := let '(sx, mx, ex) := split_bits x in if Zeq_bool ex 0 then match mx with | Z0 => F754_zero sx | Zpos px => F754_finite sx px emin | Zneg _ => F754_nan false xH (* dummy *) end else if Zeq_bool ex (Zpower 2 ew - 1) then match mx with | Z0 => F754_infinity sx | Zpos plx => F754_nan sx plx | Zneg _ => F754_nan false xH (* dummy *) end else match (mx + Zpower 2 mw)%Z with | Zpos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false xH (* dummy *) end.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZA:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = exB:(ex <= emax - prec)%ZH:(Z.pos mx < 2 ^ mw)%Z(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, valid_binary prec emax (binary_float_of_bits_aux x) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, valid_binary prec emax (binary_float_of_bits_aux x) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Zvalid_binary prec emax (binary_float_of_bits_aux x) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Znan_pl prec 1 = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = truevalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Z(Z.pos (SpecFloatCopy.digits2_pos 1) < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = truevalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Z(1 < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = truevalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:Z(1 < mw + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = truevalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = truevalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) 0 then match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zvalid_binary prec emax match (x mod 2 ^ mw)%Z with | 0%Z => F754_zero (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin | Z.neg _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = true(* subnormal *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zforall p : positive, (x mod 2 ^ mw)%Z = Z.pos p -> valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z p emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos px(Zdigits radix2 (Z.pos px) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos px(Z.abs (Z.pos px) < radix2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos px(Z.pos px < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos px(2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zcanonical radix2 (FLT_exp (3 - emax - prec) prec) {| Fnum := Z.pos px; Fexp := emin |}mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZFexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp (3 - emax - prec) prec (mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZFexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZFexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (Zdigits radix2 (Z.pos px) + emin)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZZ.pos px <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZFexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (Zdigits radix2 (Z.pos px) + emin)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Zemin = Z.max (Zdigits radix2 (Z.pos px) + emin - prec) eminmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZZ.max (Zdigits radix2 (Z.pos px) + emin - prec) emin = eminmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(Zdigits radix2 (Z.pos px) + emin - prec <= emin)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:ZHprec:(0 < prec)%Zpx:positiveH:(Zdigits radix2 (Z.pos px) <= mw)%Z(Zdigits radix2 (Z.pos px) + emin - prec <= emin)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%Z~ (bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%RFalsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(mag radix2 (bpow radix2 emax) <= mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(emax + 1 <= mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(emax + 1 <= Zdigits radix2 (Z.pos px) + emin)%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%RZ.pos px <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(emax + 1 <= Zdigits radix2 (Z.pos px) + emin)%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(emax + 1 <= Zdigits radix2 (Z.pos px) + (3 - emax - (mw + 1)))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(Zdigits radix2 (Z.pos px) + (3 - emax - (mw + 1)) < emax + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < emax)%Z -> (Zdigits radix2 (Z.pos px) + (3 - emax - (mw + 1)) < emax + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 <= ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Zpx:positiveHm:(x mod 2 ^ mw)%Z = Z.pos pxH:(Zdigits radix2 (Z.pos px) <= mw)%ZH0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zvalid_binary prec emax (if Zeq_bool ((x / 2 ^ mw) mod 2 ^ ew) (2 ^ ew - 1) then match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end else match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw)%Z with | 0%Z => F754_infinity (2 ^ mw * 2 ^ ew <=? x)%Z | Z.pos plx => F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx | Z.neg _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = true(* nan *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zforall p : positive, (x mod 2 ^ mw)%Z = Z.pos p -> valid_binary prec emax (F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z p) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plxvalid_binary prec emax (F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(Z.pos (SpecFloatCopy.digits2_pos plx) < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(Zdigits radix2 (Z.pos plx) < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plxH:forall a b : Z, (a <= b)%Z -> (a < b + 1)%Z(Zdigits radix2 (Z.pos plx) < prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plxH:forall a b : Z, (a <= b)%Z -> (a < b + 1)%Z(Zdigits radix2 (Z.pos plx) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(Zdigits radix2 (Z.pos plx) <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(Z.abs (Z.pos plx) < radix2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(Z.pos plx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(x mod 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(radix2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Zplx:positiveEqplx:(x mod 2 ^ mw)%Z = Z.pos plx(0 <= mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zvalid_binary prec emax match (x mod 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) | _ => F754_nan false 1 end = true(* normal *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zforall p : positive, (x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos p -> valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z p ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxvalid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = true(* . *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxprec = Zdigits radix2 (Z.pos px)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxprec = mag radix2 (IZR (Z.pos px))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxZ.pos px <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxprec = mag radix2 (IZR (Z.pos px))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxmag radix2 (IZR (Z.pos px)) = precmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(bpow radix2 (prec - 1) <= Rabs (IZR (Z.pos px)) < bpow radix2 prec)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(bpow radix2 (prec - 1) <= IZR (Z.abs (Z.pos px)) < bpow radix2 prec)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(bpow radix2 (prec - 1) <= IZR (Z.pos px) < bpow radix2 prec)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(bpow radix2 mw <= IZR (Z.pos px) < bpow radix2 prec)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (radix2 ^ mw) <= IZR (Z.pos px) < bpow radix2 prec)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (radix2 ^ mw) <= IZR (Z.pos px) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(0 <= prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (radix2 ^ mw) <= IZR (Z.pos px) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (radix2 ^ mw) <= IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (radix2 ^ mw) <= IZR (x mod 2 ^ mw + 2 ^ mw))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(radix2 ^ mw <= x mod 2 ^ mw + 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(0 + 2 ^ mw <= x mod 2 ^ mw + 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(0 <= x mod 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ (mw + 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(mw >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw + radix2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(x mod 2 ^ mw < radix2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px(radix2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = true(* . *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px ((x / 2 ^ mw) mod 2 ^ ew + emin - 1)) = truemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)canonical radix2 (FLT_exp (3 - emax - prec) prec) {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |}mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)Fexp {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} = FLT_exp (3 - emax - prec) prec (mag radix2 (F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |}))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)Fexp {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} = FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos px) + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)Z.pos px <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)Fexp {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} = FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos px) + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1))mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)((x / 2 ^ mw) mod 2 ^ ew + emin - 1)%Z = Z.max (Zdigits radix2 (Z.pos px) + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) - prec) (3 - emax - prec)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)((x / 2 ^ mw) mod 2 ^ ew + emin - 1)%Z = Z.max (prec + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) - prec) (3 - emax - prec)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex + emin - 1)%Z = Z.max (prec + (ex + emin - 1) - prec) (3 - emax - prec)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex + emin - 1)%Z = Z.max (ex + emin - 1) (3 - emax - prec)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:ZZ.max (ex + emin - 1) (3 - emax - prec) = (ex + emin - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex + emin - 1 >= 3 - emax - prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z -> (ex + emin - 1 >= 3 - emax - prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Zex <> 0%Z -> (ex + emin - 1 >= 3 - emax - prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ex)%Z -> ex <> 0%Z -> (ex + emin - 1 >= 3 - emax - prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ex)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ex)%Z -> ex <> 0%Z -> (ex + (3 - emax - prec) - 1 >= 3 - emax - prec)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ex)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ex)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 ^ ew > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)~ (bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%RFalsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(mag radix2 (bpow radix2 emax) <= mag radix2 (F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |}))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(emax + 1 <= mag radix2 (F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |}))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(emax + 1 <= Zdigits radix2 (Z.pos px) + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%RZ.pos px <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(emax + 1 <= Zdigits radix2 (Z.pos px) + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(emax + 1 <= prec + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1))%Z -> Falsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(prec + ((x / 2 ^ mw) mod 2 ^ ew + emin - 1) < emax + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(prec + ((x / 2 ^ mw) mod 2 ^ ew + (3 - emax - prec) - 1) < emax + 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(prec + ((x / 2 ^ mw) mod 2 ^ ew + (3 - emax - prec) - 1) + (emax - 1) < emax + 1 + (emax - 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R((x / 2 ^ mw) mod 2 ^ ew + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z -> ((x / 2 ^ mw) mod 2 ^ ew + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Zex <> (2 ^ ew - 1)%Z -> (ex + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Z -> ex <> (2 ^ ew - 1)%Z -> (ex + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 * emax)%Z -> ex <> (2 * emax - 1)%Z -> (ex + 1 < 2 * emax)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 * emax)%Z = (2 ^ (1 + (ew - 1)))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 * emax)%Z = (2 ^ 1 * 2 ^ (ew - 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(ex < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(2 ^ ew > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%Rex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z(0 <= ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rapply bpow_gt_0. Qed. Definition binary_float_of_bits x := FF2B prec emax _ (binary_float_of_bits_aux_correct x).mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHnan:nan_pl prec 1 = trueHe1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%ZHe2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Zpx:positiveHm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos pxH:prec = Zdigits radix2 (Z.pos px)H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R(0 < bpow radix2 emax)%Rmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, binary_float_of_bits (bits_of_binary_float x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : binary_float, binary_float_of_bits (bits_of_binary_float x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_floatbinary_float_of_bits (bits_of_binary_float x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_floatB2FF prec emax (binary_float_of_bits (bits_of_binary_float x)) = B2FF prec emax xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_floatB2FF prec emax (FF2B prec emax (binary_float_of_bits_aux (bits_of_binary_float x)) (binary_float_of_bits_aux_correct (bits_of_binary_float x))) = B2FF prec emax xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_floatbinary_float_of_bits_aux (bits_of_binary_float x) = B2FF prec emax xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_float(let '(sx, mx, ex) := split_bits (bits_of_binary_float x) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:binary_float(let '(sx, mx, ex) := split_bits_of_binary_float x in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_zero sx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_zero sx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_infinity sx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_infinity sx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_infinity sx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_infinity sx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(if Zeq_bool (2 ^ ew - 1) 0 then F754_zero sx else if Zeq_bool (2 ^ ew - 1) (2 ^ ew - 1) then F754_infinity sx else match (2 ^ mw)%Z with | Z.pos px => F754_finite sx px (2 ^ ew - 1 + emin - 1) | _ => F754_nan false 1 end) = F754_infinity sxmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(if Zeq_bool (2 ^ ew - 1) (2 ^ ew - 1) then F754_infinity sx else match (2 ^ mw)%Z with | Z.pos px => F754_finite sx px (2 ^ ew - 1 + emin - 1) | _ => F754_nan false 1 end) = F754_infinity sxmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(1 < 2 ^ ew)%Z -> (2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:bool(1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(let '(sx0, mx, ex) := split_bits_of_binary_float (B754_nan sx plx Hplx) in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx0 | Z.pos plx0 => F754_nan sx0 plx0 | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_nan sx plx Hplx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(if Zeq_bool (2 ^ ew - 1) 0 then F754_finite sx plx emin else if Zeq_bool (2 ^ ew - 1) (2 ^ ew - 1) then F754_nan sx plx else match match (2 ^ mw)%Z with | 0%Z => Z.pos plx | Z.pos y' => Z.pos (plx + y') | Z.neg y' => Z.pos_sub plx y' end with | Z.pos px => F754_finite sx px (2 ^ ew - 1 + emin - 1) | _ => F754_nan false 1 end) = F754_nan sx plxmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(if Zeq_bool (2 ^ ew - 1) (2 ^ ew - 1) then F754_nan sx plx else match match (2 ^ mw)%Z with | 0%Z => Z.pos plx | Z.pos y' => Z.pos (plx + y') | Z.neg y' => Z.pos_sub plx y' end with | Z.pos px => F754_finite sx px (2 ^ ew - 1 + emin - 1) | _ => F754_nan false 1 end) = F754_nan sx plxmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(1 < 2 ^ ew)%Z -> (2 ^ ew - 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolplx:positiveHplx:nan_pl prec plx = true(1 < 2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)(* *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := split_bits_of_binary_float (B754_finite sx mx ex Bx) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = true(let '(sx0, mx0, ex0) := if (0 <=? Z.pos mx - 2 ^ mw)%Z then (sx, (Z.pos mx - 2 ^ mw)%Z, (ex - emin + 1)%Z) else (sx, Z.pos mx, 0%Z) in if Zeq_bool ex0 0 then match mx0 with | 0%Z => F754_zero sx0 | Z.pos px => F754_finite sx0 px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex0 (2 ^ ew - 1) then match mx0 with | 0%Z => F754_infinity sx0 | Z.pos plx => F754_nan sx0 plx | Z.neg _ => F754_nan false 1 end else match (mx0 + 2 ^ mw)%Z with | Z.pos px => F754_finite sx0 px (ex0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)(* . *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(if Zeq_bool (ex - emin + 1) 0 then match (Z.pos mx - 2 ^ mw)%Z with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool (ex - emin + 1) (2 ^ ew - 1) then match (Z.pos mx - 2 ^ mw)%Z with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (Z.pos mx - 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex - emin + 1 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(if Zeq_bool (ex - emin + 1) (2 ^ ew - 1) then match (Z.pos mx - 2 ^ mw)%Z with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (Z.pos mx - 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex - emin + 1 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Zmatch (Z.pos mx - 2 ^ mw + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex - emin + 1 + emin - 1) | _ => F754_nan false 1 end = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> (2 ^ ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> (2 ^ ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ex - emin + 1)%Z <> (2 ^ ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ex <= emax - prec)%Z -> (ex - emin + 1)%Z <> (2 ^ ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1)%Z <> (2 ^ ew - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1)%Z <> (2 * emax - 1)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ ew)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ (1 + (ew - 1)))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(2 * emax)%Z = (2 ^ 1 * 2 ^ (ew - 1))%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:(ex <=? emax - prec)%Z = true(ew - 1 >= 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%Z(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = true(ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueFLT_exp (3 - emax - prec) prec (Z.pos (SpecFloatCopy.digits2_pos mx) + ex) = ex -> (ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueFLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> (ex - emin + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueZ.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(0 <= Z.pos mx - 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueforall z : Z, Z.max (z + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zex:Zforall z : Z, Z.max (z + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)(* . *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z(if Zeq_bool 0 0 then F754_finite sx mx emin else if Zeq_bool 0 (2 ^ ew - 1) then F754_nan sx mx else match (Z.pos mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (0 + emin - 1) | _ => F754_nan false 1 end) = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZF754_finite sx mx emin = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Z0%Z = 0%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZF754_finite sx mx emin = B2FF prec emax (B754_finite sx mx ex Bx)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZF754_finite sx mx emin = F754_finite sx mx exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%Zemin = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZH1:canonical_mantissa prec emax mx ex = trueemin = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZH1:canonical_mantissa prec emax mx ex = trueFLT_exp (3 - emax - prec) prec (Z.pos (SpecFloatCopy.digits2_pos mx) + ex) = ex -> emin = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZH1:canonical_mantissa prec emax mx ex = trueFLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> emin = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx - 2 ^ mw < 0)%ZH1:canonical_mantissa prec emax mx ex = trueZ.max (Zdigits radix2 (Z.pos mx) + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx < 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueZ.max (Zdigits radix2 (Z.pos mx) + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx < 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = true(Zdigits radix2 (Z.pos mx) <= mw)%Z -> Z.max (Zdigits radix2 (Z.pos mx) + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zsx:boolmx:positiveex:ZBx:bounded prec emax mx ex = trueHm:(Z.pos mx < 2 ^ mw)%ZH1:canonical_mantissa prec emax mx ex = trueforall z : Z, (z <= mw)%Z -> Z.max (z + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = exintros ; zify ; omega. Qed.mw, ew:Zemax:=(2 ^ (ew - 1))%Z:Zex:Zforall z : Z, (z <= mw)%Z -> Z.max (z + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = exmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> bits_of_binary_float (binary_float_of_bits x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zforall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> bits_of_binary_float (binary_float_of_bits x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zbits_of_binary_float (binary_float_of_bits x) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zmatch FF2B prec emax (binary_float_of_bits_aux x) (binary_float_of_bits_aux_correct x) with | B754_zero sx => join_bits sx 0 0 | B754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | B754_nan sx plx _ => join_bits sx (Z.pos plx) (2 ^ ew - 1) | B754_finite sx mx ex _ => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZCx:=binary_float_of_bits_aux_correct x:valid_binary prec emax (binary_float_of_bits_aux x) = truematch FF2B prec emax (binary_float_of_bits_aux x) Cx with | B754_zero sx => join_bits sx 0 0 | B754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | B754_nan sx plx _ => join_bits sx (Z.pos plx) (2 ^ ew - 1) | B754_finite sx mx ex _ => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZCx:valid_binary prec emax (binary_float_of_bits_aux x) = truematch FF2B prec emax (binary_float_of_bits_aux x) Cx with | B754_zero sx => join_bits sx 0 0 | B754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | B754_nan sx plx _ => join_bits sx (Z.pos plx) (2 ^ ew - 1) | B754_finite sx mx ex _ => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%ZCx:valid_binary prec emax (binary_float_of_bits_aux x) = truematch binary_float_of_bits_aux x with | F754_zero sx => join_bits sx 0 0 | F754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx mx ex => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zvalid_binary prec emax (binary_float_of_bits_aux x) = true -> match binary_float_of_bits_aux x with | F754_zero sx => join_bits sx 0 0 | F754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx mx ex => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(let '(s, m, e) := split_bits x in join_bits s m e = x) -> valid_binary prec emax (binary_float_of_bits_aux x) = true -> match binary_float_of_bits_aux x with | F754_zero sx => join_bits sx 0 0 | F754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx mx ex => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Z(let '(s, m, e) := split_bits x in join_bits s m e = x) -> valid_binary prec emax (let '(sx, mx, ex) := split_bits x in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (let '(sx, mx, ex) := split_bits x in if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx => join_bits sx 0 0 | F754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx mx ex => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zforall (p : bool * Z) (z : Z), split_bits x = (p, z) -> (let '(s, m) := p in join_bits s m z = x) -> valid_binary prec emax (let '(sx, mx) := p in if Zeq_bool z 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool z (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (z + emin - 1) | _ => F754_nan false 1 end) = true -> match (let '(sx, mx) := p in if Zeq_bool z 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool z (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (z + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx => join_bits sx 0 0 | F754_infinity sx => join_bits sx 0 (2 ^ ew - 1) | F754_nan b p0 => join_bits b (Z.pos p0) (2 ^ ew - 1) | F754_finite sx mx ex => if (0 <=? Z.pos mx - 2 ^ mw)%Z then join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) else join_bits sx (Z.pos mx) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)join_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)(0 <= mx < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Z(0 <= x mod 2 ^ mw < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:Z(2 ^ mw > 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex 0 then match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end else if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = x(* subnormal *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end = true -> match match mx with | 0%Z => F754_zero sx | Z.pos px => F754_finite sx px emin | Z.neg _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zmx = 0%Z -> join_bits sx 0 ex = x -> valid_binary prec emax (F754_zero sx) = true -> join_bits sx 0 0 = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.pos p -> join_bits sx (Z.pos p) ex = x -> valid_binary prec emax (F754_finite sx p emin) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (emin - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%ZHm:mx = 0%ZJx:join_bits sx 0 ex = xjoin_bits sx 0 0 = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.pos p -> join_bits sx (Z.pos p) ex = x -> valid_binary prec emax (F754_finite sx p emin) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (emin - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.pos p -> join_bits sx (Z.pos p) ex = x -> valid_binary prec emax (F754_finite sx p emin) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (emin - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.pos pxJx:join_bits sx (Z.pos px) ex = x(if (0 <=? Z.pos px - 2 ^ mw)%Z then join_bits sx (Z.pos px - 2 ^ mw) (emin - emin + 1) else join_bits sx (Z.pos px) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.pos pxJx:join_bits sx (Z.pos px) ex = xjoin_bits sx (Z.pos px) 0 = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.pos pxJx:join_bits sx (Z.pos px) ex = x(Z.pos px - 2 ^ mw < 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.pos pxJx:join_bits sx (Z.pos px) ex = x(Z.pos px - 2 ^ mw < 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.pos pxJx:join_bits sx (Z.pos px) ex = x(Z.pos px < 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zforall p : positive, mx = Z.neg p -> join_bits sx (Z.neg p) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.neg pxjoin_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.neg pxFalsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex = 0%Zpx:positiveHm:mx = Z.neg px(mx < 0)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) = true -> match (if Zeq_bool ex (2 ^ ew - 1) then match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end else match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end) with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = x(* infinity/nan *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end = true -> match match mx with | 0%Z => F754_infinity sx | Z.pos plx => F754_nan sx plx | Z.neg _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:mx = 0%Zjoin_bits sx 0 ex = x -> valid_binary prec emax (F754_infinity sx) = true -> join_bits sx 0 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positivemx = Z.pos Hm -> join_bits sx (Z.pos Hm) ex = x -> valid_binary prec emax (F754_nan sx Hm) = true -> join_bits sx (Z.pos Hm) (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positivemx = Z.neg Hm -> join_bits sx (Z.neg Hm) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positivemx = Z.pos Hm -> join_bits sx (Z.pos Hm) ex = x -> valid_binary prec emax (F754_nan sx Hm) = true -> join_bits sx (Z.pos Hm) (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positivemx = Z.neg Hm -> join_bits sx (Z.neg Hm) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positivemx = Z.neg Hm -> join_bits sx (Z.neg Hm) ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex = (2 ^ ew - 1)%ZHm:positiveH:mx = Z.neg HmH0:join_bits sx (Z.neg Hm) ex = xCx:valid_binary prec emax (F754_nan false 1) = truejoin_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = x(* normal *)mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zjoin_bits sx mx ex = x -> valid_binary prec emax match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end = true -> match match (mx + 2 ^ mw)%Z with | Z.pos px => F754_finite sx px (ex + emin - 1) | _ => F754_nan false 1 end with | F754_zero sx0 => join_bits sx0 0 0 | F754_infinity sx0 => join_bits sx0 0 (2 ^ ew - 1) | F754_nan b p => join_bits b (Z.pos p) (2 ^ ew - 1) | F754_finite sx0 mx0 ex0 => if (0 <=? Z.pos mx0 - 2 ^ mw)%Z then join_bits sx0 (Z.pos mx0 - 2 ^ mw) (ex0 - emin + 1) else join_bits sx0 (Z.pos mx0) 0 end = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Z(mx + 2 ^ mw)%Z = 0%Z -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.pos p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%ZHm:(mx + 2 ^ mw)%Z = 0%Zjoin_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.pos p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%ZHm:(mx + 2 ^ mw)%Z = 0%ZFalsemw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.pos p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.pos p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true -> (if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.pos pJx:join_bits sx mx ex = xCx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true(if (0 <=? Z.pos p - 2 ^ mw)%Z then join_bits sx (Z.pos p - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (Z.pos p) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.pos pJx:join_bits sx mx ex = xCx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true(if (0 <=? mx + 2 ^ mw - 2 ^ mw)%Z then join_bits sx (mx + 2 ^ mw - 2 ^ mw) (ex + emin - 1 - emin + 1) else join_bits sx (mx + 2 ^ mw) 0) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.pos pJx:join_bits sx mx ex = xCx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = truejoin_bits sx (mx + 2 ^ mw - 2 ^ mw) (ex + emin - 1 - emin + 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.pos pJx:join_bits sx mx ex = xCx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true(0 <= mx + 2 ^ mw - 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.pos pJx:join_bits sx mx ex = xCx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true(0 <= mx + 2 ^ mw - 2 ^ mw)%Zmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zforall p : positive, (mx + 2 ^ mw)%Z = Z.neg p -> join_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xmw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.neg pjoin_bits sx mx ex = x -> valid_binary prec emax (F754_nan false 1) = true -> join_bits false 1 (2 ^ ew - 1) = xclear -Bm Hm ; zify ; omega. Qed. End Binary_Bits.mw, ew:ZHmw:(0 < mw)%ZHew:(0 < ew)%Zemax:=(2 ^ (ew - 1))%Z:Zprec:=(mw + 1)%Z:Zemin:=(3 - emax - prec)%Z:Zbinary_float:=Binary.binary_float prec emax:SetHprec:(0 < prec)%ZHm_gt_0:(0 < 2 ^ mw)%ZHe_gt_0:(0 < 2 ^ ew)%ZHmax:(prec < emax)%Zx:ZHx:(0 <= x < 2 ^ (mw + ew + 1))%Zsx:boolmx, ex:ZSx:split_bits x = (sx, mx, ex)Bm:(0 <= mx < 2 ^ mw)%ZHe1:ex <> 0%ZHe2:ex <> (2 ^ ew - 1)%Zp:positiveHm:(mx + 2 ^ mw)%Z = Z.neg pFalse
Specialization for IEEE single precision operations
Section B32_Bits. Arguments B754_nan {prec} {emax}. Definition binary32 := binary_float 24 128.(0 < 24)%Zapply refl_equal. Qed.(0 < 24)%ZHprec:(0 < 24)%Z(24 < 128)%Zapply refl_equal. Qed.Hprec:(0 < 24)%Z(24 < 128)%ZHprec:(0 < 24)%ZHprec_emax:(24 < 128)%Z(3 <= 128)%ZHprec:(0 < 24)%ZHprec_emax:(24 < 128)%Z(3 <= 128)%Zdiscriminate H. Qed. Definition default_nan_pl32 : { nan : binary32 | is_nan 24 128 nan = true } := exist _ (@B754_nan 24 128 false (iter_nat xO 22 xH) (refl_equal true)) (refl_equal true). Definition unop_nan_pl32 (f : binary32) : { nan : binary32 | is_nan 24 128 nan = true } := match f as f with | B754_nan s pl Hpl => exist _ (B754_nan s pl Hpl) (refl_equal true) | _ => default_nan_pl32 end. Definition binop_nan_pl32 (f1 f2 : binary32) : { nan : binary32 | is_nan 24 128 nan = true } := match f1, f2 with | B754_nan s1 pl1 Hpl1, _ => exist _ (B754_nan s1 pl1 Hpl1) (refl_equal true) | _, B754_nan s2 pl2 Hpl2 => exist _ (B754_nan s2 pl2 Hpl2) (refl_equal true) | _, _ => default_nan_pl32 end. Definition ternop_nan_pl32 (f1 f2 f3 : binary32) : { nan : binary32 | is_nan 24 128 nan = true } := match f1, f2, f3 with | B754_nan s1 pl1 Hpl1, _, _ => exist _ (B754_nan s1 pl1 Hpl1) (refl_equal true) | _, B754_nan s2 pl2 Hpl2, _ => exist _ (B754_nan s2 pl2 Hpl2) (refl_equal true) | _, _, B754_nan s3 pl3 Hpl3 => exist _ (B754_nan s3 pl3 Hpl3) (refl_equal true) | _, _, _ => default_nan_pl32 end. Definition b32_erase : binary32 -> binary32 := erase 24 128. Definition b32_opp : binary32 -> binary32 := Bopp 24 128 unop_nan_pl32. Definition b32_abs : binary32 -> binary32 := Babs 24 128 unop_nan_pl32. Definition b32_pred : binary32 -> binary32 := Bpred _ _ Hprec Hprec_emax Hemax unop_nan_pl32. Definition b32_succ : binary32 -> binary32 := Bsucc _ _ Hprec Hprec_emax Hemax unop_nan_pl32. Definition b32_sqrt : mode -> binary32 -> binary32 := Bsqrt _ _ Hprec Hprec_emax unop_nan_pl32. Definition b32_plus : mode -> binary32 -> binary32 -> binary32 := Bplus _ _ Hprec Hprec_emax binop_nan_pl32. Definition b32_minus : mode -> binary32 -> binary32 -> binary32 := Bminus _ _ Hprec Hprec_emax binop_nan_pl32. Definition b32_mult : mode -> binary32 -> binary32 -> binary32 := Bmult _ _ Hprec Hprec_emax binop_nan_pl32. Definition b32_div : mode -> binary32 -> binary32 -> binary32 := Bdiv _ _ Hprec Hprec_emax binop_nan_pl32. Definition b32_fma : mode -> binary32 -> binary32 -> binary32 -> binary32 := Bfma _ _ Hprec Hprec_emax ternop_nan_pl32. Definition b32_compare : binary32 -> binary32 -> option comparison := Bcompare 24 128. Definition b32_of_bits : Z -> binary32 := binary_float_of_bits 23 8 (refl_equal _) (refl_equal _) (refl_equal _). Definition bits_of_b32 : binary32 -> Z := bits_of_binary_float 23 8. End B32_Bits.Hprec:(0 < 24)%ZHprec_emax:(24 < 128)%ZH:(3 ?= 128)%Z = GtFalse
Specialization for IEEE double precision operations
Section B64_Bits. Arguments B754_nan {prec} {emax}. Definition binary64 := binary_float 53 1024.(0 < 53)%Zapply refl_equal. Qed.(0 < 53)%ZHprec:(0 < 53)%Z(53 < 1024)%Zapply refl_equal. Qed.Hprec:(0 < 53)%Z(53 < 1024)%ZHprec:(0 < 53)%ZHprec_emax:(53 < 1024)%Z(3 <= 1024)%ZHprec:(0 < 53)%ZHprec_emax:(53 < 1024)%Z(3 <= 1024)%Zdiscriminate H. Qed. Definition default_nan_pl64 : { nan : binary64 | is_nan 53 1024 nan = true } := exist _ (@B754_nan 53 1024 false (iter_nat xO 51 xH) (refl_equal true)) (refl_equal true). Definition unop_nan_pl64 (f : binary64) : { nan : binary64 | is_nan 53 1024 nan = true } := match f as f with | B754_nan s pl Hpl => exist _ (B754_nan s pl Hpl) (refl_equal true) | _ => default_nan_pl64 end. Definition binop_nan_pl64 (f1 f2 : binary64) : { nan : binary64 | is_nan 53 1024 nan = true } := match f1, f2 with | B754_nan s1 pl1 Hpl1, _ => exist _ (B754_nan s1 pl1 Hpl1) (refl_equal true) | _, B754_nan s2 pl2 Hpl2 => exist _ (B754_nan s2 pl2 Hpl2) (refl_equal true) | _, _ => default_nan_pl64 end. Definition ternop_nan_pl64 (f1 f2 f3 : binary64) : { nan : binary64 | is_nan 53 1024 nan = true } := match f1, f2, f3 with | B754_nan s1 pl1 Hpl1, _, _ => exist _ (B754_nan s1 pl1 Hpl1) (refl_equal true) | _, B754_nan s2 pl2 Hpl2, _ => exist _ (B754_nan s2 pl2 Hpl2) (refl_equal true) | _, _, B754_nan s3 pl3 Hpl3 => exist _ (B754_nan s3 pl3 Hpl3) (refl_equal true) | _, _, _ => default_nan_pl64 end. Definition b64_erase : binary64 -> binary64 := erase 53 1024. Definition b64_opp : binary64 -> binary64 := Bopp 53 1024 unop_nan_pl64. Definition b64_abs : binary64 -> binary64 := Babs 53 1024 unop_nan_pl64. Definition b64_pred : binary64 -> binary64 := Bpred _ _ Hprec Hprec_emax Hemax unop_nan_pl64. Definition b64_succ : binary64 -> binary64 := Bsucc _ _ Hprec Hprec_emax Hemax unop_nan_pl64. Definition b64_sqrt : mode -> binary64 -> binary64 := Bsqrt _ _ Hprec Hprec_emax unop_nan_pl64. Definition b64_plus : mode -> binary64 -> binary64 -> binary64 := Bplus _ _ Hprec Hprec_emax binop_nan_pl64. Definition b64_minus : mode -> binary64 -> binary64 -> binary64 := Bminus _ _ Hprec Hprec_emax binop_nan_pl64. Definition b64_mult : mode -> binary64 -> binary64 -> binary64 := Bmult _ _ Hprec Hprec_emax binop_nan_pl64. Definition b64_div : mode -> binary64 -> binary64 -> binary64 := Bdiv _ _ Hprec Hprec_emax binop_nan_pl64. Definition b64_fma : mode -> binary64 -> binary64 -> binary64 -> binary64 := Bfma _ _ Hprec Hprec_emax ternop_nan_pl64. Definition b64_compare : binary64 -> binary64 -> option comparison := Bcompare 53 1024. Definition b64_of_bits : Z -> binary64 := binary_float_of_bits 52 11 (refl_equal _) (refl_equal _) (refl_equal _). Definition bits_of_b64 : binary64 -> Z := bits_of_binary_float 52 11. End B64_Bits.Hprec:(0 < 53)%ZHprec_emax:(53 < 1024)%ZH:(3 ?= 1024)%Z = GtFalse