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.

IEEE-754 encoding of binary floating-point data

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:Z

forall (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))%Z
mw, ew:Z

forall (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))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z

(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z

(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
mw':positive
Hm:(0 <= m < 2 ^ Z.neg mw')%Z
He:(0 <= e < 2 ^ ew)%Z

(0 <= Z.neg mw')%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z

(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z

(0 <= ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
ew':positive
He:(0 <= e < 2 ^ Z.neg ew')%Z
Hmw:(0 <= mw)%Z

(0 <= Z.neg ew')%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= join_bits s m e < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= Z.shiftl ((if s then 2 ^ ew else 0) + e) mw + m < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= ((if s then 2 ^ ew else 0) + e) * 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 * 2 ^ mw <= ((if s then 2 ^ ew else 0 * 2 ^ mw) + e) * 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= (if s then 2 ^ ew else 0 * 2 ^ mw) + e)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 2 ^ ew + e)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 0 * 2 ^ mw + e)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 0 * 2 ^ mw + e)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 2 ^ mw)%Z
clear -Hm ; omega.
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(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)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(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)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(m < 1 * 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (mw + ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e + 1) * 2 ^ mw <= 2 ^ (ew + 1) * 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ (ew + 1))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ ew * 2 ^ 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((if s then 2 ^ ew else 0) + e + 1 <= 2 ^ ew * 2)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= ew + 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= mw)%Z
easy. 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:Z

forall (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:Z

forall (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:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z

split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z

(0 <= mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
mw':positive
Hm:(0 <= m < 2 ^ Z.neg mw')%Z
He:(0 <= e < 2 ^ ew)%Z

(0 <= Z.neg mw')%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z

split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z

(0 <= ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
ew':positive
He:(0 <= e < 2 ^ Z.neg ew')%Z
Hmw:(0 <= mw)%Z

(0 <= Z.neg ew')%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

split_bits (join_bits s m e) = (s, m, e)
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(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:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(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:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <=? ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z = s
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) mod 2 ^ mw)%Z = m
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) / 2 ^ mw) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <=? ((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m)%Z = s
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <=? (2 ^ ew + e) * 2 ^ mw + m)%Z = true
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(2 ^ mw * 2 ^ ew <=? (0 + e) * 2 ^ mw + m)%Z = false
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <=? (2 ^ ew + e) * 2 ^ mw + m)%Z = true
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <= (2 ^ ew + e) * 2 ^ mw + m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= (2 ^ ew + e) * 2 ^ mw + m - 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= e * 2 ^ mw + m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= e * 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= e)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= m)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= m)%Z
apply Hm.
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 2 ^ ew <=? (0 + e) * 2 ^ mw + m)%Z = false
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((0 + e) * 2 ^ mw + m < 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * - e + ((0 + e) * 2 ^ mw + m) < 2 ^ mw * - e + 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(m * 1 < 2 ^ mw * - e + 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(m * 1 < 2 ^ mw * (- e + 2 ^ ew))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(m * 1 < 2 ^ mw * 1)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(2 ^ mw * 1 <= 2 ^ mw * (- e + 2 ^ ew))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(2 ^ mw * 1 <= 2 ^ mw * (- e + 2 ^ ew))%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(1 <= - e + 2 ^ ew)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(0 <= 2 ^ mw)%Z
clear -Hm ; omega.
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) mod 2 ^ mw)%Z = m
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((m + ((if s then 2 ^ ew else 0) + e) * 2 ^ mw) mod 2 ^ mw)%Z = m
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(m mod 2 ^ mw)%Z = m
now apply Zmod_small.
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((((if s then 2 ^ ew else 0) + e) * 2 ^ mw + m) / 2 ^ mw) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e + m / 2 ^ mw) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e + 0) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(((if s then 2 ^ ew else 0) + e) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((2 ^ ew + e) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z
((0 + e) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((2 ^ ew + e) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((e + 1 * 2 ^ ew) mod 2 ^ ew)%Z = e
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

(e mod 2 ^ ew)%Z = e
now apply Zmod_small.
mw, ew:Z
s:bool
m, e:Z
Hm:(0 <= m < 2 ^ mw)%Z
He:(0 <= e < 2 ^ ew)%Z
Hmw:(0 <= mw)%Z
Hew:(0 <= ew)%Z

((0 + e) mod 2 ^ ew)%Z = e
now 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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set

(0 < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set

(0 < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set

(0 < mw + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set

(0 <= mw)%Z
now apply Zlt_le_weak. Qed.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z

(0 < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z

(0 < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z

(0 <= mw)%Z
now apply Zlt_le_weak. Qed.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z

(0 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z

(0 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z

(0 <= ew)%Z
now apply Zlt_le_weak. Qed. Hypothesis Hmax : (prec < emax)%Z.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> let '(s, m, e) := split_bits x in join_bits s m e = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> let '(s, m, e) := split_bits x in join_bits s m e = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

let '(s, m, e) := split_bits x in join_bits s m e = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

(2 ^ ew)%Z = (2 ^ ew * 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
0%Z = (2 ^ ew * 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

0%Z = (2 ^ ew * 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x / (2 ^ mw * 2 ^ ew))%Z = 1%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x / (2 ^ mw * 2 ^ ew) <= 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x / (2 ^ mw * 2 ^ ew) < 2)%Z -> (x / (2 ^ mw * 2 ^ ew) <= 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(x / (2 ^ mw * 2 ^ ew) < 2)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x / (2 ^ mw * 2 ^ ew) < 2)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(0 < 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(x < 2 * (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x < 2 * (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x < 2 * 2 ^ (mw + ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x < 2 ^ 1 * 2 ^ (mw + ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(x < 2 ^ (1 + (mw + ew)))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(mw + ew >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(mw + ew >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(mw + ew >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(0 <= mw + ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(1 <= x / (2 ^ mw * 2 ^ ew))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(0 < 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z
(1 * (2 ^ mw * 2 ^ ew) <= x)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(2 ^ mw * 2 ^ ew <= x)%Z

(1 * (2 ^ mw * 2 ^ ew) <= x)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z
(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z

(x / (2 ^ mw * 2 ^ ew))%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hs:(x < 2 ^ mw * 2 ^ ew)%Z

(0 <= x < 2 ^ mw * 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

(0 <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

(0 <= 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

(2 ^ ew)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
(2 ^ mw)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

(2 ^ mw)%Z <> 0%Z
now apply Zgt_not_eq. Qed.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x y : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> (0 <= y < 2 ^ (mw + ew + 1))%Z -> split_bits x = split_bits y -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x y : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> (0 <= y < 2 ^ (mw + ew + 1))%Z -> split_bits x = split_bits y -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z

split_bits x = split_bits y -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(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 = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z

join_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 = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
sy:bool
my, ey:Z

join_bits sx mx ex = x -> join_bits sy my ey = y -> (sx, mx, ex) = (sy, my, ey) -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
sy:bool
my, ey:Z
Jx:join_bits sx mx ex = x
Jy:join_bits sy my ey = y
H:(sx, mx, ex) = (sy, my, ey)

x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
sy:bool
my, ey:Z
H:(sx, mx, ex) = (sy, my, ey)

join_bits sx mx ex = x -> join_bits sy my ey = y -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
sy:bool
my, ey:Z

join_bits sy my ey = x -> join_bits sy my ey = y -> x = y
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x, y:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Hy:(0 <= y < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
sy:bool
my, ey:Z
Jx:join_bits sy my ey = x
Jy:join_bits sy my ey = y

x = y
now 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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, split_bits (bits_of_binary_float x) = split_bits_of_binary_float x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, split_bits (bits_of_binary_float x) = split_bits_of_binary_float x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

split_bits (bits_of_binary_float (B754_nan sx plx Hplx)) = split_bits_of_binary_float (B754_nan sx plx Hplx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

split_bits (join_bits sx (Z.pos plx) (2 ^ ew - 1)) = (sx, Z.pos plx, (2 ^ ew - 1)%Z)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.pos (SpecFloatCopy.digits2_pos plx) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < Zpower_nat 2 (S (digits2_Pnat plx)))%Z

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(Z.pos plx < ?m)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z
(?m <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(2 ^ Z.of_nat (S (digits2_Pnat plx)) <= 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(radix2 ^ Z.of_nat (S (digits2_Pnat plx)) <= radix2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) <? prec)%Z = true
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) < prec)%Z
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - (mw + 1))%Z:Z
binary_float:=Binary.binary_float (mw + 1) emax:Set
Hprec:(0 < mw + 1)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(mw + 1 < emax)%Z
sx:bool
plx:positive
Hplx:(Z.of_nat (S (digits2_Pnat plx)) < mw + 1)%Z
H:(Zpower_nat 2 (digits2_Pnat plx) <= Z.pos plx)%Z
H0:(Z.pos plx < 2 ^ Z.of_nat (S (digits2_Pnat plx)))%Z

(Z.of_nat (S (digits2_Pnat plx)) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true

split_bits (bits_of_binary_float (B754_finite sx mx ex Hx)) = split_bits_of_binary_float (B754_finite sx mx ex Hx)
(* *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true

split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true

(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':canonical_mantissa prec emax mx ex = true

(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = true

FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> (emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = true

Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hx':Zeq_bool (FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex)) ex = true

Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (3 - emax - prec <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z

split_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
(* *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= Z.pos mx - 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(Z.pos mx < 2 * 2 ^ mw)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(Z.pos mx < 2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(Z.pos mx < 2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(2 ^ prec)%Z = (2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(Zdigits radix2 (Z.pos mx) <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(2 ^ prec)%Z = (2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(2 ^ prec)%Z = (2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(2 ^ (mw + 1))%Z = (2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(2 ^ (1 + mw))%Z = (2 * 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= ex - emin + 1 < 2 ^ ew)%Z
(* *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(0 <= ex - emin + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(emin <= ex)%Z -> (0 <= ex - emin + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z

(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(ex - (3 - emax - prec) + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(ex - (3 - emax - prec) + 1 < 2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true
(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1 < 2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true
(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(2 ^ ew)%Z = (2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(2 ^ Z.succ (Z.pred ew))%Z = (2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(2 ^ (Z.pred ew + 1))%Z = (2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(2 ^ (1 + Z.pred ew))%Z = (2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(0 <= 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true
(0 <= Z.pred ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Hx:bounded prec emax mx ex = true
Hf:(emin <= ex)%Z /\ (Zdigits radix2 (Z.pos mx) <= prec)%Z
H:(2 ^ mw <= Z.pos mx)%Z
Hx':(ex <=? emax - prec)%Z = true

(0 <= Z.pred ew)%Z
now apply Zlt_0_le_0_pred. Qed.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, (0 <= bits_of_binary_float x < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, (0 <= bits_of_binary_float x < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall 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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(0 <= join_bits sx 0 0 < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
(0 <= join_bits sx 0 (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:nan_pl prec pl = true
(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
H: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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(0 <= join_bits sx 0 0 < 2 ^ (mw + ew + 1))%Z
apply join_bits_range ; now split.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(0 <= join_bits sx 0 (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(0 <= 0 < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
clear -He_gt_0 ; omega.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:nan_pl prec pl = true

(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(0 <= join_bits sx (Z.pos pl) (2 ^ ew - 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(0 <= Z.pos pl < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(0 <= Z.pos pl)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(Z.pos pl < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(Z.pos pl < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(Zdigits radix2 (Z.pos pl) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(Zdigits radix2 (Z.pos pl) < Z.succ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z
(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
pl:positive
pl_range:(Z.pos (SpecFloatCopy.digits2_pos pl) < prec)%Z

(0 <= 2 ^ ew - 1 < 2 ^ ew)%Z
clear -He_gt_0 ; omega.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
H: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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
H:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:canonical_mantissa prec emax mx ex = true
B:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:canonical_mantissa prec emax mx ex = true
B:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Zeq_bool (Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec)) ex = true
B:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(Z.pos mx - 2 ^ mw < 0)%Z
(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= join_bits sx (Z.pos mx - 2 ^ mw) (ex - emin + 1) < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= Z.pos mx - 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx < 2 ^ prec)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx < 2 ^ (mw + 1))%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx < 2 ^ mw * 2 ^ 1)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx < 2 ^ mw * 2)%Z -> (Z.pos mx - 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Z.pos mx < 2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(Zdigits radix2 (Z.pos mx) <= prec)%Z
clear -A ; zify ; omega.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(0 <= ex - emin + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - emin + 1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - emin + 1 < 2 ^ (ew - 1 + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - emin + 1 < 2 ^ (ew - 1) * 2 ^ 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - 2 ^ (ew - 1) - prec)%Z:Z
binary_float:=Binary.binary_float prec (2 ^ (ew - 1)):Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < 2 ^ (ew - 1))%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - 2 ^ (ew - 1) - prec) = ex
B:(ex <= 2 ^ (ew - 1) - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - (3 - 2 ^ (ew - 1) - prec) + 1 < 2 ^ (ew - 1) * 2 ^ 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - 2 ^ (ew - 1) - prec)%Z:Z
binary_float:=Binary.binary_float prec (2 ^ (ew - 1)):Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < 2 ^ (ew - 1))%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - 2 ^ (ew - 1) - prec) = ex
B:(ex <= 2 ^ (ew - 1) - prec)%Z
H:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - (3 - 2 ^ (ew - 1) - prec) + 1 < 2 ^ (ew - 1) * 2)%Z
clear -B ; omega.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(Z.pos mx - 2 ^ mw < 0)%Z

(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
A:Z.max (Z.pos (SpecFloatCopy.digits2_pos mx) + ex - prec) (3 - emax - prec) = ex
B:(ex <= emax - prec)%Z
H:(Z.pos mx < 2 ^ mw)%Z

(0 <= join_bits sx (Z.pos mx) 0 < 2 ^ (mw + ew + 1))%Z
apply 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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, valid_binary prec emax (binary_float_of_bits_aux x) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, valid_binary prec emax (binary_float_of_bits_aux x) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

valid_binary prec emax (binary_float_of_bits_aux x) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

nan_pl prec 1 = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

(Z.pos (SpecFloatCopy.digits2_pos 1) < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

(1 < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z

(1 < mw + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true

valid_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) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z

valid_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 = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z

forall p : positive, (x mod 2 ^ mw)%Z = Z.pos p -> valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z p emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

(Zdigits radix2 (Z.pos px) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

(Z.abs (Z.pos px) < radix2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

(Z.pos px < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px

(2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

valid_binary prec emax (F754_finite (2 ^ mw * 2 ^ ew <=? x)%Z px emin) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

canonical radix2 (FLT_exp (3 - emax - prec) prec) {| Fnum := Z.pos px; Fexp := emin |}
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

Fexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp (3 - emax - prec) prec (mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

Fexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

Fexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (Zdigits radix2 (Z.pos px) + emin)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
Z.pos px <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

Fexp {| Fnum := Z.pos px; Fexp := emin |} = FLT_exp emin prec (Zdigits radix2 (Z.pos px) + emin)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

emin = Z.max (Zdigits radix2 (Z.pos px) + emin - prec) emin
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

Z.max (Zdigits radix2 (Z.pos px) + emin - prec) emin = emin
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

(Zdigits radix2 (Z.pos px) + emin - prec <= emin)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
Hprec:(0 < prec)%Z
px:positive
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

(Zdigits radix2 (Z.pos px) + emin - prec <= emin)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

(F2R {| Fnum := Z.pos px; Fexp := emin |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z

~ (bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(emax + 1 <= mag radix2 (F2R {| Fnum := Z.pos px; Fexp := emin |}))%Z -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(emax + 1 <= Zdigits radix2 (Z.pos px) + emin)%Z -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
Z.pos px <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(emax + 1 <= Zdigits radix2 (Z.pos px) + emin)%Z -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(emax + 1 <= Zdigits radix2 (Z.pos px) + (3 - emax - (mw + 1)))%Z -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(Zdigits radix2 (Z.pos px) + (3 - emax - (mw + 1)) < emax + 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(0 < emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(0 <= ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R
(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z = 0%Z
px:positive
Hm:(x mod 2 ^ mw)%Z = Z.pos px
H:(Zdigits radix2 (Z.pos px) <= mw)%Z
H0:(bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := emin |})%R

(0 < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z

valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z

valid_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 = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z

forall p : positive, (x mod 2 ^ mw)%Z = Z.pos p -> valid_binary prec emax (F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z p) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

valid_binary prec emax (F754_nan (2 ^ mw * 2 ^ ew <=? x)%Z plx) = true
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(Z.pos (SpecFloatCopy.digits2_pos plx) < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(Zdigits radix2 (Z.pos plx) < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx
H:forall a b : Z, (a <= b)%Z -> (a < b + 1)%Z

(Zdigits radix2 (Z.pos plx) < prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx
H:forall a b : Z, (a <= b)%Z -> (a < b + 1)%Z

(Zdigits radix2 (Z.pos plx) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(Zdigits radix2 (Z.pos plx) <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(Z.abs (Z.pos plx) < radix2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(Z.pos plx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(x mod 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(radix2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z = (2 ^ ew - 1)%Z
plx:positive
Eqplx:(x mod 2 ^ mw)%Z = Z.pos plx

(0 <= mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z

valid_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z

forall 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)) = true
(* normal *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = 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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

prec = Zdigits radix2 (Z.pos px)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

prec = mag radix2 (IZR (Z.pos px))
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
Z.pos px <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

prec = mag radix2 (IZR (Z.pos px))
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

mag radix2 (IZR (Z.pos px)) = prec
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(bpow radix2 (prec - 1) <= Rabs (IZR (Z.pos px)) < bpow radix2 prec)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(bpow radix2 (prec - 1) <= IZR (Z.abs (Z.pos px)) < bpow radix2 prec)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(bpow radix2 (prec - 1) <= IZR (Z.pos px) < bpow radix2 prec)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(bpow radix2 mw <= IZR (Z.pos px) < bpow radix2 prec)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (radix2 ^ mw) <= IZR (Z.pos px) < bpow radix2 prec)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (radix2 ^ mw) <= IZR (Z.pos px) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(0 <= prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (radix2 ^ mw) <= IZR (Z.pos px) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (radix2 ^ mw) <= IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (radix2 ^ mw) <= IZR (x mod 2 ^ mw + 2 ^ mw))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(radix2 ^ mw <= x mod 2 ^ mw + 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(0 + 2 ^ mw <= x mod 2 ^ mw + 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(0 <= x mod 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(IZR (x mod 2 ^ mw + 2 ^ mw) < IZR (radix2 ^ prec))%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ (mw + 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(mw >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw * radix2 ^ 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw + 2 ^ mw < radix2 ^ mw + radix2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(x mod 2 ^ mw < radix2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px

(radix2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
Z.pos px <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

Z.max (ex + emin - 1) (3 - emax - prec) = (ex + emin - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(ex + emin - 1 >= 3 - emax - prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

ex <> 0%Z -> (ex + emin - 1 >= 3 - emax - prec)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(0 <= ex)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(0 <= ex)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(0 <= ex)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(2 ^ ew > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(0 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(0 <= ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)
(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)

(F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |} < bpow radix2 emax)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H:prec = Zdigits radix2 (Z.pos px)

~ (bpow radix2 emax <= F2R {| Fnum := Z.pos px; Fexp := (x / 2 ^ mw) mod 2 ^ ew + emin - 1 |})%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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

False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
Z.pos px <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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 -> False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

ex <> (2 ^ ew - 1)%Z -> (ex + 1 < 2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(ex < 2 ^ ew)%Z -> ex <> (2 ^ ew - 1)%Z -> (ex + 1 < 2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(ex < 2 * emax)%Z -> ex <> (2 * emax - 1)%Z -> (ex + 1 < 2 * emax)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(2 * emax)%Z = (2 ^ (1 + (ew - 1)))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(2 * emax)%Z = (2 ^ 1 * 2 ^ (ew - 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z
(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(ex < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(2 ^ ew > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(0 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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
ex:=((x / 2 ^ mw) mod 2 ^ ew)%Z:Z

(0 <= ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hnan:nan_pl prec 1 = true
He1:((x / 2 ^ mw) mod 2 ^ ew)%Z <> 0%Z
He2:((x / 2 ^ mw) mod 2 ^ ew)%Z <> (2 ^ ew - 1)%Z
px:positive
Hm:(x mod 2 ^ mw + 2 ^ mw)%Z = Z.pos px
H: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)%R
apply bpow_gt_0. Qed. Definition binary_float_of_bits x := FF2B prec emax _ (binary_float_of_bits_aux_correct x).
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, binary_float_of_bits (bits_of_binary_float x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : binary_float, binary_float_of_bits (bits_of_binary_float x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:binary_float

binary_float_of_bits (bits_of_binary_float x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:binary_float

B2FF prec emax (binary_float_of_bits (bits_of_binary_float x)) = B2FF prec emax x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:binary_float

B2FF 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 x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:binary_float

binary_float_of_bits_aux (bits_of_binary_float x) = B2FF prec emax x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x: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 x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x: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 x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx: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 sx
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx: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 sx
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
(2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(1 < 2 ^ ew)%Z -> (2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
(1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool

(1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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 plx
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx: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 plx
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true
(2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

(2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

(1 < 2 ^ ew)%Z -> (2 ^ ew - 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true
(1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
plx:positive
Hplx:nan_pl prec plx = true

(1 < 2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx: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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z

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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> (2 ^ ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - emin + 1)%Z <> (2 ^ ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(ex - emin + 1)%Z <> (2 ^ ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(ex <= emax - prec)%Z -> (ex - emin + 1)%Z <> (2 ^ ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1)%Z <> (2 ^ ew - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(ex <= emax - prec)%Z -> (ex - (3 - emax - prec) + 1)%Z <> (2 * emax - 1)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true
(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(2 * emax)%Z = (2 ^ ew)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(2 * emax)%Z = (2 ^ (1 + (ew - 1)))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(2 * emax)%Z = (2 ^ 1 * 2 ^ (ew - 1))%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true
(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true
(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true
(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:(ex <=? emax - prec)%Z = true

(ew - 1 >= 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z

(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

(ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

FLT_exp (3 - emax - prec) prec (Z.pos (SpecFloatCopy.digits2_pos mx) + ex) = ex -> (ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> (ex - emin + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

Z.max (Zdigits radix2 (Z.pos mx) + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(0 <= Z.pos mx - 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

forall z : Z, Z.max (z + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
ex:Z

forall z : Z, Z.max (z + ex - prec) (3 - emax - prec) = ex -> (ex - (3 - emax - prec) + 1)%Z <> 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z

F754_finite sx mx emin = B2FF prec emax (B754_finite sx mx ex Bx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z
0%Z = 0%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z

F754_finite sx mx emin = B2FF prec emax (B754_finite sx mx ex Bx)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z

F754_finite sx mx emin = F754_finite sx mx ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z

emin = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z
H1:canonical_mantissa prec emax mx ex = true

emin = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z
H1:canonical_mantissa prec emax mx ex = true

FLT_exp (3 - emax - prec) prec (Z.pos (SpecFloatCopy.digits2_pos mx) + ex) = ex -> emin = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z
H1:canonical_mantissa prec emax mx ex = true

FLT_exp (3 - emax - prec) prec (Zdigits radix2 (Z.pos mx) + ex) = ex -> emin = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx - 2 ^ mw < 0)%Z
H1:canonical_mantissa prec emax mx ex = true

Z.max (Zdigits radix2 (Z.pos mx) + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx < 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

Z.max (Zdigits radix2 (Z.pos mx) + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx < 2 ^ mw)%Z
H1: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 = ex
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
sx:bool
mx:positive
ex:Z
Bx:bounded prec emax mx ex = true
Hm:(Z.pos mx < 2 ^ mw)%Z
H1:canonical_mantissa prec emax mx ex = true

forall z : Z, (z <= mw)%Z -> Z.max (z + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = ex
mw, ew:Z
emax:=(2 ^ (ew - 1))%Z:Z
ex:Z

forall z : Z, (z <= mw)%Z -> Z.max (z + ex - (mw + 1)) (3 - emax - (mw + 1)) = ex -> (3 - emax - (mw + 1))%Z = ex
intros ; zify ; omega. Qed.
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> bits_of_binary_float (binary_float_of_bits x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z

forall x : Z, (0 <= x < 2 ^ (mw + ew + 1))%Z -> bits_of_binary_float (binary_float_of_bits x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

bits_of_binary_float (binary_float_of_bits x) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

match 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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Cx:=binary_float_of_bits_aux_correct x:valid_binary prec emax (binary_float_of_bits_aux x) = true

match 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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Cx:valid_binary prec emax (binary_float_of_bits_aux x) = true

match 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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
Cx: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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z

forall (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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx: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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)

(0 <= mx < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z

(0 <= x mod 2 ^ mw < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z

(2 ^ mw > 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z

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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z

join_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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
(* subnormal *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z

mx = 0%Z -> join_bits sx 0 ex = x -> valid_binary prec emax (F754_zero sx) = true -> join_bits sx 0 0 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
Hm:mx = 0%Z
Jx:join_bits sx 0 ex = x

join_bits sx 0 0 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z

forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.pos px
Jx: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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.pos px
Jx:join_bits sx (Z.pos px) ex = x

join_bits sx (Z.pos px) 0 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.pos px
Jx:join_bits sx (Z.pos px) ex = x
(Z.pos px - 2 ^ mw < 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.pos px
Jx:join_bits sx (Z.pos px) ex = x

(Z.pos px - 2 ^ mw < 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.pos px
Jx:join_bits sx (Z.pos px) ex = x

(Z.pos px < 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z

forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.neg px

join_bits false 1 (2 ^ ew - 1) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.neg px

False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex = 0%Z
px:positive
Hm:mx = Z.neg px

(mx < 0)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z

join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z

join_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 = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
join_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
(* infinity/nan *)
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:mx = 0%Z

join_bits sx 0 ex = x -> valid_binary prec emax (F754_infinity sx) = true -> join_bits sx 0 (2 ^ ew - 1) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive
mx = 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive
mx = 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive

mx = 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive
mx = 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive

mx = 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex = (2 ^ ew - 1)%Z
Hm:positive
H:mx = Z.neg Hm
H0:join_bits sx (Z.neg Hm) ex = x
Cx:valid_binary prec emax (F754_nan false 1) = true

join_bits false 1 (2 ^ ew - 1) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
join_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
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z

join_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:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2: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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
Hm:(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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
Hm:(mx + 2 ^ mw)%Z = 0%Z

False
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z

forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.pos p
Jx:join_bits sx mx ex = x
Cx: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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.pos p
Jx:join_bits sx mx ex = x
Cx: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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.pos p
Jx:join_bits sx mx ex = x
Cx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true

join_bits sx (mx + 2 ^ mw - 2 ^ mw) (ex + emin - 1 - emin + 1) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.pos p
Jx:join_bits sx mx ex = x
Cx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true
(0 <= mx + 2 ^ mw - 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.pos p
Jx:join_bits sx mx ex = x
Cx:valid_binary prec emax (F754_finite sx p (ex + emin - 1)) = true

(0 <= mx + 2 ^ mw - 2 ^ mw)%Z
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z

forall 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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(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) = x
mw, ew:Z
Hmw:(0 < mw)%Z
Hew:(0 < ew)%Z
emax:=(2 ^ (ew - 1))%Z:Z
prec:=(mw + 1)%Z:Z
emin:=(3 - emax - prec)%Z:Z
binary_float:=Binary.binary_float prec emax:Set
Hprec:(0 < prec)%Z
Hm_gt_0:(0 < 2 ^ mw)%Z
He_gt_0:(0 < 2 ^ ew)%Z
Hmax:(prec < emax)%Z
x:Z
Hx:(0 <= x < 2 ^ (mw + ew + 1))%Z
sx:bool
mx, ex:Z
Sx:split_bits x = (sx, mx, ex)
Bm:(0 <= mx < 2 ^ mw)%Z
He1:ex <> 0%Z
He2:ex <> (2 ^ ew - 1)%Z
p:positive
Hm:(mx + 2 ^ mw)%Z = Z.neg p

False
clear -Bm Hm ; zify ; omega. Qed. End Binary_Bits.
Specialization for IEEE single precision operations
Section B32_Bits.

Arguments B754_nan {prec} {emax}.

Definition binary32 := binary_float 24 128.


(0 < 24)%Z

(0 < 24)%Z
apply refl_equal. Qed.
Hprec:(0 < 24)%Z

(24 < 128)%Z
Hprec:(0 < 24)%Z

(24 < 128)%Z
apply refl_equal. Qed.
Hprec:(0 < 24)%Z
Hprec_emax:(24 < 128)%Z

(3 <= 128)%Z
Hprec:(0 < 24)%Z
Hprec_emax:(24 < 128)%Z

(3 <= 128)%Z
Hprec:(0 < 24)%Z
Hprec_emax:(24 < 128)%Z
H:(3 ?= 128)%Z = Gt

False
discriminate 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.
Specialization for IEEE double precision operations
Section B64_Bits.

Arguments B754_nan {prec} {emax}.

Definition binary64 := binary_float 53 1024.


(0 < 53)%Z

(0 < 53)%Z
apply refl_equal. Qed.
Hprec:(0 < 53)%Z

(53 < 1024)%Z
Hprec:(0 < 53)%Z

(53 < 1024)%Z
apply refl_equal. Qed.
Hprec:(0 < 53)%Z
Hprec_emax:(53 < 1024)%Z

(3 <= 1024)%Z
Hprec:(0 < 53)%Z
Hprec_emax:(53 < 1024)%Z

(3 <= 1024)%Z
Hprec:(0 < 53)%Z
Hprec_emax:(53 < 1024)%Z
H:(3 ?= 1024)%Z = Gt

False
discriminate 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.