Sophie

Sophie

distrib > Mageia > 6 > armv5tl > media > core-release > by-pkgid > 3c7997fe0e8405f6d7b5563e63d17a78 > files > 72

coq-flocq-2.5.1-2.mga6.armv5tl.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="coqdoc.css" rel="stylesheet" type="text/css" />
<title>Flocq.Appli.Fappli_IEEE</title>
</head>

<body>

<div id="page">

<div id="header">
</div>

<div id="main">

<h1 class="libtitle">Library Flocq.Appli.Fappli_IEEE</h1>

<div class="code">
</div>

<div class="doc">
This file is part of the Flocq formalization of floating-point
arithmetic in Coq: http://flocq.gforge.inria.fr/

<div class="paragraph"> </div>

Copyright (C) 2010-2013 Sylvie Boldo
<br />
Copyright (C) 2010-2013 Guillaume Melquiond

<div class="paragraph"> </div>

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.

<div class="paragraph"> </div>

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.

<div class="paragraph"> </div>

<a name="lab24"></a><h1 class="section">IEEE-754 arithmetic</h1>

</div>
<div class="code">
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Core.Fcore.html#"><span class="id" title="library">Fcore</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Core.Fcore_digits.html#"><span class="id" title="library">Fcore_digits</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_digits.html#"><span class="id" title="library">Fcalc_digits</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_round.html#"><span class="id" title="library">Fcalc_round</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#"><span class="id" title="library">Fcalc_bracket</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_ops.html#"><span class="id" title="library">Fcalc_ops</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_div.html#"><span class="id" title="library">Fcalc_div</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Calc.Fcalc_sqrt.html#"><span class="id" title="library">Fcalc_sqrt</span></a>.<br/>
<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="Flocq.Prop.Fprop_relative.html#"><span class="id" title="library">Fprop_relative</span></a>.<br/>

<br/>
<span class="id" title="keyword">Section</span> <a name="AnyRadix"><span class="id" title="section">AnyRadix</span></a>.<br/>

<br/>
<span class="id" title="keyword">Inductive</span> <a name="full_float"><span class="id" title="inductive">full_float</span></a> :=<br/>
&nbsp;&nbsp;| <a name="F754_zero"><span class="id" title="constructor">F754_zero</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#full_float"><span class="id" title="inductive">full_float</span></a><br/>
&nbsp;&nbsp;| <a name="F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#full_float"><span class="id" title="inductive">full_float</span></a><br/>
&nbsp;&nbsp;| <a name="F754_nan"><span class="id" title="constructor">F754_nan</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#positive"><span class="id" title="inductive">positive</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#full_float"><span class="id" title="inductive">full_float</span></a><br/>
&nbsp;&nbsp;| <a name="F754_finite"><span class="id" title="constructor">F754_finite</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#positive"><span class="id" title="inductive">positive</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z"><span class="id" title="inductive">Z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#full_float"><span class="id" title="inductive">full_float</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="FF2R"><span class="id" title="definition">FF2R</span></a> <span class="id" title="keyword">beta</span> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> ⇒ <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <span class="id" title="keyword">beta</span> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <span class="id" title="var">s</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">m</span>)) <span class="id" title="var">e</span>)<br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#R0"><span class="id" title="axiom">R0</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">End</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#AnyRadix"><span class="id" title="section">AnyRadix</span></a>.<br/>

<br/>
<span class="id" title="keyword">Section</span> <a name="Binary"><span class="id" title="section">Binary</span></a>.<br/>

<br/>
<span class="id" title="keyword">Implicit Arguments</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> [[<span class="id" title="var">A</span>] [<span class="id" title="var">P</span>]].<br/>

<br/>
</div>

<div class="doc">
<span class="inlinecode"><a class="idref" href="Flocq.Appli.Fappli_double_round.html#Double_round.Double_round_div.Double_round_div_FTZ.prec"><span class="id" title="variable">prec</span></a></span> is the number of bits of the mantissa including the implicit one;
    <span class="inlinecode"><a class="idref" href="Flocq.Appli.Fappli_IEEE_bits.html#Binary_Bits.emax"><span class="id" title="variable">emax</span></a></span> is the exponent of the infinities.
    For instance, binary32 is defined by <span class="inlinecode"><a class="idref" href="Flocq.Appli.Fappli_double_round.html#Double_round.Double_round_div.Double_round_div_FTZ.prec"><span class="id" title="variable">prec</span></a></span> <span class="inlinecode">=</span> <span class="inlinecode">24</span> and <span class="inlinecode"><a class="idref" href="Flocq.Appli.Fappli_IEEE_bits.html#Binary_Bits.emax"><span class="id" title="variable">emax</span></a></span> <span class="inlinecode">=</span> <span class="inlinecode">128</span>. 
</div>
<div class="code">
<span class="id" title="keyword">Variable</span> <a name="Binary.prec"><span class="id" title="variable">prec</span></a> <a name="Binary.emax"><span class="id" title="variable">emax</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z"><span class="id" title="inductive">Z</span></a>.<br/>
<span class="id" title="keyword">Context</span> (<span class="id" title="var">prec_gt_0_</span> : <a class="idref" href="Flocq.Core.Fcore_FLX.html#Prec_gt_0"><span class="id" title="class">Prec_gt_0</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>).<br/>
<span class="id" title="keyword">Hypothesis</span> <a name="Binary.Hmax"><span class="id" title="variable">Hmax</span></a> : (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#273beba4f3453dbb29192b3ac740bb71"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>)%<span class="id" title="var">Z</span>.<br/>

<br/>
<span class="id" title="keyword">Let</span> <a name="Binary.emin"><span class="id" title="variable">emin</span></a> := (3 <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>)%<span class="id" title="var">Z</span>.<br/>
<span class="id" title="keyword">Let</span> <a name="Binary.fexp"><span class="id" title="variable">fexp</span></a> := <a class="idref" href="Flocq.Core.Fcore_FLT.html#FLT_exp"><span class="id" title="definition">FLT_exp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emin"><span class="id" title="variable">emin</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>.<br/>
<span class="id" title="keyword">Instance</span> <a name="fexp_correct"><span class="id" title="instance">fexp_correct</span></a> : <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#Valid_exp"><span class="id" title="class">Valid_exp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> := <a class="idref" href="Flocq.Core.Fcore_FLT.html#FLT_exp_valid"><span class="id" title="instance">FLT_exp_valid</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emin"><span class="id" title="variable">emin</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>.<br/>
<span class="id" title="keyword">Instance</span> <a name="fexp_monotone"><span class="id" title="instance">fexp_monotone</span></a> : <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#Monotone_exp"><span class="id" title="class">Monotone_exp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> := <a class="idref" href="Flocq.Core.Fcore_FLT.html#FLT_exp_monotone"><span class="id" title="instance">FLT_exp_monotone</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emin"><span class="id" title="variable">emin</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="canonic_mantissa"><span class="id" title="definition">canonic_mantissa</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e</span> :=<br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zbool.html#Zeq_bool"><span class="id" title="definition">Zeq_bool</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#digits2_pos"><span class="id" title="definition">digits2_pos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="bounded"><span class="id" title="definition">bounded</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e</span> :=<br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#andb"><span class="id" title="definition">andb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#canonic_mantissa"><span class="id" title="definition">canonic_mantissa</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zbool.html#Zle_bool"><span class="id" title="abbreviation">Zle_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>)).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="valid_binary"><span class="id" title="definition">valid_binary</span></a> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">pl</span> ⇒ (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#digits2_pos"><span class="id" title="definition">digits2_pos</span></a> <span class="id" title="var">pl</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#1d02295e7219d8d7ff1bcc27101aed05"><span class="id" title="notation">&lt;?</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>)%<span class="id" title="var">Z</span><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
</div>

<div class="doc">
Basic type used for representing binary FP numbers.
    Note that there is exactly one such object per FP datum. 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="nan_pl"><span class="id" title="definition">nan_pl</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">pl</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#digits2_pos"><span class="id" title="definition">digits2_pos</span></a> <span class="id" title="var">pl</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#1d02295e7219d8d7ff1bcc27101aed05"><span class="id" title="notation">&lt;?</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>)%<span class="id" title="var">Z</span>  <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a>.<br/>

<br/>
<span class="id" title="keyword">Inductive</span> <a name="binary_float"><span class="id" title="inductive">binary_float</span></a> :=<br/>
&nbsp;&nbsp;| <a name="B754_zero"><span class="id" title="constructor">B754_zero</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a><br/>
&nbsp;&nbsp;| <a name="B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a><br/>
&nbsp;&nbsp;| <a name="B754_nan"><span class="id" title="constructor">B754_nan</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#nan_pl"><span class="id" title="definition">nan_pl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a><br/>
&nbsp;&nbsp;| <a name="B754_finite"><span class="id" title="constructor">B754_finite</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">∀</span> (<span class="id" title="var">m</span> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#positive"><span class="id" title="inductive">positive</span></a>) (<span class="id" title="var">e</span> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z"><span class="id" title="inductive">Z</span></a>), <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">as</span> <span class="id" title="var">x</span> <span class="id" title="keyword">return</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">b</span> <span class="id" title="var">pl</span> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">H</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">b</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <span class="id" title="var">pl</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#H"><span class="id" title="variable">H</span></a>)<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="B2FF"><span class="id" title="definition">B2FF</span></a> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">s</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">s</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">b</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <span class="id" title="var">pl</span> <span class="id" title="var">_</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">b</span> <span class="id" title="var">pl</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="B2R"><span class="id" title="definition">B2R</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <span class="id" title="var">s</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">m</span>)) <span class="id" title="var">e</span>)<br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#R0"><span class="id" title="axiom">R0</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="FF2R_B2FF"><span class="id" title="lemma">FF2R_B2FF</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2FF_FF2B"><span class="id" title="lemma">B2FF_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Hx</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Hx"><span class="id" title="variable">Hx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="valid_binary_B2FF"><span class="id" title="lemma">valid_binary_B2FF</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="FF2B_B2FF"><span class="id" title="lemma">FF2B_B2FF</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">H</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#H"><span class="id" title="variable">H</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="FF2B_B2FF_valid"><span class="id" title="lemma">FF2B_B2FF_valid</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary_B2FF"><span class="id" title="lemma">valid_binary_B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2R_FF2B"><span class="id" title="lemma">B2R_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Hx</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Hx"><span class="id" title="variable">Hx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="match_FF2B"><span class="id" title="lemma">match_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> {<span class="id" title="var">T</span>} <span class="id" title="var">fz</span> <span class="id" title="var">fi</span> <span class="id" title="var">fn</span> <span class="id" title="var">ff</span> <span class="id" title="var">x</span> <span class="id" title="var">Hx</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Hx"><span class="id" title="variable">Hx</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#T"><span class="id" title="variable">T</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fz"><span class="id" title="variable">fz</span></a> <span class="id" title="var">sx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fi"><span class="id" title="variable">fi</span></a> <span class="id" title="var">sx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">b</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <span class="id" title="var">p</span> <span class="id" title="var">_</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fn"><span class="id" title="variable">fn</span></a> <span class="id" title="var">b</span> <span class="id" title="var">p</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ff"><span class="id" title="variable">ff</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fz"><span class="id" title="variable">fz</span></a> <span class="id" title="var">sx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fi"><span class="id" title="variable">fi</span></a> <span class="id" title="var">sx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">b</span> <span class="id" title="var">p</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#fn"><span class="id" title="variable">fn</span></a> <span class="id" title="var">b</span> <span class="id" title="var">p</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ff"><span class="id" title="variable">ff</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="canonic_canonic_mantissa"><span class="id" title="lemma">canonic_canonic_mantissa</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> (<span class="id" title="var">sx</span> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#canonic_mantissa"><span class="id" title="definition">canonic_mantissa</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#canonic"><span class="id" title="definition">canonic</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="generic_format_B2R"><span class="id" title="lemma">generic_format_B2R</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#generic_format"><span class="id" title="definition">generic_format</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="FLT_format_B2R"><span class="id" title="lemma">FLT_format_B2R</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_FLT.html#FLT_format"><span class="id" title="definition">FLT_format</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emin"><span class="id" title="variable">emin</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2FF_inj"><span class="id" title="lemma">B2FF_inj</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="is_finite_strict"><span class="id" title="definition">is_finite_strict</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2R_inj"><span class="id" title="lemma">B2R_inj</span></a>:<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_strict"><span class="id" title="definition">is_finite_strict</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_strict"><span class="id" title="definition">is_finite_strict</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bsign"><span class="id" title="definition">Bsign</span></a> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">s</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="sign_FF"><span class="id" title="definition">sign_FF</span></a> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">s</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">s</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">s</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">s</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bsign_FF2B"><span class="id" title="lemma">Bsign_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">H</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#H"><span class="id" title="variable">H</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="is_finite"><span class="id" title="definition">is_finite</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_finite_FF2B"><span class="id" title="lemma">is_finite_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Hx</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Hx"><span class="id" title="variable">Hx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_finite_FF_B2FF"><span class="id" title="lemma">is_finite_FF_B2FF</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2R_Bsign_inj"><span class="id" title="lemma">B2R_Bsign_inj</span></a>:<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>,<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="is_nan"><span class="id" title="definition">is_nan</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="is_nan_FF"><span class="id" title="definition">is_nan_FF</span></a> <span class="id" title="var">f</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_nan_FF2B"><span class="id" title="lemma">is_nan_FF2B</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Hx</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Hx"><span class="id" title="variable">Hx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan_FF"><span class="id" title="definition">is_nan_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_nan_FF_B2FF"><span class="id" title="lemma">is_nan_FF_B2FF</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan_FF"><span class="id" title="definition">is_nan_FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
</div>

<div class="doc">
Opposite 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bopp"><span class="id" title="definition">Bopp</span></a> <span class="id" title="var">opp_nan</span> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">plx</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">sres</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">plres</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">plx</span> <span class="id" title="keyword">in</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">sres</span> <span class="id" title="var">plres</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> <span class="id" title="var">sx</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> <span class="id" title="var">sx</span>) <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> <span class="id" title="var">sx</span>)<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bopp_involutive"><span class="id" title="lemma">Bopp_involutive</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">opp_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2R_Bopp"><span class="id" title="lemma">B2R_Bopp</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">opp_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0575b33c544988081e4e30ee15f09d84"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)%<span class="id" title="var">R</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_finite_Bopp"><span class="id" title="lemma">is_finite_Bopp</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">opp_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
</div>

<div class="doc">
Absolute value 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Babs"><span class="id" title="definition">Babs</span></a> <span class="id" title="var">abs_nan</span> (<span class="id" title="var">x</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>) : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">plx</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">sres</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">plres</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">plx</span> <span class="id" title="keyword">in</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">sres</span> <span class="id" title="var">plres</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2R_Babs"><span class="id" title="lemma">B2R_Babs</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">abs_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="is_finite_Babs"><span class="id" title="lemma">is_finite_Babs</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">abs_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bsign_Babs"><span class="id" title="lemma">Bsign_Babs</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">abs_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Babs_idempotent"><span class="id" title="lemma">Babs_idempotent</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">abs_nan</span> (<span class="id" title="var">x</span>: <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>),<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Babs_Bopp"><span class="id" title="lemma">Babs_Bopp</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">abs_nan</span> <span class="id" title="var">opp_nan</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#opp_nan"><span class="id" title="variable">opp_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Babs"><span class="id" title="definition">Babs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#abs_nan"><span class="id" title="variable">abs_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>.<br/>

<br/>
</div>

<div class="doc">
Comparison

<div class="paragraph"> </div>

<span class="inlinecode"><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a></span> <span class="inlinecode"><a class="idref" href="Flocq.Core.Fcore_Zaux.html#c"><span class="id" title="variable">c</span></a></span> means ordered as per <span class="inlinecode"><a class="idref" href="Flocq.Core.Fcore_Zaux.html#c"><span class="id" title="variable">c</span></a></span>; <span class="inlinecode"><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a></span> means unordered. 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bcompare"><span class="id" title="definition">Bcompare</span></a> (<span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_float"><span class="id" title="inductive">binary_float</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#comparison"><span class="id" title="inductive">comparison</span></a> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f1"><span class="id" title="variable">f1</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f2"><span class="id" title="variable">f2</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>,<span class="id" title="var">_</span> | <span class="id" title="var">_</span>,<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s1</span> <span class="id" title="var">m1</span> <span class="id" title="var">e1</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">s2</span> <span class="id" title="var">m2</span> <span class="id" title="var">e2</span> <span class="id" title="var">_</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <span class="id" title="var">s1</span>, <span class="id" title="var">s2</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Zcompare"><span class="id" title="abbreviation">Zcompare</span></a> <span class="id" title="var">e1</span> <span class="id" title="var">e2</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.PArith.BinPos.html#Pcompare"><span class="id" title="abbreviation">Pcompare</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a>)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Zcompare"><span class="id" title="abbreviation">Zcompare</span></a> <span class="id" title="var">e1</span> <span class="id" title="var">e2</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#CompOpp"><span class="id" title="definition">CompOpp</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.PArith.BinPos.html#Pcompare"><span class="id" title="abbreviation">Pcompare</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a>))<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bcompare_correct"><span class="id" title="lemma">Bcompare_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bcompare"><span class="id" title="definition">Bcompare</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f1"><span class="id" title="variable">f1</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f2"><span class="id" title="variable">f2</span></a>)).<br/>
&nbsp;&nbsp;<span class="id" title="keyword">Ltac</span> <span class="id" title="var">apply_Rcompare</span> :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <span class="id" title="keyword">goal</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| [ |- <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>) ] ⇒ <span class="id" title="tactic">f_equal</span>; <span class="id" title="tactic">symmetry</span>; <span class="id" title="tactic">apply</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare_Lt"><span class="id" title="lemma">Rcompare_Lt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| [ |- <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>) ] ⇒ <span class="id" title="tactic">f_equal</span>; <span class="id" title="tactic">symmetry</span>; <span class="id" title="tactic">apply</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare_Eq"><span class="id" title="lemma">Rcompare_Eq</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| [ |- <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>) ] ⇒ <span class="id" title="tactic">f_equal</span>; <span class="id" title="tactic">symmetry</span>; <span class="id" title="tactic">apply</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare_Gt"><span class="id" title="lemma">Rcompare_Gt</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bcompare_swap"><span class="id" title="lemma">Bcompare_swap</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bcompare"><span class="id" title="definition">Bcompare</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bcompare"><span class="id" title="definition">Bcompare</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">c</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#CompOpp"><span class="id" title="definition">CompOpp</span></a> <span class="id" title="var">c</span>) | <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a> <span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="bounded_lt_emax"><span class="id" title="lemma">bounded_lt_emax</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#1cc22ba6849531267d3b25ca7b262449"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>)%<span class="id" title="var">R</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="abs_B2R_lt_emax"><span class="id" title="lemma">abs_B2R_lt_emax</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;(<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#1cc22ba6849531267d3b25ca7b262449"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>)%<span class="id" title="var">R</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="bounded_canonic_lt_emax"><span class="id" title="lemma">bounded_canonic_lt_emax</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#canonic"><span class="id" title="definition">canonic</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#1cc22ba6849531267d3b25ca7b262449"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>)%<span class="id" title="var">R</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/>

<br/>
</div>

<div class="doc">
Truncation 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Record</span> <a name="shr_record"><span class="id" title="record">shr_record</span></a> := { <a name="shr_m"><span class="id" title="projection">shr_m</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z"><span class="id" title="inductive">Z</span></a> ; <a name="shr_r"><span class="id" title="projection">shr_r</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> ; <a name="shr_s"><span class="id" title="projection">shr_s</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> }.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="shr_1"><span class="id" title="definition">shr_1</span></a> <span class="id" title="var">mrs</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <span class="id" title="var">m</span> <span class="id" title="var">r</span> <span class="id" title="var">s</span>) := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">s</span> := <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#orb"><span class="id" title="definition">orb</span></a> <span class="id" title="var">r</span> <span class="id" title="var">s</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <span class="id" title="var">m</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xO"><span class="id" title="constructor">xO</span></a> <span class="id" title="var">p</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xI"><span class="id" title="constructor">xI</span></a> <span class="id" title="var">p</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xO"><span class="id" title="constructor">xO</span></a> <span class="id" title="var">p</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <span class="id" title="var">p</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xI"><span class="id" title="constructor">xI</span></a> <span class="id" title="var">p</span>) ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <span class="id" title="var">p</span>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> <span class="id" title="var">mrs</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <span class="id" title="var">m</span> <span class="id" title="var">l</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Build_shr_record"><span class="id" title="constructor">Build_shr_record</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="shr_m_shr_record_of_loc"><span class="id" title="lemma">shr_m_shr_record_of_loc</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">l</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="loc_of_shr_record_of_loc"><span class="id" title="lemma">loc_of_shr_record_of_loc</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">l</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="shr"><span class="id" title="definition">shr</span></a> <span class="id" title="var">mrs</span> <span class="id" title="var">e</span> <span class="id" title="var">n</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Core.Fcore_Zaux.html#iter_pos"><span class="id" title="definition">iter_pos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_1"><span class="id" title="definition">shr_1</span></a> <span class="id" title="var">p</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">Z</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Lemma</span> <a name="inbetween_shr_1"><span class="id" title="lemma">inbetween_shr_1</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">mrs</span> <span class="id" title="var">e</span>,<br/>
&nbsp;&nbsp;(0 <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a>)%<span class="id" title="var">Z</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Calc.Fcalc_bracket.html#inbetween_float"><span class="id" title="definition">inbetween_float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Calc.Fcalc_bracket.html#inbetween_float"><span class="id" title="definition">inbetween_float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_1"><span class="id" title="definition">shr_1</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a>)) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> 1) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_1"><span class="id" title="definition">shr_1</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mrs"><span class="id" title="variable">mrs</span></a>)).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="inbetween_shr"><span class="id" title="lemma">inbetween_shr</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">l</span> <span class="id" title="var">n</span>,<br/>
&nbsp;&nbsp;(0 <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>)%<span class="id" title="var">Z</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Calc.Fcalc_bracket.html#inbetween_float"><span class="id" title="definition">inbetween_float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mrs</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">e'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr"><span class="id" title="definition">shr</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Calc.Fcalc_bracket.html#inbetween_float"><span class="id" title="definition">inbetween_float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> <span class="id" title="var">mrs</span>) <span class="id" title="var">e'</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> <span class="id" title="var">mrs</span>).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="shr_fexp"><span class="id" title="definition">shr_fexp</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">l</span> :=<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr"><span class="id" title="definition">shr</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits2"><span class="id" title="definition">Zdigits2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="shr_truncate"><span class="id" title="lemma">shr_truncate</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">l</span>,<br/>
&nbsp;&nbsp;(0 <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>)%<span class="id" title="var">Z</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_fexp"><span class="id" title="definition">shr_fexp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">m'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">e'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">l'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Calc.Fcalc_round.html#truncate"><span class="id" title="definition">truncate</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <span class="id" title="keyword">in</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_record_of_loc"><span class="id" title="definition">shr_record_of_loc</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">l'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">e'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>

<br/>
</div>

<div class="doc">
Rounding modes 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Inductive</span> <a name="mode"><span class="id" title="inductive">mode</span></a> := <a name="mode_NE"><span class="id" title="constructor">mode_NE</span></a> | <a name="mode_ZR"><span class="id" title="constructor">mode_ZR</span></a> | <a name="mode_DN"><span class="id" title="constructor">mode_DN</span></a> | <a name="mode_UP"><span class="id" title="constructor">mode_UP</span></a> | <a name="mode_NA"><span class="id" title="constructor">mode_NA</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="round_mode"><span class="id" title="definition">round_mode</span></a> <span class="id" title="var">m</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NE"><span class="id" title="constructor">mode_NE</span></a> ⇒ <a class="idref" href="Flocq.Core.Fcore_rnd_ne.html#ZnearestE"><span class="id" title="abbreviation">ZnearestE</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_ZR"><span class="id" title="constructor">mode_ZR</span></a> ⇒ <a class="idref" href="Flocq.Core.Fcore_Raux.html#Ztrunc"><span class="id" title="definition">Ztrunc</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="Flocq.Core.Fcore_Raux.html#Zfloor"><span class="id" title="definition">Zfloor</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_UP"><span class="id" title="constructor">mode_UP</span></a> ⇒ <a class="idref" href="Flocq.Core.Fcore_Raux.html#Zceil"><span class="id" title="definition">Zceil</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NA"><span class="id" title="constructor">mode_NA</span></a> ⇒ <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#ZnearestA"><span class="id" title="abbreviation">ZnearestA</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="choice_mode"><span class="id" title="definition">choice_mode</span></a> <span class="id" title="var">m</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">lx</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NE"><span class="id" title="constructor">mode_NE</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_round.html#cond_incr"><span class="id" title="definition">cond_incr</span></a> (<a class="idref" href="Flocq.Calc.Fcalc_round.html#round_N"><span class="id" title="definition">round_N</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#Zeven"><span class="id" title="definition">Zeven</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_ZR"><span class="id" title="constructor">mode_ZR</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_round.html#cond_incr"><span class="id" title="definition">cond_incr</span></a> (<a class="idref" href="Flocq.Calc.Fcalc_round.html#round_sign_DN"><span class="id" title="definition">round_sign_DN</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_UP"><span class="id" title="constructor">mode_UP</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_round.html#cond_incr"><span class="id" title="definition">cond_incr</span></a> (<a class="idref" href="Flocq.Calc.Fcalc_round.html#round_sign_UP"><span class="id" title="definition">round_sign_UP</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NA"><span class="id" title="constructor">mode_NA</span></a> ⇒ <a class="idref" href="Flocq.Calc.Fcalc_round.html#cond_incr"><span class="id" title="definition">cond_incr</span></a> (<a class="idref" href="Flocq.Calc.Fcalc_round.html#round_N"><span class="id" title="definition">round_N</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Global Instance</span> <a name="valid_rnd_round_mode"><span class="id" title="instance">valid_rnd_round_mode</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">m</span>, <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#Valid_rnd"><span class="id" title="class">Valid_rnd</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="overflow_to_inf"><span class="id" title="definition">overflow_to_inf</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NE"><span class="id" title="constructor">mode_NE</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_NA"><span class="id" title="constructor">mode_NA</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_ZR"><span class="id" title="constructor">mode_ZR</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_UP"><span class="id" title="constructor">mode_UP</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <span class="id" title="var">m</span> <span class="id" title="var">s</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#overflow_to_inf"><span class="id" title="definition">overflow_to_inf</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a> (<span class="id" title="keyword">match</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zpow_def.html#Zpower"><span class="id" title="abbreviation">Zpower</span></a> 2 <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> 1)%<span class="id" title="var">Z</span> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span> ⇒ <span class="id" title="var">p</span> | <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> <span class="id" title="keyword">end</span>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <span class="id" title="var">mode</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">lx</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mrs'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">e'</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_fexp"><span class="id" title="definition">shr_fexp</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mrs''</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">e''</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_fexp"><span class="id" title="definition">shr_fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#choice_mode"><span class="id" title="definition">choice_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> <span class="id" title="var">mrs'</span>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#loc_of_shr_record"><span class="id" title="definition">loc_of_shr_record</span></a> <span class="id" title="var">mrs'</span>)) <span class="id" title="var">e'</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shr_m"><span class="id" title="projection">shr_m</span></a> <span class="id" title="var">mrs''</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">m</span> ⇒ <span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zbool.html#Zle_bool"><span class="id" title="abbreviation">Zle_bool</span></a> <span class="id" title="var">e''</span> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a>) <span class="id" title="keyword">then</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e''</span> <span class="id" title="keyword">else</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> <br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="binary_round_aux_correct"><span class="id" title="lemma">binary_round_aux_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mode</span> <span class="id" title="var">x</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">lx</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Calc.Fcalc_bracket.html#inbetween_float"><span class="id" title="definition">inbetween_float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits"><span class="id" title="definition">Zdigits</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>))%<span class="id" title="var">Z</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">z</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> 0) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#lx"><span class="id" title="variable">lx</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> 0<br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> 0).<br/>

<br/>
</div>

<div class="doc">
Multiplication 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Lemma</span> <a name="Bmult_correct_aux"><span class="id" title="lemma">Bmult_correct_aux</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> (<span class="id" title="var">Hx</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>) <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> (<span class="id" title="var">Hy</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#my"><span class="id" title="variable">my</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ey"><span class="id" title="variable">ey</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>),<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">x</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">y</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#my"><span class="id" title="variable">my</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ey"><span class="id" title="variable">ey</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">z</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.PArith.BinPos.html#eb3c6033cd0dd118c30831525ea46efe"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#my"><span class="id" title="variable">my</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ey"><span class="id" title="variable">ey</span></a>) <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#361afbb9b173fae6251865f2da226003"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#361afbb9b173fae6251865f2da226003"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a>).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bmult"><span class="id" title="definition">Bmult</span></a> <span class="id" title="var">mult_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> <span class="id" title="var">pl</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> | <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> <span class="id" title="var">Hy</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#proj1"><span class="id" title="lemma">proj1</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult_correct_aux"><span class="id" title="lemma">Bmult_correct_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> <span class="id" title="var">Hy</span>))<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bmult_correct"><span class="id" title="lemma">Bmult_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mult_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#361afbb9b173fae6251865f2da226003"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#361afbb9b173fae6251865f2da226003"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#andb"><span class="id" title="definition">andb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bmult_FF"><span class="id" title="definition">Bmult_FF</span></a> <span class="id" title="var">mult_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> <span class="id" title="var">pl</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> | <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_infinity"><span class="id" title="constructor">F754_infinity</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_zero"><span class="id" title="constructor">F754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_finite"><span class="id" title="constructor">F754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>) (<span class="id" title="var">mx</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.PArith.BinPos.html#eb3c6033cd0dd118c30831525ea46efe"><span class="id" title="notation">×</span></a> <span class="id" title="var">my</span>) (<span class="id" title="var">ex</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <span class="id" title="var">ey</span>) <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="B2FF_Bmult"><span class="id" title="lemma">B2FF_Bmult</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mult_nan</span> <span class="id" title="var">mult_nan_ff</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan_ff"><span class="id" title="variable">mult_nan_ff</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">sr</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <span class="id" title="var">plr</span> <span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">in</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">sr</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">plr</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult"><span class="id" title="definition">Bmult</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan"><span class="id" title="variable">mult_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bmult_FF"><span class="id" title="definition">Bmult_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mult_nan_ff"><span class="id" title="variable">mult_nan_ff</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>).<br/>

<br/>
</div>

<div class="doc">
Normalization and rounding 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="shl_align"><span class="id" title="definition">shl_align</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">ex'</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)%<span class="id" title="var">Z</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <span class="id" title="var">d</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zpower.html#shift_pos"><span class="id" title="definition">shift_pos</span></a> <span class="id" title="var">d</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="shl_align_correct"><span class="id" title="lemma">shl_align_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">ex'</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> (<span class="id" title="var">mx'</span>, <span class="id" title="var">ex''</span>) := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align"><span class="id" title="definition">shl_align</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx'"><span class="id" title="variable">mx'</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex''"><span class="id" title="variable">ex''</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex''"><span class="id" title="variable">ex''</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a>)%<span class="id" title="var">Z</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="snd_shl_align"><span class="id" title="lemma">snd_shl_align</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">ex'</span>,<br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)%<span class="id" title="var">Z</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align"><span class="id" title="definition">shl_align</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="shl_align_fexp"><span class="id" title="definition">shl_align_fexp</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> :=<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align"><span class="id" title="definition">shl_align</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#digits2_pos"><span class="id" title="definition">digits2_pos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="shl_align_fexp_correct"><span class="id" title="lemma">shl_align_fexp_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> (<span class="id" title="var">mx'</span>, <span class="id" title="var">ex'</span>) := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align_fexp"><span class="id" title="definition">shl_align_fexp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx'"><span class="id" title="variable">mx'</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#208bafb0e148fe7fb7dcd812c227f4ee"><span class="id" title="notation">≤</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits"><span class="id" title="definition">Zdigits</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx'"><span class="id" title="variable">mx'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex'"><span class="id" title="variable">ex'</span></a>))%<span class="id" title="var">Z</span>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="binary_round"><span class="id" title="definition">binary_round</span></a> <span class="id" title="var">m</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mz</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">ez</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align_fexp"><span class="id" title="definition">shl_align_fexp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <span class="id" title="keyword">in</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <span class="id" title="var">mz</span> <span class="id" title="var">ez</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="binary_round_correct"><span class="id" title="lemma">binary_round_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">z</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round"><span class="id" title="definition">binary_round</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">x</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <span class="id" title="var">mode</span> <span class="id" title="var">m</span> <span class="id" title="var">e</span> <span class="id" title="var">szero</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Z0"><span class="id" title="constructor">Z0</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">m</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#proj1"><span class="id" title="lemma">proj1</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_correct"><span class="id" title="lemma">binary_round_correct</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>))<br/>
&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <span class="id" title="var">m</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#proj1"><span class="id" title="lemma">proj1</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_correct"><span class="id" title="lemma">binary_round_correct</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode"><span class="id" title="variable">mode</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a>))<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="binary_normalize_correct"><span class="id" title="lemma">binary_normalize_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">szero</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)) 0 <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#szero"><span class="id" title="variable">szero</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>)) 0).<br/>

<br/>
</div>

<div class="doc">
Addition 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bplus"><span class="id" title="definition">Bplus</span></a> <span class="id" title="var">plus_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> <span class="id" title="var">pl</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> | <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Bool.Bool.html#eqb"><span class="id" title="definition">Bool.eqb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span> <span class="id" title="keyword">then</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Bool.Bool.html#eqb"><span class="id" title="definition">Bool.eqb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span> <span class="id" title="keyword">then</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> | <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a><br/>
&nbsp;&nbsp;| <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> <span class="id" title="var">Hy</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">ez</span> := <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Zmin"><span class="id" title="abbreviation">Zmin</span></a> <span class="id" title="var">ex</span> <span class="id" title="var">ey</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_normalize"><span class="id" title="definition">binary_normalize</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Zplus"><span class="id" title="abbreviation">Zplus</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <span class="id" title="var">sx</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align"><span class="id" title="definition">shl_align</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ez"><span class="id" title="variable">ez</span></a>)))) (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <span class="id" title="var">sy</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#shl_align"><span class="id" title="definition">shl_align</span></a> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ez"><span class="id" title="variable">ez</span></a>)))))<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ez"><span class="id" title="variable">ez</span></a> (<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> | <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="keyword">end</span>)<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bplus_correct"><span class="id" title="lemma">Bplus_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">plus_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#7de2d195108bdf12ab090711a555a032"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bplus"><span class="id" title="definition">Bplus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#7de2d195108bdf12ab090711a555a032"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bplus"><span class="id" title="definition">Bplus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bplus"><span class="id" title="definition">Bplus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#7de2d195108bdf12ab090711a555a032"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) 0 <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#orb"><span class="id" title="definition">orb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#andb"><span class="id" title="definition">andb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bplus"><span class="id" title="definition">Bplus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#plus_nan"><span class="id" title="variable">plus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>).<br/>

<br/>
</div>

<div class="doc">
Subtraction 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bminus"><span class="id" title="definition">Bminus</span></a> <span class="id" title="var">minus_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bplus"><span class="id" title="definition">Bplus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#minus_nan"><span class="id" title="variable">minus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bopp"><span class="id" title="definition">Bopp</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#pair"><span class="id" title="constructor">pair</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>).<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bminus_correct"><span class="id" title="lemma">Bminus_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">minus_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0f8d5ec6876eafaec2dca3581c24e3a0"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bminus"><span class="id" title="definition">Bminus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#minus_nan"><span class="id" title="variable">minus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0f8d5ec6876eafaec2dca3581c24e3a0"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bminus"><span class="id" title="definition">Bminus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#minus_nan"><span class="id" title="variable">minus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bminus"><span class="id" title="definition">Bminus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#minus_nan"><span class="id" title="variable">minus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rcompare"><span class="id" title="definition">Rcompare</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0f8d5ec6876eafaec2dca3581c24e3a0"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) 0 <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Eq"><span class="id" title="constructor">Eq</span></a> ⇒ <span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mode_DN"><span class="id" title="constructor">mode_DN</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#orb"><span class="id" title="definition">orb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#andb"><span class="id" title="definition">andb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)) <span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;(<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bminus"><span class="id" title="definition">Bminus</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#minus_nan"><span class="id" title="variable">minus_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#negb"><span class="id" title="definition">negb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)).<br/>

<br/>
</div>

<div class="doc">
Division 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Fdiv_core_binary"><span class="id" title="definition">Fdiv_core_binary</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">e1</span> <span class="id" title="var">m2</span> <span class="id" title="var">e2</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">d1</span> := <a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits2"><span class="id" title="definition">Zdigits2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m1"><span class="id" title="variable">m1</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">d2</span> := <a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits2"><span class="id" title="definition">Zdigits2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m2"><span class="id" title="variable">m2</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">e</span> := (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e1"><span class="id" title="variable">e1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e2"><span class="id" title="variable">e2</span></a>)%<span class="id" title="var">Z</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> (<span class="id" title="var">m</span>, <span class="id" title="var">e'</span>) :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#d2"><span class="id" title="variable">d2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#d1"><span class="id" title="variable">d1</span></a>)%<span class="id" title="var">Z</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Z.shiftl"><span class="id" title="definition">Z.shiftl</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m1"><span class="id" title="variable">m1</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span>)<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zneg"><span class="id" title="constructor">Zneg</span></a> <span class="id" title="var">p</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>%<span class="id" title="var">Z</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">q</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> :=  <a class="idref" href="Flocq.Core.Fcore_Zaux.html#Zfast_div_eucl"><span class="id" title="definition">Zfast_div_eucl</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m2"><span class="id" title="variable">m2</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">q</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e'"><span class="id" title="variable">e'</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#new_location"><span class="id" title="definition">new_location</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m2"><span class="id" title="variable">m2</span></a> <span class="id" title="var">r</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>

<br/>
<span class="id" title="keyword">Lemma</span> <a name="Bdiv_correct_aux"><span class="id" title="lemma">Bdiv_correct_aux</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span>,<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">x</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">y</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="Flocq.Core.Fcore_Zaux.html#cond_Zopp"><span class="id" title="definition">cond_Zopp</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#my"><span class="id" title="variable">my</span></a>)) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ey"><span class="id" title="variable">ey</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">z</span> :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mz</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">ez</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">lz</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Fdiv_core_binary"><span class="id" title="definition">Fdiv_core_binary</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#my"><span class="id" title="variable">my</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ey"><span class="id" title="variable">ey</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <span class="id" title="var">mz</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">mz</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a>) <span class="id" title="var">mz</span> <span class="id" title="var">ez</span> <span class="id" title="var">lz</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> <br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0c0207ff801f7c795ce431f130ae670a"><span class="id" title="notation">/</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0c0207ff801f7c795ce431f130ae670a"><span class="id" title="notation">/</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sx"><span class="id" title="variable">sx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sy"><span class="id" title="variable">sy</span></a>).<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bdiv"><span class="id" title="definition">Bdiv</span></a> <span class="id" title="var">div_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> <span class="id" title="var">pl</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <span class="id" title="var">_</span> | <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">sy</span>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sx</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">sy</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">_</span>, <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span> <span class="id" title="var">_</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#proj1"><span class="id" title="lemma">proj1</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv_correct_aux"><span class="id" title="lemma">Bdiv_correct_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">sy</span> <span class="id" title="var">my</span> <span class="id" title="var">ey</span>))<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bdiv_correct"><span class="id" title="lemma">Bdiv_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">div_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#32263a1c8b01baecdff9deb038955bc9"><span class="id" title="notation">≠</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#R0"><span class="id" title="axiom">R0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Raux.html#Rlt_bool"><span class="id" title="definition">Rlt_bool</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rbasic_fun.html#Rabs"><span class="id" title="definition">Rabs</span></a> (<a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0c0207ff801f7c795ce431f130ae670a"><span class="id" title="notation">/</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>))) (<a class="idref" href="Flocq.Core.Fcore_Raux.html#bpow"><span class="id" title="definition">bpow</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.emax"><span class="id" title="variable">emax</span></a>) <span class="id" title="keyword">then</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv"><span class="id" title="definition">Bdiv</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.Rdefinitions.html#0c0207ff801f7c795ce431f130ae670a"><span class="id" title="notation">/</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv"><span class="id" title="definition">Bdiv</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv"><span class="id" title="definition">Bdiv</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv"><span class="id" title="definition">Bdiv</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">)</span></a><br/>
&nbsp;&nbsp;<span class="id" title="keyword">else</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2FF"><span class="id" title="definition">B2FF</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bdiv"><span class="id" title="definition">Bdiv</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#div_nan"><span class="id" title="variable">div_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_overflow"><span class="id" title="definition">binary_overflow</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#xorb"><span class="id" title="definition">xorb</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#y"><span class="id" title="variable">y</span></a>)).<br/>

<br/>
</div>

<div class="doc">
Square root 
</div>
<div class="code">

<br/>
<span class="id" title="keyword">Definition</span> <a name="Fsqrt_core_binary"><span class="id" title="definition">Fsqrt_core_binary</span></a> <span class="id" title="var">m</span> <span class="id" title="var">e</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">d</span> := <a class="idref" href="Flocq.Core.Fcore_digits.html#Zdigits2"><span class="id" title="definition">Zdigits2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">s</span> := <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Zmax"><span class="id" title="abbreviation">Zmax</span></a> (2 <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#88e34ed7a73f02772126289867960764"><span class="id" title="notation">×</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.prec"><span class="id" title="variable">prec</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#d"><span class="id" title="variable">d</span></a>) 0 <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">e'</span> := (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a>)%<span class="id" title="var">Z</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> (<span class="id" title="var">s'</span>, <span class="id" title="var">e''</span>) := <span class="id" title="keyword">if</span> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#Zeven"><span class="id" title="definition">Zeven</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e'"><span class="id" title="variable">e'</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e'"><span class="id" title="variable">e'</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#a3448b794f7a26d611ad36492b5d640b"><span class="id" title="notation">+</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#239a40728d107295b3cb2c790f57f9e9"><span class="id" title="notation">-</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>%<span class="id" title="var">Z</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">m'</span> :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#s'"><span class="id" title="variable">s'</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Z.shiftl"><span class="id" title="definition">Z.shiftl</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">p</span>)<br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> (<span class="id" title="var">q</span>, <span class="id" title="var">r</span>) := <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.BinInt.html#Z.sqrtrem"><span class="id" title="definition">Z.sqrtrem</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m'"><span class="id" title="variable">m'</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">l</span> :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zbool.html#Zeq_bool"><span class="id" title="definition">Zeq_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#r"><span class="id" title="variable">r</span></a> 0 <span class="id" title="keyword">then</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Exact"><span class="id" title="constructor">loc_Exact</span></a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">else</span> <a class="idref" href="Flocq.Calc.Fcalc_bracket.html#loc_Inexact"><span class="id" title="constructor">loc_Inexact</span></a> (<span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zbool.html#Zle_bool"><span class="id" title="abbreviation">Zle_bool</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#q"><span class="id" title="variable">q</span></a> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Lt"><span class="id" title="constructor">Lt</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#Gt"><span class="id" title="constructor">Gt</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.ZArith.Zeven.html#Zdiv2"><span class="id" title="abbreviation">Zdiv2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#e''"><span class="id" title="variable">e''</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#l"><span class="id" title="variable">l</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>

<br/>
<span class="id" title="keyword">Lemma</span> <a name="Bsqrt_correct_aux"><span class="id" title="lemma">Bsqrt_correct_aux</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> (<span class="id" title="var">Hx</span> : <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#bounded"><span class="id" title="definition">bounded</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>),<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">x</span> := <a class="idref" href="Flocq.Core.Fcore_defs.html#F2R"><span class="id" title="definition">F2R</span></a> (<a class="idref" href="Flocq.Core.Fcore_defs.html#Float"><span class="id" title="constructor">Float</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">z</span> :=<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> '<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">mz</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">ez</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">lz</span><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Fsqrt_core_binary"><span class="id" title="definition">Fsqrt_core_binary</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#mx"><span class="id" title="variable">mx</span></a>) <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#ex"><span class="id" title="variable">ex</span></a> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">match</span> <span class="id" title="var">mz</span> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#Zpos"><span class="id" title="constructor">Zpos</span></a> <span class="id" title="var">mz</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#binary_round_aux"><span class="id" title="definition">binary_round_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="var">mz</span> <span class="id" title="var">ez</span> <span class="id" title="var">lz</span><br/>
&nbsp;&nbsp;&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#F754_nan"><span class="id" title="constructor">F754_nan</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Numbers.BinNums.html#xH"><span class="id" title="constructor">xH</span></a> <br/>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">end</span> <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#valid_binary"><span class="id" title="definition">valid_binary</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2R"><span class="id" title="definition">FF2R</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.R_sqrt.html#sqrt"><span class="id" title="definition">sqrt</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite_FF"><span class="id" title="definition">is_finite_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sign_FF"><span class="id" title="definition">sign_FF</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/>

<br/>
<span class="id" title="keyword">Definition</span> <a name="Bsqrt"><span class="id" title="definition">Bsqrt</span></a> <span class="id" title="var">sqrt_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span> :=<br/>
&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> <span class="id" title="var">pl</span> := <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#fst"><span class="id" title="definition">fst</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#snd"><span class="id" title="definition">snd</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#pl"><span class="id" title="variable">pl</span></a>) <span class="id" title="keyword">in</span><br/>
&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_nan"><span class="id" title="constructor">B754_nan</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">plx</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_infinity"><span class="id" title="constructor">B754_infinity</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)<br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a><br/>
&nbsp;&nbsp;| <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <span class="id" title="var">sx</span> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span> ⇒<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#FF2B"><span class="id" title="definition">FF2B</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#proj1"><span class="id" title="lemma">proj1</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsqrt_correct_aux"><span class="id" title="lemma">Bsqrt_correct_aux</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">ex</span> <span class="id" title="var">Hx</span>))<br/>
&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>

<br/>
<span class="id" title="keyword">Theorem</span> <a name="Bsqrt_correct"><span class="id" title="lemma">Bsqrt_correct</span></a> :<br/>
&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">sqrt_nan</span> <span class="id" title="var">m</span> <span class="id" title="var">x</span>,<br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsqrt"><span class="id" title="definition">Bsqrt</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Core.Fcore_generic_fmt.html#round"><span class="id" title="definition">round</span></a> <a class="idref" href="Flocq.Core.Fcore_Zaux.html#radix2"><span class="id" title="definition">radix2</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary.fexp"><span class="id" title="variable">fexp</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#round_mode"><span class="id" title="definition">round_mode</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Reals.R_sqrt.html#sqrt"><span class="id" title="definition">sqrt</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B2R"><span class="id" title="definition">B2R</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_finite"><span class="id" title="definition">is_finite</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsqrt"><span class="id" title="definition">Bsqrt</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">match</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_zero"><span class="id" title="constructor">B754_zero</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> | <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#B754_finite"><span class="id" title="constructor">B754_finite</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a> | <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <span class="id" title="keyword">end</span> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a><br/>
&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">(</span></a><a class="idref" href="Flocq.Appli.Fappli_IEEE.html#is_nan"><span class="id" title="definition">is_nan</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsqrt"><span class="id" title="definition">Bsqrt</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> (<a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsqrt"><span class="id" title="definition">Bsqrt</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#sqrt_nan"><span class="id" title="variable">sqrt_nan</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Bsign"><span class="id" title="definition">Bsign</span></a> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/current/stdlib/Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">)</span></a>.<br/>

<br/>
<span class="id" title="keyword">End</span> <a class="idref" href="Flocq.Appli.Fappli_IEEE.html#Binary"><span class="id" title="section">Binary</span></a>.<br/>
</div>
</div>

<div id="footer">
<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a>
</div>

</div>

</body>
</html>