Initial merge of cpp_bin_float code from sandbox.

[SVN r86781]
This commit is contained in:
John Maddock 2013-11-21 19:05:42 +00:00
parent 239fd62dbe
commit 10ed707a68
122 changed files with 10795 additions and 606 deletions

View File

@ -74,7 +74,8 @@ boostbook standalone
<format>pdf:<xsl:param>index.on.type=1
;
install pdf-install : standalone : <location>. <install-type>PDF <name>multiprecision.pdf ;
install pdfinstall : standalone : <location>. <install-type>PDF <name>multiprecision.pdf ;

View File

@ -7,7 +7,6 @@
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="prev" href="map/ack.html" title="Acknowledgements">
<link rel="next" href="indexes/s01.html" title="Function Index">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,22 +19,20 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.indexes"></a><a class="link" href="indexes.html" title="Indexes">Indexes</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="indexes/s01.html">Function Index</a></span></dt>
<dt><span class="section"><a href="indexes/s02.html">Class Index</a></span></dt>
<dt><span class="section"><a href="indexes/s03.html">Typedef Index</a></span></dt>
<dt><span class="section"><a href="indexes/s04.html">Index</a></span></dt>
</dl></div>
<p>
[named_index function_name Function Index] [named_index class_name Class Index]
[named_index typedef_name Typedef Index] [index]
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -43,7 +40,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
</body>
</html>

View File

@ -372,7 +372,7 @@
for polynomial execution:
</p>
<div class="table">
<a name="boost_multiprecision.intro.evaluation_of_order_6_polynomial_"></a><p class="title"><b>Table&#160;1.1.&#160;Evaluation of Order 6 Polynomial.</b></p>
<a name="boost_multiprecision.intro.evaluation_of_order_6_polynomial"></a><p class="title"><b>Table&#160;1.1.&#160;Evaluation of Order 6 Polynomial.</b></p>
<div class="table-contents"><table class="table" summary="Evaluation of Order 6 Polynomial.">
<colgroup>
<col>
@ -486,7 +486,7 @@
(50 decimal digits):
</p>
<div class="table">
<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_bessel_function_test_data"></a><p class="title"><b>Table&#160;1.2.&#160;Evaluation of Boost.Math's Bessel function test data</b></p>
<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_besse"></a><p class="title"><b>Table&#160;1.2.&#160;Evaluation of Boost.Math's Bessel function test data</b></p>
<div class="table-contents"><table class="table" summary="Evaluation of Boost.Math's Bessel function test data">
<colgroup>
<col>
@ -584,7 +584,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_non_central_t_distribution_test_data"></a><p class="title"><b>Table&#160;1.3.&#160;Evaluation of Boost.Math's Non-Central T distribution test data</b></p>
<a name="boost_multiprecision.intro.evaluation_of_boost_math_s_non_c"></a><p class="title"><b>Table&#160;1.3.&#160;Evaluation of Boost.Math's Non-Central T distribution test data</b></p>
<div class="table-contents"><table class="table" summary="Evaluation of Boost.Math's Non-Central T distribution test data">
<colgroup>
<col>
@ -696,7 +696,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -35,7 +35,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -50,7 +50,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -106,7 +106,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -28,6 +28,13 @@
</h3></div></div></div>
<h5>
<a name="boost_multiprecision.map.hist.h0"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.1_56"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_56">1.56</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Added list of values for numeric_limits.
</li></ul></div>
<h5>
<a name="boost_multiprecision.map.hist.h1"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.1_55"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_55">1.55</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@ -65,7 +72,7 @@
</li>
</ul></div>
<h5>
<a name="boost_multiprecision.map.hist.h1"></a>
<a name="boost_multiprecision.map.hist.h2"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.1_54"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_54">1.54</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@ -120,7 +127,7 @@
</li>
</ul></div>
<h5>
<a name="boost_multiprecision.map.hist.h2"></a>
<a name="boost_multiprecision.map.hist.h3"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.1_53"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_53">1.53</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
@ -136,7 +143,7 @@
</li>
</ul></div>
<h5>
<a name="boost_multiprecision.map.hist.h3"></a>
<a name="boost_multiprecision.map.hist.h4"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.post_review_changes"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.post_review_changes">Post
review changes</a>
</h5>
@ -190,7 +197,7 @@
</li>
</ul></div>
<h5>
<a name="boost_multiprecision.map.hist.h4"></a>
<a name="boost_multiprecision.map.hist.h5"></a>
<span class="phrase"><a name="boost_multiprecision.map.hist.pre_review_history"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.pre_review_history">Pre-review
history</a>
</h5>
@ -213,7 +220,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -221,7 +221,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -29,7 +29,7 @@
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="perf/overhead.html">The Overhead in the
Number Class Wrapper</a></span></dt>
<dt><span class="section"><a href="perf/realworld.html">Floating Point Real
<dt><span class="section"><a href="perf/realworld.html">Floating-Point Real
World Tests</a></span></dt>
<dt><span class="section"><a href="perf/int_real_world.html">Integer Real
World Tests</a></span></dt>
@ -43,7 +43,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -37,7 +37,7 @@
for 500000 operations.
</p>
<div class="table">
<a name="boost_multiprecision.perf.float_performance.operator__"></a><p class="title"><b>Table&#160;1.10.&#160;Operator +</b></p>
<a name="boost_multiprecision.perf.float_performance.operator"></a><p class="title"><b>Table&#160;1.14.&#160;Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@ -138,7 +138,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator___int_"></a><p class="title"><b>Table&#160;1.11.&#160;Operator +(int)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_int"></a><p class="title"><b>Table&#160;1.15.&#160;Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@ -239,7 +239,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator___unsigned_long_long_"></a><p class="title"><b>Table&#160;1.12.&#160;Operator +(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long"></a><p class="title"><b>Table&#160;1.16.&#160;Operator +(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(unsigned long long)">
<colgroup>
<col>
@ -340,7 +340,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator____unsigned_long_long_"></a><p class="title"><b>Table&#160;1.13.&#160;Operator +=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.17.&#160;Operator +=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +=(unsigned long long)">
<colgroup>
<col>
@ -441,7 +441,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator0"></a><p class="title"><b>Table&#160;1.14.&#160;Operator -</b></p>
<a name="boost_multiprecision.perf.float_performance.operator0"></a><p class="title"><b>Table&#160;1.18.&#160;Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@ -542,7 +542,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_int0"></a><p class="title"><b>Table&#160;1.15.&#160;Operator -(int)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_int0"></a><p class="title"><b>Table&#160;1.19.&#160;Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@ -643,7 +643,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.16.&#160;Operator -(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.20.&#160;Operator -(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(unsigned long long)">
<colgroup>
<col>
@ -744,7 +744,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.17.&#160;Operator -=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.21.&#160;Operator -=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -=(unsigned long long)">
<colgroup>
<col>
@ -845,7 +845,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator1"></a><p class="title"><b>Table&#160;1.18.&#160;Operator *</b></p>
<a name="boost_multiprecision.perf.float_performance.operator1"></a><p class="title"><b>Table&#160;1.22.&#160;Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@ -946,7 +946,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_int1"></a><p class="title"><b>Table&#160;1.19.&#160;Operator *(int)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_int1"></a><p class="title"><b>Table&#160;1.23.&#160;Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@ -1047,7 +1047,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.20.&#160;Operator *(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.24.&#160;Operator *(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(unsigned long long)">
<colgroup>
<col>
@ -1148,7 +1148,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.21.&#160;Operator *=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.25.&#160;Operator *=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *=(unsigned long long)">
<colgroup>
<col>
@ -1249,7 +1249,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator2"></a><p class="title"><b>Table&#160;1.22.&#160;Operator /</b></p>
<a name="boost_multiprecision.perf.float_performance.operator2"></a><p class="title"><b>Table&#160;1.26.&#160;Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@ -1350,7 +1350,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_int2"></a><p class="title"><b>Table&#160;1.23.&#160;Operator /(int)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_int2"></a><p class="title"><b>Table&#160;1.27.&#160;Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@ -1451,7 +1451,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.24.&#160;Operator /(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.28.&#160;Operator /(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(unsigned long long)">
<colgroup>
<col>
@ -1552,7 +1552,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.25.&#160;Operator /=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_unsigned_long_long6"></a><p class="title"><b>Table&#160;1.29.&#160;Operator /=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /=(unsigned long long)">
<colgroup>
<col>
@ -1653,7 +1653,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_construct"></a><p class="title"><b>Table&#160;1.26.&#160;Operator construct</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_construct"></a><p class="title"><b>Table&#160;1.30.&#160;Operator construct</b></p>
<div class="table-contents"><table class="table" summary="Operator construct">
<colgroup>
<col>
@ -1754,7 +1754,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_construct_unsigned_"></a><p class="title"><b>Table&#160;1.27.&#160;Operator construct(unsigned)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_construct_unsigned"></a><p class="title"><b>Table&#160;1.31.&#160;Operator construct(unsigned)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned)">
<colgroup>
<col>
@ -1855,7 +1855,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_construct_unsigned_long_long_"></a><p class="title"><b>Table&#160;1.28.&#160;Operator construct(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_construct_unsigned_long"></a><p class="title"><b>Table&#160;1.32.&#160;Operator construct(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned long long)">
<colgroup>
<col>
@ -1956,7 +1956,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.float_performance.operator_str"></a><p class="title"><b>Table&#160;1.29.&#160;Operator str</b></p>
<a name="boost_multiprecision.perf.float_performance.operator_str"></a><p class="title"><b>Table&#160;1.33.&#160;Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
@ -2064,7 +2064,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../perf.html" title="Performance Comparison">
<link rel="prev" href="realworld.html" title="Floating Point Real World Tests">
<link rel="prev" href="realworld.html" title="Floating-Point Real World Tests">
<link rel="next" href="float_performance.html" title="Float Algorithm Performance">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -367,7 +367,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -37,7 +37,7 @@
for 500000 operations.
</p>
<div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator__"></a><p class="title"><b>Table&#160;1.30.&#160;Operator +</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator"></a><p class="title"><b>Table&#160;1.34.&#160;Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@ -186,7 +186,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator___int_"></a><p class="title"><b>Table&#160;1.31.&#160;Operator +(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int"></a><p class="title"><b>Table&#160;1.35.&#160;Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@ -335,7 +335,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator___unsigned_long_long_"></a><p class="title"><b>Table&#160;1.32.&#160;Operator +(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long"></a><p class="title"><b>Table&#160;1.36.&#160;Operator +(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(unsigned long long)">
<colgroup>
<col>
@ -484,7 +484,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator____unsigned_long_long_"></a><p class="title"><b>Table&#160;1.33.&#160;Operator +=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.37.&#160;Operator +=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +=(unsigned long long)">
<colgroup>
<col>
@ -633,7 +633,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator0"></a><p class="title"><b>Table&#160;1.34.&#160;Operator -</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator0"></a><p class="title"><b>Table&#160;1.38.&#160;Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@ -782,7 +782,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int0"></a><p class="title"><b>Table&#160;1.35.&#160;Operator -(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int0"></a><p class="title"><b>Table&#160;1.39.&#160;Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@ -931,7 +931,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.36.&#160;Operator -(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.40.&#160;Operator -(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(unsigned long long)">
<colgroup>
<col>
@ -1080,7 +1080,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.37.&#160;Operator -=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.41.&#160;Operator -=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -=(unsigned long long)">
<colgroup>
<col>
@ -1229,7 +1229,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator1"></a><p class="title"><b>Table&#160;1.38.&#160;Operator *</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator1"></a><p class="title"><b>Table&#160;1.42.&#160;Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@ -1378,7 +1378,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int1"></a><p class="title"><b>Table&#160;1.39.&#160;Operator *(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int1"></a><p class="title"><b>Table&#160;1.43.&#160;Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@ -1527,7 +1527,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.40.&#160;Operator *(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.44.&#160;Operator *(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(unsigned long long)">
<colgroup>
<col>
@ -1676,7 +1676,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.41.&#160;Operator *=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.45.&#160;Operator *=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *=(unsigned long long)">
<colgroup>
<col>
@ -1825,7 +1825,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator2"></a><p class="title"><b>Table&#160;1.42.&#160;Operator /</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator2"></a><p class="title"><b>Table&#160;1.46.&#160;Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@ -1974,7 +1974,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int2"></a><p class="title"><b>Table&#160;1.43.&#160;Operator /(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int2"></a><p class="title"><b>Table&#160;1.47.&#160;Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@ -2123,7 +2123,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.44.&#160;Operator /(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.48.&#160;Operator /(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(unsigned long long)">
<colgroup>
<col>
@ -2272,7 +2272,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.45.&#160;Operator /=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_unsigned_long_long6"></a><p class="title"><b>Table&#160;1.49.&#160;Operator /=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /=(unsigned long long)">
<colgroup>
<col>
@ -2421,7 +2421,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator3"></a><p class="title"><b>Table&#160;1.46.&#160;Operator %</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator3"></a><p class="title"><b>Table&#160;1.50.&#160;Operator %</b></p>
<div class="table-contents"><table class="table" summary="Operator %">
<colgroup>
<col>
@ -2570,7 +2570,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int3"></a><p class="title"><b>Table&#160;1.47.&#160;Operator %(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int3"></a><p class="title"><b>Table&#160;1.51.&#160;Operator %(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator %(int)">
<colgroup>
<col>
@ -2719,7 +2719,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_construct"></a><p class="title"><b>Table&#160;1.48.&#160;Operator construct</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_construct"></a><p class="title"><b>Table&#160;1.52.&#160;Operator construct</b></p>
<div class="table-contents"><table class="table" summary="Operator construct">
<colgroup>
<col>
@ -2868,7 +2868,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_construct_unsigned_"></a><p class="title"><b>Table&#160;1.49.&#160;Operator construct(unsigned)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_construct_unsigned"></a><p class="title"><b>Table&#160;1.53.&#160;Operator construct(unsigned)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned)">
<colgroup>
<col>
@ -3017,7 +3017,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_construct_unsigned_long_long_"></a><p class="title"><b>Table&#160;1.50.&#160;Operator construct(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_construct_unsigned_long"></a><p class="title"><b>Table&#160;1.54.&#160;Operator construct(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned long long)">
<colgroup>
<col>
@ -3166,7 +3166,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_gcd"></a><p class="title"><b>Table&#160;1.51.&#160;Operator gcd</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_gcd"></a><p class="title"><b>Table&#160;1.55.&#160;Operator gcd</b></p>
<div class="table-contents"><table class="table" summary="Operator gcd">
<colgroup>
<col>
@ -3315,7 +3315,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_powm"></a><p class="title"><b>Table&#160;1.52.&#160;Operator powm</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_powm"></a><p class="title"><b>Table&#160;1.56.&#160;Operator powm</b></p>
<div class="table-contents"><table class="table" summary="Operator powm">
<colgroup>
<col>
@ -3464,7 +3464,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_str"></a><p class="title"><b>Table&#160;1.53.&#160;Operator str</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_str"></a><p class="title"><b>Table&#160;1.57.&#160;Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
@ -3613,7 +3613,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator4"></a><p class="title"><b>Table&#160;1.54.&#160;Operator |</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator4"></a><p class="title"><b>Table&#160;1.58.&#160;Operator |</b></p>
<div class="table-contents"><table class="table" summary="Operator |">
<colgroup>
<col>
@ -3762,7 +3762,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int4"></a><p class="title"><b>Table&#160;1.55.&#160;Operator |(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int4"></a><p class="title"><b>Table&#160;1.59.&#160;Operator |(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator |(int)">
<colgroup>
<col>
@ -3911,7 +3911,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator5"></a><p class="title"><b>Table&#160;1.56.&#160;Operator ^</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator5"></a><p class="title"><b>Table&#160;1.60.&#160;Operator ^</b></p>
<div class="table-contents"><table class="table" summary="Operator ^">
<colgroup>
<col>
@ -4060,7 +4060,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int5"></a><p class="title"><b>Table&#160;1.57.&#160;Operator ^(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int5"></a><p class="title"><b>Table&#160;1.61.&#160;Operator ^(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator ^(int)">
<colgroup>
<col>
@ -4209,7 +4209,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator6"></a><p class="title"><b>Table&#160;1.58.&#160;Operator &amp;</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator6"></a><p class="title"><b>Table&#160;1.62.&#160;Operator &amp;</b></p>
<div class="table-contents"><table class="table" summary="Operator &amp;">
<colgroup>
<col>
@ -4358,7 +4358,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator_int6"></a><p class="title"><b>Table&#160;1.59.&#160;Operator &amp;(int)</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator_int6"></a><p class="title"><b>Table&#160;1.63.&#160;Operator &amp;(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator &amp;(int)">
<colgroup>
<col>
@ -4507,7 +4507,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator___"></a><p class="title"><b>Table&#160;1.60.&#160;Operator &lt;&lt;</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator7"></a><p class="title"><b>Table&#160;1.64.&#160;Operator &lt;&lt;</b></p>
<div class="table-contents"><table class="table" summary="Operator &lt;&lt;">
<colgroup>
<col>
@ -4656,7 +4656,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.integer_performance.operator7"></a><p class="title"><b>Table&#160;1.61.&#160;Operator &gt;&gt;</b></p>
<a name="boost_multiprecision.perf.integer_performance.operator8"></a><p class="title"><b>Table&#160;1.65.&#160;Operator &gt;&gt;</b></p>
<div class="table-contents"><table class="table" summary="Operator &gt;&gt;">
<colgroup>
<col>
@ -4816,7 +4816,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -7,7 +7,7 @@
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../perf.html" title="Performance Comparison">
<link rel="prev" href="../perf.html" title="Performance Comparison">
<link rel="next" href="realworld.html" title="Floating Point Real World Tests">
<link rel="next" href="realworld.html" title="Floating-Point Real World Tests">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -186,7 +186,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -37,7 +37,7 @@
for 500000 operations.
</p>
<div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator__"></a><p class="title"><b>Table&#160;1.62.&#160;Operator +</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator"></a><p class="title"><b>Table&#160;1.66.&#160;Operator +</b></p>
<div class="table-contents"><table class="table" summary="Operator +">
<colgroup>
<col>
@ -132,7 +132,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator___int_"></a><p class="title"><b>Table&#160;1.63.&#160;Operator +(int)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_int"></a><p class="title"><b>Table&#160;1.67.&#160;Operator +(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(int)">
<colgroup>
<col>
@ -227,7 +227,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator___unsigned_long_long_"></a><p class="title"><b>Table&#160;1.64.&#160;Operator +(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long"></a><p class="title"><b>Table&#160;1.68.&#160;Operator +(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +(unsigned long long)">
<colgroup>
<col>
@ -322,7 +322,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator____unsigned_long_long_"></a><p class="title"><b>Table&#160;1.65.&#160;Operator +=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.69.&#160;Operator +=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator +=(unsigned long long)">
<colgroup>
<col>
@ -417,7 +417,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator0"></a><p class="title"><b>Table&#160;1.66.&#160;Operator -</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator0"></a><p class="title"><b>Table&#160;1.70.&#160;Operator -</b></p>
<div class="table-contents"><table class="table" summary="Operator -">
<colgroup>
<col>
@ -512,7 +512,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_int0"></a><p class="title"><b>Table&#160;1.67.&#160;Operator -(int)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_int0"></a><p class="title"><b>Table&#160;1.71.&#160;Operator -(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(int)">
<colgroup>
<col>
@ -607,7 +607,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long0"></a><p class="title"><b>Table&#160;1.68.&#160;Operator -(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.72.&#160;Operator -(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -(unsigned long long)">
<colgroup>
<col>
@ -702,7 +702,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long1"></a><p class="title"><b>Table&#160;1.69.&#160;Operator -=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.73.&#160;Operator -=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator -=(unsigned long long)">
<colgroup>
<col>
@ -797,7 +797,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator1"></a><p class="title"><b>Table&#160;1.70.&#160;Operator *</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator1"></a><p class="title"><b>Table&#160;1.74.&#160;Operator *</b></p>
<div class="table-contents"><table class="table" summary="Operator *">
<colgroup>
<col>
@ -892,7 +892,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_int1"></a><p class="title"><b>Table&#160;1.71.&#160;Operator *(int)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_int1"></a><p class="title"><b>Table&#160;1.75.&#160;Operator *(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(int)">
<colgroup>
<col>
@ -987,7 +987,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long2"></a><p class="title"><b>Table&#160;1.72.&#160;Operator *(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.76.&#160;Operator *(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *(unsigned long long)">
<colgroup>
<col>
@ -1082,7 +1082,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long3"></a><p class="title"><b>Table&#160;1.73.&#160;Operator *=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.77.&#160;Operator *=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator *=(unsigned long long)">
<colgroup>
<col>
@ -1177,7 +1177,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator2"></a><p class="title"><b>Table&#160;1.74.&#160;Operator /</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator2"></a><p class="title"><b>Table&#160;1.78.&#160;Operator /</b></p>
<div class="table-contents"><table class="table" summary="Operator /">
<colgroup>
<col>
@ -1272,7 +1272,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_int2"></a><p class="title"><b>Table&#160;1.75.&#160;Operator /(int)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_int2"></a><p class="title"><b>Table&#160;1.79.&#160;Operator /(int)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(int)">
<colgroup>
<col>
@ -1367,7 +1367,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long4"></a><p class="title"><b>Table&#160;1.76.&#160;Operator /(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.80.&#160;Operator /(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /(unsigned long long)">
<colgroup>
<col>
@ -1462,7 +1462,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long5"></a><p class="title"><b>Table&#160;1.77.&#160;Operator /=(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_unsigned_long_long6"></a><p class="title"><b>Table&#160;1.81.&#160;Operator /=(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator /=(unsigned long long)">
<colgroup>
<col>
@ -1557,7 +1557,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_construct"></a><p class="title"><b>Table&#160;1.78.&#160;Operator construct</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_construct"></a><p class="title"><b>Table&#160;1.82.&#160;Operator construct</b></p>
<div class="table-contents"><table class="table" summary="Operator construct">
<colgroup>
<col>
@ -1652,7 +1652,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_construct_unsigned_"></a><p class="title"><b>Table&#160;1.79.&#160;Operator construct(unsigned)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_construct_unsigned"></a><p class="title"><b>Table&#160;1.83.&#160;Operator construct(unsigned)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned)">
<colgroup>
<col>
@ -1747,7 +1747,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_construct_unsigned_long_long_"></a><p class="title"><b>Table&#160;1.80.&#160;Operator construct(unsigned long long)</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_construct_unsigned_long"></a><p class="title"><b>Table&#160;1.84.&#160;Operator construct(unsigned long long)</b></p>
<div class="table-contents"><table class="table" summary="Operator construct(unsigned long long)">
<colgroup>
<col>
@ -1842,7 +1842,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.rational_performance.operator_str"></a><p class="title"><b>Table&#160;1.81.&#160;Operator str</b></p>
<a name="boost_multiprecision.perf.rational_performance.operator_str"></a><p class="title"><b>Table&#160;1.85.&#160;Operator str</b></p>
<div class="table-contents"><table class="table" summary="Operator str">
<colgroup>
<col>
@ -1944,7 +1944,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,7 +1,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Floating Point Real World Tests</title>
<title>Floating-Point Real World Tests</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
@ -24,7 +24,7 @@
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.perf.realworld"></a><a class="link" href="realworld.html" title="Floating Point Real World Tests">Floating Point Real
<a name="boost_multiprecision.perf.realworld"></a><a class="link" href="realworld.html" title="Floating-Point Real World Tests">Floating-Point Real
World Tests</a>
</h3></div></div></div>
<p>
@ -37,7 +37,7 @@
also shown.
</p>
<div class="table">
<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table&#160;1.8.&#160;Bessel Function Performance</b></p>
<a name="boost_multiprecision.perf.realworld.bessel_function_performance"></a><p class="title"><b>Table&#160;1.12.&#160;Bessel Function Performance</b></p>
<div class="table-contents"><table class="table" summary="Bessel Function Performance">
<colgroup>
<col>
@ -168,7 +168,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_performance"></a><p class="title"><b>Table&#160;1.9.&#160;Non-Central T Distribution Performance</b></p>
<a name="boost_multiprecision.perf.realworld.non_central_t_distribution_perfo"></a><p class="title"><b>Table&#160;1.13.&#160;Non-Central T Distribution Performance</b></p>
<div class="table-contents"><table class="table" summary="Non-Central T Distribution Performance">
<colgroup>
<col>
@ -270,7 +270,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="prev" href="tut/serial.html" title="Boost.Serialization Support">
<link rel="prev" href="tut/input_output.html" title="Input Output">
<link rel="next" href="ref/number.html" title="number">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="tut/serial.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="tut/input_output.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@ -33,6 +33,7 @@
<dt><span class="section"><a href="ref/tom_int_ref.html">tom_int</a></span></dt>
<dt><span class="section"><a href="ref/mpf_ref.html">gmp_float</a></span></dt>
<dt><span class="section"><a href="ref/mpfr_ref.html">mpfr_float_backend</a></span></dt>
<dt><span class="section"><a href="ref/cpp_bin_float_ref.html">cpp_bin_float</a></span></dt>
<dt><span class="section"><a href="ref/cpp_dec_ref.html">cpp_dec_float</a></span></dt>
<dt><span class="section"><a href="ref/internals.html">Internal Support
Code</a></span></dt>
@ -42,7 +43,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -50,7 +51,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="tut/serial.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="tut/input_output.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -67,7 +67,7 @@
is a variable of type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">fmtflags</span></code>.
</p>
<div class="table">
<a name="boost_multiprecision.ref.backendconc.compulsory_requirements_on_the_backend_type_"></a><p class="title"><b>Table&#160;1.4.&#160;Compulsory Requirements on the Backend type.</b></p>
<a name="boost_multiprecision.ref.backendconc.compulsory_requirements_on_the_b"></a><p class="title"><b>Table&#160;1.8.&#160;Compulsory Requirements on the Backend type.</b></p>
<div class="table-contents"><table class="table" summary="Compulsory Requirements on the Backend type.">
<colgroup>
<col>
@ -954,7 +954,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type"></a><p class="title"><b>Table&#160;1.5.&#160;Optional Requirements on the Backend Type</b></p>
<a name="boost_multiprecision.ref.backendconc.optional_requirements_on_the_bac"></a><p class="title"><b>Table&#160;1.9.&#160;Optional Requirements on the Backend Type</b></p>
<div class="table-contents"><table class="table" summary="Optional Requirements on the Backend Type">
<colgroup>
<col>
@ -3897,7 +3897,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -0,0 +1,186 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cpp_bin_float</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../ref.html" title="Reference">
<link rel="prev" href="mpfr_ref.html" title="mpfr_float_backend">
<link rel="next" href="cpp_dec_ref.html" title="cpp_dec_float">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.cpp_bin_float_ref"></a><a class="link" href="cpp_bin_float_ref.html" title="cpp_bin_float">cpp_bin_float</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
<span class="keyword">enum</span> <span class="identifier">digit_base_type</span>
<span class="special">{</span>
<span class="identifier">digit_base_2</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span>
<span class="identifier">digit_base_10</span> <span class="special">=</span> <span class="number">10</span>
<span class="special">};</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits</span><span class="special">,</span> <span class="identifier">digit_base_type</span> <span class="identifier">base</span> <span class="special">=</span> <span class="identifier">digit_base_10</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Exponent</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">ExponentMin</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">ExponentMax</span> <span class="special">=</span> <span class="number">0</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">cpp_bin_float</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_bin_float_50</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_bin_float_100</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">24</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">126</span><span class="special">,</span> <span class="number">127</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_single</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">53</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">1022</span><span class="special">,</span> <span class="number">1023</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_double</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">64</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_double_extended</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">113</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_quad</span><span class="special">;</span>
<span class="special">}}</span> <span class="comment">// namespaces</span>
</pre>
<p>
Class template <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
type. Its members and non-member functions are deliberately not documented:
these are considered implementation details that are subject to change.
</p>
<p>
The class takes six template parameters:
</p>
<div class="variablelist">
<p class="title"><b></b></p>
<dl class="variablelist">
<dt><span class="term">Digits</span></dt>
<dd><p>
The number of digits precision the type should support. This is normally
expresed as base-10 digits, but that can be changed via the second
template parameter.
</p></dd>
<dt><span class="term">base</span></dt>
<dd><p>
An enumerated value (either <code class="computeroutput"><span class="identifier">digit_base_10</span></code>
or <code class="computeroutput"><span class="identifier">digit_base_2</span></code>) that
indicates whether <code class="computeroutput"><span class="identifier">Digits</span></code>
is base-10 or base-2
</p></dd>
<dt><span class="term">Allocator</span></dt>
<dd><p>
The allocator used: defaults to type <code class="computeroutput"><span class="keyword">void</span></code>,
meaning all storage is within the class, and no dynamic allocation
is performed, but can be set to a standard library allocator if dynamic
allocation makes more sense.
</p></dd>
<dt><span class="term">Exponent</span></dt>
<dd><p>
A signed integer type to use as the type of the exponent - defaults
to <code class="computeroutput"><span class="keyword">int</span></code>.
</p></dd>
<dt><span class="term">ExponentMin</span></dt>
<dd><p>
The smallest (most negative) permitted exponent, defaults to zero,
meaning "define as small as possible given the limitations of
the type and our internal requirements".
</p></dd>
<dt><span class="term">ExponentMax</span></dt>
<dd><p>
The largest (most positive) permitted exponent, defaults to zero, meaning
"define as large as possible given the limitations of the type
and our internal requirements".
</p></dd>
</dl>
</div>
<p>
The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</span></code>.
</p>
<p>
More information on this type can be found in the <a class="link" href="../tut/floats/cpp_bin_float.html" title="cpp_bin_float">tutorial</a>.
</p>
<h5>
<a name="boost_multiprecision.ref.cpp_bin_float_ref.h0"></a>
<span class="phrase"><a name="boost_multiprecision.ref.cpp_bin_float_ref.implementation_notes"></a></span><a class="link" href="cpp_bin_float_ref.html#boost_multiprecision.ref.cpp_bin_float_ref.implementation_notes">Implementation
Notes</a>
</h5>
<p>
Internally, an N-bit <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
is represented as an N-bit unsigned integer along with an exponent and a
sign. The integer part is normalized so that it's most significant bit is
always 1. The decimal point is assumed to be directly after the most significant
bit of the integer part. The special values zero, infinity and NaN all have
the integer part set to zero, and the exponent to one of 3 special values
above the maximum permitted exponent.
</p>
<p>
Multiplication is trivial: multiply the two N-bit integer mantissa's to obtain
a 2N-bit number, then round and adjust the sign and exponent.
</p>
<p>
Addition and subtraction proceed similarly - if the exponents are such that
there is overlap between the two values, then left shift the larger value
to produce a number with between N and 2N bits, then perform integer addition
or subtraction, round, and adjust the exponent.
</p>
<p>
Division proceeds as follows: first scale the numerator by some power of
2 so that integer division will produce either an N-bit or N+1 bit result
plus a remainder. If we get an N bit result then the size of twice the remainder
compared to the denominator gives us the rounding direction. Otherwise we
have one extra bit in the result which we can use to determine rounding (in
this case ties occur only if the remainder is zero and the extra bit is a
1).
</p>
<p>
Square root uses integer square root in a manner analogous to division.
</p>
<p>
Decimal string to binary conversion proceeds as follows: first parse the
digits to produce an integer multiplied by a decimal exponent. Note that
we stop parsing digits once we have parsed as many as can possibly effect
the result - this stops the integer part growing too large when there are
a very large number of input digits provided. At this stage if the decimal
exponent is positive then the result is an integer and we can in principle
simply multiply by 10^N to get an exact integer result. In practice however,
that could produce some very large integers. We also need to be able to divide
by 10^N in the event that the exponent is negative. Therefore calculation
of the 10^N values plus the multiplication or division are performed using
limited precision integer arithmetic, plus an exponent, and a track of the
accumulated error. At the end of the calculation we will either be able to
round unambiguously, or the error will be such that we can't tell which way
to round. In the latter case we simply up the precision and try again until
we have an unambiguously rounded result.
</p>
<p>
Binary to decimal conversion proceeds very similarly to the above, our aim
is to calculate <code class="computeroutput"><span class="identifier">mantissa</span> <span class="special">*</span> <span class="number">2</span><span class="special">^</span><span class="identifier">shift</span> <span class="special">*</span> <span class="number">10</span><span class="special">^</span><span class="identifier">E</span></code>
where <code class="computeroutput"><span class="identifier">E</span></code> is the decimal exponent
and <code class="computeroutput"><span class="identifier">shift</span></code> is calculated so
that the result is an N bit integer assuming we want N digits printed in
the result. As before we use limitted precision arithmetic to calculate the
result and up the precision as necessary until the result is unambiguously
correctly rounded. In addition our initial calculation of the decimal exponent
may be out by 1, so we have to correct that and loop as well in the that
case.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../ref.html" title="Reference">
<link rel="prev" href="mpfr_ref.html" title="mpfr_float_backend">
<link rel="prev" href="cpp_bin_float_ref.html" title="cpp_bin_float">
<link rel="next" href="internals.html" title="Internal Support Code">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="cpp_bin_float_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -70,7 +70,7 @@
</dl>
</div>
<p>
The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special">&lt;</span><span class="identifier">cpp_int</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</span></code>.
The type of <code class="computeroutput"><span class="identifier">number_category</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&lt;</span><span class="identifier">number_kind_floating_point</span><span class="special">&gt;</span></code>.
</p>
<p>
More information on this type can be found in the <a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float">tutorial</a>.
@ -78,7 +78,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -86,7 +86,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="cpp_bin_float_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -143,7 +143,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -49,7 +49,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -27,7 +27,7 @@
<a name="boost_multiprecision.ref.headers"></a><a class="link" href="headers.html" title="Header File Structure">Header File Structure</a>
</h3></div></div></div>
<div class="table">
<a name="boost_multiprecision.ref.headers.top_level_headers"></a><p class="title"><b>Table&#160;1.6.&#160;Top level headers</b></p>
<a name="boost_multiprecision.ref.headers.top_level_headers"></a><p class="title"><b>Table&#160;1.10.&#160;Top level headers</b></p>
<div class="table-contents"><table class="table" summary="Top level headers">
<colgroup>
<col>
@ -176,8 +176,8 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_multiprecision.ref.headers.implementation_headers_"></a><p class="title"><b>Table&#160;1.7.&#160;Implementation Headers]</b></p>
<div class="table-contents"><table class="table" summary="Implementation Headers]">
<a name="boost_multiprecision.ref.headers.implementation_headers"></a><p class="title"><b>Table&#160;1.11.&#160;Implementation Headers</b></p>
<div class="table-contents"><table class="table" summary="Implementation Headers">
<colgroup>
<col>
<col>
@ -410,7 +410,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -100,7 +100,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -65,7 +65,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -7,7 +7,7 @@
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../ref.html" title="Reference">
<link rel="prev" href="mpf_ref.html" title="gmp_float">
<link rel="next" href="cpp_dec_ref.html" title="cpp_dec_float">
<link rel="next" href="cpp_bin_float_ref.html" title="cpp_bin_float">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_bin_float_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -65,7 +65,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -73,7 +73,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_bin_float_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -477,11 +477,11 @@
<li class="listitem">
Zero for <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span>
<span class="special">==</span> <span class="identifier">other</span></code>
</li>
</ul></div>
<pre class="programlisting"><span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">();</span>
<span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">backend</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
</pre>
</li>
</ul></div>
<p>
Returns the underlying back-end instance used by <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span></code>.
</p>
@ -589,7 +589,7 @@
</p>
<h5>
<a name="boost_multiprecision.ref.number.h5"></a>
<span class="phrase"><a name="boost_multiprecision.ref.number.arithmetic_with_a_higher_precision_result"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.arithmetic_with_a_higher_precision_result">Arithmetic
<span class="phrase"><a name="boost_multiprecision.ref.number.arithmetic_with_a_higher_precisi"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.arithmetic_with_a_higher_precisi">Arithmetic
with a higher precision result</a>
</h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">ResultType</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Source1</span> <span class="keyword">class</span> <span class="identifier">Source2</span><span class="special">&gt;</span>
@ -621,7 +621,7 @@
</p>
<h5>
<a name="boost_multiprecision.ref.number.h6"></a>
<span class="phrase"><a name="boost_multiprecision.ref.number.non_member_standard_library_function_support"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.non_member_standard_library_function_support">Non-member
<span class="phrase"><a name="boost_multiprecision.ref.number.non_member_standard_library_func"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.non_member_standard_library_func">Non-member
standard library function support</a>
</h5>
<pre class="programlisting"><span class="emphasis"><em>unmentionable-expression-template-type</em></span> <span class="identifier">abs</span> <span class="special">(</span><span class="keyword">const</span> <span class="emphasis"><em>number-or-expression-template-type</em></span><span class="special">&amp;);</span>
@ -1255,7 +1255,7 @@
</p>
<h5>
<a name="boost_multiprecision.ref.number.h10"></a>
<span class="phrase"><a name="boost_multiprecision.ref.number.boost_math_interoperability_support"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.boost_math_interoperability_support">Boost.Math
<span class="phrase"><a name="boost_multiprecision.ref.number.boost_math_interoperability_supp"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.boost_math_interoperability_supp">Boost.Math
Interoperability Support</a>
</h5>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
@ -1278,7 +1278,7 @@
</p>
<h5>
<a name="boost_multiprecision.ref.number.h11"></a>
<span class="phrase"><a name="boost_multiprecision.ref.number.std__numeric_limits_support"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.std__numeric_limits_support">std::numeric_limits
<span class="phrase"><a name="boost_multiprecision.ref.number.std_numeric_limits_support"></a></span><a class="link" href="number.html#boost_multiprecision.ref.number.std_numeric_limits_support">std::numeric_limits
support</a>
</h5>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">std</span><span class="special">{</span>
@ -1301,7 +1301,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -49,7 +49,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -40,6 +40,7 @@
</dl></dd>
<dt><span class="section"><a href="tut/floats.html">Floating Point Numbers</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="tut/floats/cpp_bin_float.html">cpp_bin_float</a></span></dt>
<dt><span class="section"><a href="tut/floats/cpp_dec_float.html">cpp_dec_float</a></span></dt>
<dt><span class="section"><a href="tut/floats/gmp_float.html">gmp_float</a></span></dt>
<dt><span class="section"><a href="tut/floats/mpfr_float.html">mpfr_float</a></span></dt>
@ -86,6 +87,18 @@
<dt><span class="section"><a href="tut/gen_int.html">Generic Integer Operations</a></span></dt>
<dt><span class="section"><a href="tut/serial.html">Boost.Serialization
Support</a></span></dt>
<dt><span class="section"><a href="tut/limits.html">Numeric Limits</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="tut/limits/constants.html">std::numeric_limits&lt;&gt;
constants</a></span></dt>
<dt><span class="section"><a href="tut/limits/functions.html">std::numeric_limits&lt;&gt;
functions</a></span></dt>
<dt><span class="section"><a href="tut/limits/limits32.html">Numeric limits
for 32-bit platform</a></span></dt>
<dt><span class="section"><a href="tut/limits/how_to_tell.html">How to
Determine the Kind of a Number From <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code></a></span></dt>
</dl></dd>
<dt><span class="section"><a href="tut/input_output.html">Input Output</a></span></dt>
</dl></div>
<p>
In order to use this library you need to make two choices:
@ -104,7 +117,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -31,51 +31,53 @@
All of the number types that are based on <code class="computeroutput"><span class="identifier">number</span></code>
have certain conversion rules in common. In particular:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Any number type can be constructed (or assigned) from any builtin arithmetic
type, as long as the conversion isn't lossy (for example float to int
conversion):
</li></ul></div>
<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">df</span><span class="special">(</span><span class="number">0.5</span><span class="special">);</span> <span class="comment">// OK construction from double</span>
<span class="identifier">cpp_int</span> <span class="identifier">i</span><span class="special">(</span><span class="number">450</span><span class="special">);</span> <span class="comment">// OK constructs from signed int</span>
<span class="identifier">cpp_int</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">3.14</span><span class="special">;</span> <span class="comment">// Error, lossy conversion.</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
A number can be explicitly constructed from an arithmetic type, even
when the conversion is lossy:
</li></ul></div>
<pre class="programlisting"><span class="identifier">cpp_int</span> <span class="identifier">i</span><span class="special">(</span><span class="number">3.14</span><span class="special">);</span> <span class="comment">// OK explicit conversion</span>
<span class="identifier">i</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">cpp_int</span><span class="special">&gt;(</span><span class="number">3.14</span><span class="special">)</span> <span class="comment">// OK explicit conversion</span>
<span class="identifier">i</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="number">3.14</span><span class="special">);</span> <span class="comment">// OK, explicit assign and avoid a temporary from the cast above</span>
<span class="identifier">i</span> <span class="special">=</span> <span class="number">3.14</span><span class="special">;</span> <span class="comment">// Error, no implicit assignment operator for lossy conversion.</span>
<span class="identifier">cpp_int</span> <span class="identifier">j</span> <span class="special">=</span> <span class="number">3.14</span><span class="special">;</span> <span class="comment">// Error, no implicit constructor for lossy conversion.</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
A <code class="computeroutput"><span class="identifier">number</span></code> can be converted
to any built in type, via the <code class="computeroutput"><span class="identifier">convert_to</span></code>
member function:
</li></ul></div>
<pre class="programlisting"><span class="identifier">mpz_int</span> <span class="identifier">z</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
<span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">z</span><span class="special">.</span><span class="keyword">template</span> <span class="identifier">convert_to</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;();</span> <span class="comment">// sets i to 2</span>
</pre>
</li>
</ul></div>
<p>
Additional conversions may be supported by particular backends.
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
A <code class="computeroutput"><span class="identifier">number</span></code> can be converted
to any built in type, via an explicit conversion operator: this functionality
is only available on compilers supporting C++11's explicit conversion
syntax.
</li></ul></div>
<pre class="programlisting"><span class="identifier">mpz_int</span> <span class="identifier">z</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
<span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="identifier">z</span><span class="special">;</span> <span class="comment">// Error, implicit conversion not allowed.</span>
<span class="keyword">int</span> <span class="identifier">j</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// OK explicit conversion.</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Any number type can be <span class="emphasis"><em>explicitly</em></span> constructed (or
assigned) from a <code class="computeroutput"><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span></code>
or a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>:
</li></ul></div>
<pre class="programlisting"><span class="comment">// pi to 50 places from a string:</span>
<span class="identifier">cpp_dec_float_50</span> <span class="identifier">df</span><span class="special">(</span><span class="string">"3.14159265358979323846264338327950288419716939937510"</span><span class="special">);</span>
<span class="comment">// Integer type will automatically detect "0x" and "0" prefixes and parse the string accordingly:</span>
@ -87,10 +89,10 @@
<span class="comment">// assign member function, avoids having to create a temporary via a static_cast:</span>
<span class="identifier">i</span><span class="special">.</span><span class="identifier">assign</span><span class="special">(</span><span class="string">"23"</span><span class="special">);</span> <span class="comment">// OK</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Any number type will interoperate with the builtin types in arithmetic
expressions as long as the conversions are not lossy:
</li></ul></div>
<pre class="programlisting"><span class="comment">// pi to 50 places from a string:</span>
<span class="identifier">cpp_dec_float_50</span> <span class="identifier">df</span> <span class="special">=</span> <span class="string">"3.14159265358979323846264338327950288419716939937510"</span><span class="special">;</span>
<span class="comment">// Multiply by 2 - using an integer literal here is usually more efficient</span>
@ -101,9 +103,9 @@
<span class="identifier">cpp_int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
<span class="identifier">i</span> <span class="special">*=</span> <span class="number">3.14</span><span class="special">;</span> <span class="comment">// Error, no *= operator will be found.</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Any number type can be streamed to and from the C++ iostreams:
</li></ul></div>
<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">df</span> <span class="special">=</span> <span class="string">"3.14159265358979323846264338327950288419716939937510"</span><span class="special">;</span>
<span class="comment">// Now print at full precision:</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">)</span>
@ -113,11 +115,11 @@
<span class="comment">// Now print in hex format with prefix:</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showbase</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Interconversions between number types of the same family are allowed
and are implicit conversions if no loss of precision is involved, and
explicit if it is:
</li></ul></div>
<pre class="programlisting"><span class="identifier">int128_t</span> <span class="identifier">i128</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
<span class="identifier">int266_t</span> <span class="identifier">i256</span> <span class="special">=</span> <span class="identifier">i128</span><span class="special">;</span> <span class="comment">// OK implicit widening conversion</span>
<span class="identifier">i128_t</span> <span class="special">=</span> <span class="identifier">i256</span><span class="special">;</span> <span class="comment">// Error, no assignment operator found, narrowing conversion is explicit</span>
@ -130,12 +132,12 @@
<span class="identifier">f</span> <span class="special">=</span> <span class="identifier">f50</span><span class="special">;</span> <span class="comment">// OK, conversion from fixed to variable precision, f will have 50 digits precision.</span>
<span class="identifier">f50</span> <span class="special">=</span> <span class="identifier">f</span><span class="special">;</span> <span class="comment">// Error, conversion from variable to fixed precision is potentially lossy, explicit cast required.</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Some interconversions between number types are completely generic, and
are always available, albeit the conversions are always <span class="emphasis"><em>explicit</em></span>:
</li></ul></div>
<pre class="programlisting"><span class="identifier">cpp_int</span> <span class="identifier">cppi</span><span class="special">(</span><span class="number">2</span><span class="special">);</span>
<span class="comment">// We can always convert between numbers of the same category - </span>
<span class="comment">// We can always convert between numbers of the same category -</span>
<span class="comment">// int to int, rational to rational, or float to float, so this is OK</span>
<span class="comment">// as long as we use an explicit conversion:</span>
<span class="identifier">mpz_int</span> <span class="identifier">z</span><span class="special">(</span><span class="identifier">cppi</span><span class="special">);</span>
@ -146,14 +148,16 @@
<span class="comment">// However narrowing and/or implicit conversions always fail:</span>
<span class="identifier">cppi</span> <span class="special">=</span> <span class="identifier">df</span><span class="special">;</span> <span class="comment">// Compiler error, conversion not allowed</span>
</pre>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
</li>
<li class="listitem">
Other interconversions may be allowed as special cases, whenever the
backend allows it:
</li></ul></div>
<pre class="programlisting"><span class="identifier">mpf_t</span> <span class="identifier">m</span><span class="special">;</span> <span class="comment">// Native GMP type.</span>
<span class="identifier">mpf_init_set_ui</span><span class="special">(</span><span class="identifier">m</span><span class="special">,</span> <span class="number">0</span><span class="special">);</span> <span class="comment">// set to a value;</span>
<span class="identifier">mpf_float</span> <span class="identifier">i</span><span class="special">(</span><span class="identifier">m</span><span class="special">);</span> <span class="comment">// copies the value of the native type.</span>
</pre>
</li>
</ul></div>
<p>
More information on what additional types a backend supports conversions
from are given in the tutorial for each backend. The converting constructor
@ -163,7 +167,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -7,7 +7,7 @@
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../tut.html" title="Tutorial">
<link rel="prev" href="ints/egs/bitops.html" title="Bit Operations">
<link rel="next" href="floats/cpp_dec_float.html" title="cpp_dec_float">
<link rel="next" href="floats/cpp_bin_float.html" title="cpp_bin_float">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,13 +20,14 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="ints/egs/bitops.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="floats/cpp_dec_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="ints/egs/bitops.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="floats/cpp_bin_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.floats"></a><a class="link" href="floats.html" title="Floating Point Numbers">Floating Point Numbers</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="floats/cpp_bin_float.html">cpp_bin_float</a></span></dt>
<dt><span class="section"><a href="floats/cpp_dec_float.html">cpp_dec_float</a></span></dt>
<dt><span class="section"><a href="floats/gmp_float.html">gmp_float</a></span></dt>
<dt><span class="section"><a href="floats/mpfr_float.html">mpfr_float</a></span></dt>
@ -91,6 +92,39 @@
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
boost/multiprecision/cpp_bin_float.hpp
</p>
</td>
<td>
<p>
2
</p>
</td>
<td>
<p>
None
</p>
</td>
<td>
<p>
Header only, all C++ implementation. Boost licence.
</p>
</td>
<td>
<p>
Approximately 2x slower than the <a href="http://www.mpfr.org" target="_top">MPFR</a>
or <a href="http://gmplib.org" target="_top">GMP</a> libraries.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span></code>
@ -229,7 +263,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -237,7 +271,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="ints/egs/bitops.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="floats/cpp_dec_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="ints/egs/bitops.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="floats/cpp_bin_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,192 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>cpp_bin_float</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../floats.html" title="Floating Point Numbers">
<link rel="prev" href="../floats.html" title="Floating Point Numbers">
<link rel="next" href="cpp_dec_float.html" title="cpp_dec_float">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.floats.cpp_bin_float"></a><a class="link" href="cpp_bin_float.html" title="cpp_bin_float">cpp_bin_float</a>
</h4></div></div></div>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_bin_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
<span class="keyword">enum</span> <span class="identifier">digit_base_type</span>
<span class="special">{</span>
<span class="identifier">digit_base_2</span> <span class="special">=</span> <span class="number">2</span><span class="special">,</span>
<span class="identifier">digit_base_10</span> <span class="special">=</span> <span class="number">10</span>
<span class="special">};</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits</span><span class="special">,</span> <span class="identifier">digit_base_type</span> <span class="identifier">base</span> <span class="special">=</span> <span class="identifier">digit_base_10</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Exponent</span> <span class="special">=</span> <span class="keyword">int</span><span class="special">,</span> <span class="identifier">ExponentMin</span> <span class="special">=</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">ExponentMax</span> <span class="special">=</span> <span class="number">0</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">cpp_bin_float</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_bin_float_50</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_bin_float_100</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">24</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">126</span><span class="special">,</span> <span class="number">127</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_single</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">53</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">1022</span><span class="special">,</span> <span class="number">1023</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_double</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">64</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_double_extended</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">backends</span><span class="special">::</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">113</span><span class="special">,</span> <span class="identifier">backends</span><span class="special">::</span><span class="identifier">digit_base_2</span><span class="special">,</span> <span class="keyword">void</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">int16_t</span><span class="special">,</span> <span class="special">-</span><span class="number">16382</span><span class="special">,</span> <span class="number">16383</span><span class="special">&gt;,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">cpp_bin_float_quad</span><span class="special">;</span>
<span class="special">}}</span> <span class="comment">// namespaces</span>
</pre>
<p>
The <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> back-end
is used in conjunction with <code class="computeroutput"><span class="identifier">number</span></code>:
It acts as an entirely C++ (header only and dependency free) floating-point
number type that is a drop-in replacement for the native C++ floating-point
types, but with much greater precision.
</p>
<p>
Type <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> can
be used at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits</span></code>
template parameter. The typedefs <code class="computeroutput"><span class="identifier">cpp_bin_float_50</span></code>
and <code class="computeroutput"><span class="identifier">cpp_bin_float_100</span></code> provide
arithmetic types at 50 and 100 decimal digits precision respectively.
</p>
<p>
Optionally, you can specify whether the precision is specified in decimal
digits or binary bits - for example to declare a <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
with exactly the same precision as <code class="computeroutput"><span class="keyword">double</span></code>
one would use <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">53</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>.
The typedefs <code class="computeroutput"><span class="identifier">cpp_bin_float_single</span></code>,
<code class="computeroutput"><span class="identifier">cpp_bin_float_double</span></code>,
<code class="computeroutput"><span class="identifier">cpp_bin_float_quad</span></code> and
<code class="computeroutput"><span class="identifier">cpp_bin_float_double_extended</span></code>
provide software analogues of the IEEE single, double and quad float data
types, plus the Intel-extended-double type respectively. Note that while
these types are functionally equivalent to the native IEEE types, but they
do not have the same size or bit-layout as true IEEE compatible types.
</p>
<p>
Normally <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
allocates no memory: all of the space required for its digits are allocated
directly within the class. As a result care should be taken not to use
the class with too high a digit count as stack space requirements can grow
out of control. If that represents a problem then providing an allocator
as a template parameter causes <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
to dynamically allocate the memory it needs: this significantly reduces
the size of <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>
and increases the viable upper limit on the number of digits at the expense
of performance. However, please bear in mind that arithmetic operations
rapidly become <span class="emphasis"><em>very</em></span> expensive as the digit count grows:
the current implementation really isn't optimized or designed for large
digit counts. Note that since the actual type of the objects allocated
is completely opaque, the suggestion would be to use an allocator with
<code class="computeroutput"><span class="keyword">void</span></code> <code class="computeroutput"><span class="identifier">value_type</span></code>,
for example: <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">1000</span><span class="special">,</span> <span class="identifier">digit_base_10</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span><span class="special">&lt;</span><span class="keyword">void</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span></code>.
</p>
<p>
The final template parameters determine the type and range of the exponent:
parameter <code class="computeroutput"><span class="identifier">Exponent</span></code> can
be any signed integer type, but note that <code class="computeroutput"><span class="identifier">MinExponent</span></code>
and <code class="computeroutput"><span class="identifier">MaxExponent</span></code> can not
go right up to the limits of the <code class="computeroutput"><span class="identifier">Exponent</span></code>
type as there has to be a little extra headroom for internal calculations.
You will get a compile time error if if this is the case. In addition if
MinExponent or MaxExponent are zero, then the library will choose suitable
values that are as large as possible given the constraints of the type
and need for extra headhoom for internal calculations.
</p>
<p>
There is full standard library and <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
support available for this type.
</p>
<p>
Things you should know when using this type:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Default constructed <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code>s
have a value of zero.
</li>
<li class="listitem">
The radix of this type is 2, even when the precision is specified as
decimal digits.
</li>
<li class="listitem">
The type supports both infinities and NaN's. An infinity is generated
whenever the result would overflow, and a NaN is generated for any
mathematically undefined operation.
</li>
<li class="listitem">
There is a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code> specialisation for
this type.
</li>
<li class="listitem">
Any <code class="computeroutput"><span class="identifier">number</span></code> instantiated
on this type, is convertible to any other <code class="computeroutput"><span class="identifier">number</span></code>
instantiated on this type - for example you can convert from <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> to <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="identifier">SomeOtherValue</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>.
Narrowing conversions round to nearest and are <code class="computeroutput"><span class="keyword">explicit</span></code>.
</li>
<li class="listitem">
Conversion from a string results in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>
being thrown if the string can not be interpreted as a valid floating
point number.
</li>
<li class="listitem">
All arithmetic operations are correctly rounded to nearest. String
comversions and the <code class="computeroutput"><span class="identifier">sqrt</span></code>
function are also correctly rounded, but transcendental functions (sin,
cos, pow, exp etc) are not.
</li>
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.cpp_bin_float.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.cpp_bin_float.cpp_bin_float_example"></a></span><a class="link" href="cpp_bin_float.html#boost_multiprecision.tut.floats.cpp_bin_float.cpp_bin_float_example">cpp_bin_float
example:</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_bin_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
<span class="comment">// Operations at fixed precision and full numeric_limits support:</span>
<span class="identifier">cpp_bin_float_100</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_100</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_100</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// We can use any C++ std lib function, lets print all the digits as well:</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_100</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">)</span>
<span class="special">&lt;&lt;</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print log(2)</span>
<span class="comment">// We can also use any function from Boost.Math:</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// These even work when the argument is an expression template:</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">b</span> <span class="special">*</span> <span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// And since we have an extended exponent range we can generate some really large </span>
<span class="comment">// numbers here (4.0238726007709377354370243e+2564):</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">cpp_bin_float_100</span><span class="special">(</span><span class="number">1000</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cpp_dec_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../floats.html" title="Floating Point Numbers">
<link rel="prev" href="../floats.html" title="Floating Point Numbers">
<link rel="prev" href="cpp_bin_float.html" title="cpp_bin_float">
<link rel="next" href="gmp_float.html" title="gmp_float">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="cpp_bin_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
@ -130,11 +130,9 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.cpp_dec_float.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.cpp_dec_float.cpp_dec_float_example_"></a></span><a class="link" href="cpp_dec_float.html#boost_multiprecision.tut.floats.cpp_dec_float.cpp_dec_float_example_">cpp_dec_float
<span class="phrase"><a name="boost_multiprecision.tut.floats.cpp_dec_float.cpp_dec_float_example"></a></span><a class="link" href="cpp_dec_float.html#boost_multiprecision.tut.floats.cpp_dec_float.cpp_dec_float_example">cpp_dec_float
example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -155,12 +153,10 @@
<span class="comment">// numbers here (4.0238726007709377354370243e+2564):</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">cpp_dec_float_100</span><span class="special">(</span><span class="number">1000</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -168,7 +164,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="cpp_bin_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -109,11 +109,9 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.float128.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.float128.float128_example_"></a></span><a class="link" href="float128.html#boost_multiprecision.tut.floats.float128.float128_example_">float128
<span class="phrase"><a name="boost_multiprecision.tut.floats.float128.float128_example"></a></span><a class="link" href="float128.html#boost_multiprecision.tut.floats.float128.float128_example">float128
example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">float128</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -138,8 +136,6 @@
<span class="keyword">constexpr</span> <span class="identifier">float128</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="number">3.1415926535897932384626433832795028841971693993751058</span><span class="identifier">Q</span><span class="special">;</span>
</pre>
<p>
</p>
<div class="footnotes">
<br><hr style="width:100; text-align:left;margin-left: 0">
<div id="ftn.boost_multiprecision.tut.floats.float128.f0" class="footnote"><p><a href="#boost_multiprecision.tut.floats.float128.f0" class="para"><sup class="para">[3] </sup></a>
@ -149,7 +145,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -41,7 +41,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -39,8 +39,6 @@
The area of a circle can be computed in generic programming using Boost.Math
for the constant &#960; as shown below:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">constants</span><span class="special">/</span><span class="identifier">constants</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
@ -50,8 +48,6 @@
<span class="keyword">return</span> <span class="identifier">pi</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;()</span> <span class="special">*</span> <span class="identifier">r</span> <span class="special">*</span> <span class="identifier">r</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
It is possible to use <code class="computeroutput"><span class="identifier">area_of_a_circle</span><span class="special">()</span></code> with built-in floating-point types
as well as floating-point types from Boost.Multiprecision. In particular,
@ -64,8 +60,6 @@
123/100 for <code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code> and <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
with the program below.
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iomanip</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -102,8 +96,6 @@
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
In the next example we'll look at calling both standard library and Boost.Math
functions from within generic code. We'll also show how to cope with
@ -113,7 +105,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -31,8 +31,6 @@
Similar to the generic derivative example, we can calculate integrals
in a similar manner:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">value_type</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">function_type</span><span class="special">&gt;</span>
<span class="keyword">inline</span> <span class="identifier">value_type</span> <span class="identifier">integral</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">a</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">b</span><span class="special">,</span>
@ -72,15 +70,11 @@
<span class="keyword">return</span> <span class="identifier">I</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
The following sample program shows how the function can be called, we
begin by defining a function object, which when integrated should yield
the Bessel J function:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">value_type</span><span class="special">&gt;</span>
<span class="keyword">class</span> <span class="identifier">cyl_bessel_j_integral_rep</span>
<span class="special">{</span>
@ -99,10 +93,6 @@
<span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">x</span><span class="special">;</span>
<span class="special">};</span>
</pre>
<p>
</p>
<p>
</p>
<pre class="programlisting"> <span class="comment">/* The function can now be called as follows: */</span>
<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">**)</span>
<span class="special">{</span>
@ -151,12 +141,10 @@
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="identifier">mp_type</span><span class="special">(</span><span class="number">123</span><span class="special">)</span> <span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -42,15 +42,11 @@
If we were to implement this at double precision using Boost.Math's facilities
for the Gamma and Bessel function calls it would look like this:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">JEL1</span><span class="special">(</span><span class="keyword">double</span> <span class="identifier">v</span><span class="special">,</span> <span class="keyword">double</span> <span class="identifier">z</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">v</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span><span class="special">(</span><span class="identifier">z</span> <span class="special">/</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
Calling this function as:
</p>
@ -66,16 +62,12 @@
type <code class="computeroutput"><span class="identifier">cpp_dec_float_50</span></code>
as the argument type:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span>
<span class="identifier">JEL2</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span> <span class="identifier">z</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">v</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">pow</span><span class="special">(</span><span class="identifier">z</span> <span class="special">/</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
The implementation is almost the same as before, but with one key difference
- we can no longer call <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>,
@ -107,8 +99,6 @@
type (<code class="computeroutput"><span class="keyword">float</span></code>, <code class="computeroutput"><span class="keyword">double</span></code> etc), or with a multiprecision
type:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Float</span><span class="special">&gt;</span>
<span class="identifier">Float</span> <span class="identifier">JEL3</span><span class="special">(</span><span class="identifier">Float</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">Float</span> <span class="identifier">z</span><span class="special">)</span>
<span class="special">{</span>
@ -116,8 +106,6 @@
<span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">v</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">z</span> <span class="special">/</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
Once again the code is almost the same as before, but the call to <code class="computeroutput"><span class="identifier">pow</span></code> has changed yet again. We need
the call to resolve to either <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pow</span></code>
@ -165,8 +153,6 @@
from Boost.Math which calculates the return type of mixed-argument functions,
here's how the new code looks now:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Float1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Float2</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">promote_args</span><span class="special">&lt;</span><span class="identifier">Float1</span><span class="special">,</span> <span class="identifier">Float2</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="identifier">JEL4</span><span class="special">(</span><span class="identifier">Float1</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">Float2</span> <span class="identifier">z</span><span class="special">)</span>
@ -175,8 +161,6 @@
<span class="keyword">return</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">v</span> <span class="special">+</span> <span class="number">1</span><span class="special">)</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">cyl_bessel_j</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">pow</span><span class="special">(</span><span class="identifier">z</span> <span class="special">/</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">v</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
As you can see the two arguments to the function are now separate template
types, and the return type is computed using the <code class="computeroutput"><span class="identifier">promote_args</span></code>
@ -217,7 +201,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -55,8 +55,6 @@
float. Let's make a generic template subroutine using this three-point
central difference rule. In particular:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">value_type</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">function_type</span><span class="special">&gt;</span>
<span class="identifier">value_type</span> <span class="identifier">derivative</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">value_type</span> <span class="identifier">dx</span><span class="special">,</span> <span class="identifier">function_type</span> <span class="identifier">func</span><span class="special">)</span>
<span class="special">{</span>
@ -78,8 +76,6 @@
<span class="keyword">return</span> <span class="special">((</span><span class="identifier">fifteen_m1</span> <span class="special">-</span> <span class="identifier">six_m2</span><span class="special">)</span> <span class="special">+</span> <span class="identifier">m3</span><span class="special">)</span> <span class="special">/</span> <span class="identifier">ten_dx1</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
The <code class="computeroutput"><span class="identifier">derivative</span><span class="special">()</span></code>
template function can be used to compute the first derivative of any
@ -94,8 +90,6 @@
The code below computes the derivative in Equation 3 for float, double
and boost's multiple-precision type cpp_dec_float_50.
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iomanip</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_dec_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -157,8 +151,6 @@
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
The expected value of the derivative is 0.5. This central difference
rule in this example is ill-conditioned, meaning it suffers from slight
@ -174,8 +166,6 @@
result obtained from a call to <span class="emphasis"><em>gamma_p_derivative</em></span>,
the results agree to approximately 44 digits:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">gd</span> <span class="special">=</span> <span class="identifier">derivative</span><span class="special">(</span>
<span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">2</span><span class="special">),</span>
<span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">1.0E-9</span><span class="special">),</span>
@ -192,12 +182,10 @@
<span class="comment">// 2.70670566473225383787998989944968806815253190143120e-01</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">gamma_p_derivative</span><span class="special">(</span><span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">2</span><span class="special">),</span> <span class="identifier">cpp_dec_float_50</span><span class="special">(</span><span class="number">2</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -38,8 +38,6 @@
The following code evaluates <code class="computeroutput"><span class="identifier">sin</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code> as a polynomial, accurate to at least
64 decimal places:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="number">64</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mp_type</span><span class="special">;</span>
@ -126,8 +124,6 @@
<span class="keyword">return</span> <span class="identifier">sum</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
Calling the function like so:
</p>
@ -142,7 +138,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -143,11 +143,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.gmp_float.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.gmp_float.__ulink_url__http___gmplib_org__gmp__ulink__example_"></a></span><a class="link" href="gmp_float.html#boost_multiprecision.tut.floats.gmp_float.__ulink_url__http___gmplib_org__gmp__ulink__example_">
GMP example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.gmp_float.gmp_example"></a></span><a class="link" href="gmp_float.html#boost_multiprecision.tut.floats.gmp_float.gmp_example"> GMP example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -173,12 +170,10 @@
<span class="identifier">mpf_init</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span>
<span class="identifier">mpf_set</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">a</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -226,11 +226,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.floats.mpfr_float.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.mpfr_float.__ulink_url__http___www_mpfr_org__mpfr__ulink__example_"></a></span><a class="link" href="mpfr_float.html#boost_multiprecision.tut.floats.mpfr_float.__ulink_url__http___www_mpfr_org__mpfr__ulink__example_">
MPFR example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.floats.mpfr_float.mpfr_example"></a></span><a class="link" href="mpfr_float.html#boost_multiprecision.tut.floats.mpfr_float.mpfr_example"> MPFR example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">mpfr</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -256,8 +253,6 @@
<span class="identifier">mpfr_init</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
<span class="identifier">mpfr_set</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">b</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">GMP_RNDN</span><span class="special">);</span>
</pre>
<p>
</p>
<div class="footnotes">
<br><hr style="width:100; text-align:left;margin-left: 0">
<div id="ftn.boost_multiprecision.tut.floats.mpfr_float.f0" class="footnote"><p><a href="#boost_multiprecision.tut.floats.mpfr_float.f0" class="para"><sup class="para">[2] </sup></a>
@ -267,7 +262,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -166,7 +166,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -0,0 +1,185 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Input Output</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../tut.html" title="Tutorial">
<link rel="prev" href="limits/how_to_tell.html" title="How to Determine the Kind of a Number From std::numeric_limits">
<link rel="next" href="../ref.html" title="Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="limits/how_to_tell.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.input_output"></a><a class="link" href="input_output.html" title="Input Output">Input Output</a>
</h3></div></div></div>
<h5>
<a name="boost_multiprecision.tut.input_output.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.input_output.loopback_testing"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.loopback_testing">Loopback
testing</a>
</h5>
<p>
<span class="emphasis"><em>Loopback</em></span> or <span class="emphasis"><em>round-tripping</em></span> refers
to writing out a value as a decimal digit string using <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iostream</span></code>,
usually to a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span></code>, and then reading the string
back in to another value, and confirming that the two values are identical.
A trivial example using <code class="computeroutput"><span class="keyword">float</span></code>
is:
</p>
<pre class="programlisting"><span class="keyword">float</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Value to round-trip.</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span> <span class="comment">// Read and write std::stringstream.</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span> <span class="comment">// Ensure all potentially significant bits are output.</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">fmtflags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios_base</span><span class="special">::</span><span class="identifier">scientific</span><span class="special">));</span> <span class="comment">// Use scientific format.</span>
<span class="identifier">ss</span> <span class="special">&lt;&lt;</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Output to string.</span>
<span class="keyword">float</span> <span class="identifier">read</span><span class="special">;</span> <span class="comment">// Expected.</span>
<span class="identifier">ss</span> <span class="special">&gt;&gt;</span> <span class="identifier">read</span><span class="special">;</span> <span class="comment">// Read decimal digits string from stringstream.</span>
<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">write</span><span class="special">,</span> <span class="identifier">read</span><span class="special">);</span> <span class="comment">// Should be the same.</span>
</pre>
<p>
and this can be run in a loop for all possible values of a 32-bit float.
For other floating-point types <code class="computeroutput"><span class="identifier">T</span></code>,
including built-in <code class="computeroutput"><span class="keyword">double</span></code>, it
takes far too long to test all values, so a reasonable test strategy is to
use a large number of random values.
</p>
<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">write</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span> <span class="comment">// Ensure all potentially significant bits are output.</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">flags</span><span class="special">(</span><span class="identifier">f</span><span class="special">);</span> <span class="comment">// Changed from default iostream format flags if desired.</span>
<span class="identifier">ss</span> <span class="special">&lt;&lt;</span> <span class="identifier">write</span><span class="special">;</span> <span class="comment">// Output to stringstream.</span>
<span class="identifier">T</span> <span class="identifier">read</span><span class="special">;</span>
<span class="identifier">ss</span> <span class="special">&gt;&gt;</span> <span class="identifier">read</span><span class="special">;</span> <span class="comment">// Get read using operator&gt;&gt; from stringstream.</span>
<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
<span class="identifier">read</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">());</span> <span class="comment">// Get read by converting from decimal digits string representation of write.</span>
<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
<span class="identifier">read</span> <span class="special">=</span> <span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;(</span><span class="identifier">write</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="identifier">f</span><span class="special">));</span> <span class="comment">// Get read using format specified when written.</span>
<span class="identifier">BOOST_CHECK_EQUAL</span><span class="special">(</span><span class="identifier">read</span><span class="special">,</span> <span class="identifier">write</span><span class="special">);</span>
</pre>
<p>
The test at <a href="../../../../test/test_cpp_bin_float_io.cpp" target="_top">test_cpp_bin_float_io.cpp</a>
allows any floating-point type to be <span class="emphasis"><em>round_tripped</em></span> using
a wide range of fairly random values. It also includes tests compared a collection
of <a href="../../../../test/string_data.ipp" target="_top">stringdata</a> test cases
in a file.
</p>
<h5>
<a name="boost_multiprecision.tut.input_output.h1"></a>
<span class="phrase"><a name="boost_multiprecision.tut.input_output.comparing_with_output_using_buil"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.comparing_with_output_using_buil">Comparing
with output using Built-in types</a>
</h5>
<p>
One can make some comparisons with the output of
</p>
<pre class="programlisting"><span class="special">&lt;</span><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">53</span><span class="special">,</span> <span class="identifier">digit_count_2</span><span class="special">&gt;</span> <span class="special">&gt;</span>
</pre>
<p>
which has the same number of significant bits (53) as 64-bit double precision
floating-point.
</p>
<p>
However, although most outputs are identical, there are differences on some
platforms caused by the implementation-dependent behaviours allowed by the
C99 specification <a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf" target="_top">C99
ISO/IEC 9899:TC2</a>, incorporated by C++.
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>"For e, E, f, F, g, and G conversions, if the number of
significant decimal digits is at most DECIMAL_DIG, then the result should
be correctly rounded. If the number of significant decimal digits is more
than DECIMAL_DIG but the source value is exactly representable with DECIMAL_DIG
digits, then the result should be an exact representation with trailing
zeros. Otherwise, the source value is bounded by two adjacent decimal strings
L &lt; U, both having DECIMAL_DIG significant digits; the value of the
resultant decimal string D should satisfy L&lt;= D &lt;= U, with the extra
stipulation that the error should have a correct sign for the current rounding
direction."</em></span>
</p></blockquote></div>
<p>
So not only is correct rounding for the full number of digits not required,
but even if the <span class="bold"><strong>optional</strong></span> recomended practice
is followed, then the value of these last few digits is unspecified as long
as the value is within certain bounds.
</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
Do not expect the output from different platforms to be <span class="bold"><strong>identical</strong></span>,
but <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>, <code class="computeroutput"><span class="identifier">cpp_bin_float</span></code> (and other backends) outputs
should be correctly rounded to the number of digits requested by the set
precision and format.
</p></td></tr>
</table></div>
<h5>
<a name="boost_multiprecision.tut.input_output.h2"></a>
<span class="phrase"><a name="boost_multiprecision.tut.input_output.macro_boost_mp_min_exponent_digi"></a></span><a class="link" href="input_output.html#boost_multiprecision.tut.input_output.macro_boost_mp_min_exponent_digi">Macro
BOOST_MP_MIN_EXPONENT_DIGITS</a>
</h5>
<p>
<a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf" target="_top">C99
Standard</a> for format specifiers, 7.19.6 Formatted input/output functions
requires:
</p>
<p>
"The exponent always contains at least two digits, and only as many
more digits as necessary to represent the exponent."
</p>
<p>
So to conform to the C99 standard (incorporated by C++)
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">2</span>
</pre>
<p>
Confusingly, Microsoft (and MinGW) do not conform to this standard and provide
<span class="bold"><strong>at least three digits</strong></span>, for example <code class="computeroutput"><span class="number">1e+001</span></code>. So if you want the output to match
that from built-in floating-point types on compilers that use Microsofts
runtime then use:
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">3</span>
</pre>
<p>
Also useful to get the minimum exponent field width is
</p>
<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_MP_MIN_EXPONENT_DIGITS</span> <span class="number">1</span>
</pre>
<p>
producing a compact output like <code class="computeroutput"><span class="number">2e+4</span></code>,
useful when conserving space is important.
</p>
<p>
Larger values are also supported, for example, value 4 for <code class="computeroutput"><span class="number">2e+0004</span></code> which may be useful to ensure that
columns line up.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="limits/how_to_tell.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -33,7 +33,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -158,8 +158,8 @@
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">intersect</span><span class="special">(</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
</pre>
<p>
Returns the interval which is the intersection of the <span class="emphasis"><em>a</em></span>
@ -168,8 +168,8 @@
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">hull</span><span class="special">(</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
<span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
</pre>
<p>
Returns the interval which is the union of <span class="emphasis"><em>a</em></span> and
@ -231,12 +231,9 @@
</p>
<h6>
<a name="boost_multiprecision.tut.interval.mpfi.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.interval.mpfi.__ulink_url__http___perso_ens_lyon_fr_nathalie_revol_software_html__mpfi__ulink__example_"></a></span><a class="link" href="mpfi.html#boost_multiprecision.tut.interval.mpfi.__ulink_url__http___perso_ens_lyon_fr_nathalie_revol_software_html__mpfi__ulink__example_">
MPFI
<span class="phrase"><a name="boost_multiprecision.tut.interval.mpfi.mpfi_example"></a></span><a class="link" href="mpfi.html#boost_multiprecision.tut.interval.mpfi.mpfi_example"> MPFI
example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">mpfi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -265,12 +262,10 @@
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">overlap</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">subset</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -186,7 +186,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -341,10 +341,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.ints.cpp_int.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.cpp_int.example_"></a></span><a class="link" href="cpp_int.html#boost_multiprecision.tut.ints.cpp_int.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.cpp_int.example"></a></span><a class="link" href="cpp_int.html#boost_multiprecision.tut.ints.cpp_int.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -364,12 +362,10 @@
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">u</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 100!</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -33,7 +33,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -31,8 +31,6 @@
be manipulated, we'll start with an often needed calculation of <span class="emphasis"><em>2<sup>n</sup> -
1</em></span>, which we could obviously implement like this:
</p>
<p>
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_int</span><span class="special">;</span>
<span class="identifier">cpp_int</span> <span class="identifier">b1</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">)</span>
@ -41,8 +39,6 @@
<span class="keyword">return</span> <span class="special">(</span><span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">n</span><span class="special">)</span> <span class="special">-</span> <span class="number">1</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
Calling:
</p>
@ -55,16 +51,12 @@
<p>
However, we could equally just set the n'th bit in the result, like this:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">cpp_int</span> <span class="identifier">b2</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">cpp_int</span> <span class="identifier">r</span><span class="special">(</span><span class="number">0</span><span class="special">);</span>
<span class="keyword">return</span> <span class="special">--</span><span class="identifier">bit_set</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">n</span><span class="special">);</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
Note how the <code class="computeroutput"><span class="identifier">bit_set</span></code>
function sets the specified bit in its argument and then returns a reference
@ -89,7 +81,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -31,8 +31,6 @@
factorials which will fit into a 128-bit integer. At the end of the routine
we do some fancy iostream formatting of the results:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iomanip</span><span class="special">&gt;</span>
@ -93,8 +91,6 @@
<span class="special">}</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
The output from this routine is:
</p>
@ -140,7 +136,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -106,10 +106,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.ints.gmp_int.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.gmp_int.example_"></a></span><a class="link" href="gmp_int.html#boost_multiprecision.tut.ints.gmp_int.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.gmp_int.example"></a></span><a class="link" href="gmp_int.html#boost_multiprecision.tut.ints.gmp_int.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -127,12 +125,10 @@
<span class="identifier">mpz_init</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span>
<span class="identifier">mpz_set</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -80,10 +80,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.ints.tom_int.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.tom_int.example_"></a></span><a class="link" href="tom_int.html#boost_multiprecision.tut.ints.tom_int.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.ints.tom_int.example"></a></span><a class="link" href="tom_int.html#boost_multiprecision.tut.ints.tom_int.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">tommath</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">tom_int</span> <span class="identifier">v</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
@ -113,12 +111,10 @@
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">e</span><span class="special">.</span><span class="identifier">what</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -0,0 +1,100 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Numeric Limits</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../tut.html" title="Tutorial">
<link rel="prev" href="serial.html" title="Boost.Serialization Support">
<link rel="next" href="limits/constants.html" title="std::numeric_limits&lt;&gt; constants">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="serial.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits/constants.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.limits"></a><a class="link" href="limits.html" title="Numeric Limits">Numeric Limits</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="limits/constants.html">std::numeric_limits&lt;&gt;
constants</a></span></dt>
<dt><span class="section"><a href="limits/functions.html">std::numeric_limits&lt;&gt;
functions</a></span></dt>
<dt><span class="section"><a href="limits/limits32.html">Numeric limits
for 32-bit platform</a></span></dt>
<dt><span class="section"><a href="limits/how_to_tell.html">How to
Determine the Kind of a Number From <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code></a></span></dt>
</dl></div>
<p>
Boost.Multiprecision tries hard to implement <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
for all types as far as possible and meaningful because experience with Boost.Math
has shown that this aids portability.
</p>
<p>
The <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf" target="_top">C++
standard library</a> defines <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
in section 18.3.2.
</p>
<p>
This in turn refers to the C standard <a href="http://www.open-std.org/jtc1/sc22/wg11/docs/n507.pdf" target="_top">SC22/WG11
N507 DRAFT INTERNATIONAL ISO/IEC STANDARD WD 10967-1</a> Information
technology Language independent arithmetic Part 1: Integer and Floating point
arithmetic.
</p>
<p>
That C Standard in turn refers to
</p>
<p>
<a href="http://754r.ucbtest.org/standards/754.pdf" target="_top">IEEE754 IEEE Standard
for Binary Floating-Point Arithmetic</a>
</p>
<p>
There is a useful summary at <a href="http://www.cplusplus.com/reference/limits/numeric_limits/" target="_top">C++
reference</a>.
</p>
<p>
The chosen backend often determines how completely <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
is available.
</p>
<p>
Compiler options, processor type, and definition of macros or assembler instructions
to control denormal numbers will alter the values in the tables given below.
</p>
<div class="warning"><table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/src/images/warning.png"></td>
<th align="left">Warning</th>
</tr>
<tr><td align="left" valign="top"><p>
GMP's <code class="computeroutput"><span class="identifier">mpf_t</span></code> does not have
a concept of overflow: operations that lead to overflow eventually run
of out of resources and terminate with stack overflow (often after several
seconds).
</p></td></tr>
</table></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="serial.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits/constants.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,705 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>std::numeric_limits&lt;&gt; constants</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../limits.html" title="Numeric Limits">
<link rel="prev" href="../limits.html" title="Numeric Limits">
<link rel="next" href="functions.html" title="std::numeric_limits&lt;&gt; functions">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../limits.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="functions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.limits.constants"></a><a class="link" href="constants.html" title="std::numeric_limits&lt;&gt; constants">std::numeric_limits&lt;&gt;
constants</a>
</h4></div></div></div>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.is_specialized"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.is_specialized">is_specialized</a>
</h5>
<p>
<code class="computeroutput"><span class="keyword">true</span></code> for all arithmetic types
(integer, floating and fixed-point) for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">numeric_limits</span></code>
is specialized.
</p>
<p>
A typical test is
</p>
<pre class="programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span> <span class="special">==</span> <span class="keyword">false</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"type "</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="string">" is not specialized for std::numeric_limits!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// ...</span>
<span class="special">}</span>
</pre>
<p>
Typically <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span></code>
is <code class="computeroutput"><span class="keyword">true</span></code> for all <code class="computeroutput"><span class="identifier">T</span></code> where the compile-time constant members
of <code class="computeroutput"><span class="identifier">numeric_limits</span></code> are indeed
known at compile time, and don't vary at runtime. For example floating
point types with runtime-variable precision such as <code class="computeroutput"><span class="identifier">mpfr_float</span></code>
have no <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
specialization as it would be impossible to define all the members at compile
time. In contrast the precision of a type such as <code class="computeroutput"><span class="identifier">mpfr_float_50</span></code>
is known at compile time, and so it <span class="emphasis"><em>does</em></span> have a <code class="computeroutput"><span class="identifier">numeric_limits</span></code> specialization.
</p>
<p>
Note that not all the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
member constants and functions are meaningful for all user-defined types
(UDT), such as the decimal and binary multiprecision types provided here.
More information on this is given in the sections below.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h1"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.infinity"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.infinity">infinity</a>
</h5>
<p>
For floating-point types, &#8734; is defined wherever possible, but clearly infinity
is meaningless for __arbitrary_precision arithmetic backends, and there
is one floating point type (GMP's <code class="computeroutput"><span class="identifier">mpf_t</span></code>,
see <a class="link" href="../floats/gmp_float.html" title="gmp_float">gmp_float</a>)
which has no notion of infinity or NaN at all.
</p>
<p>
A typical test whether infinity is implemented is
</p>
<pre class="programlisting"><span class="keyword">if</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_infinity</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">infinity</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
and using tests like this is strongly recommended to improve portability.
</p>
<p>
If the backend is switched to a type that does not support infinity then,
without checks like this, there will be trouble.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h2"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.is_signed"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.is_signed">is_signed</a>
</h5>
<p>
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_signed</span> <span class="special">==</span>
<span class="keyword">true</span></code> if the type <code class="computeroutput"><span class="identifier">T</span></code>
is signed.
</p>
<p>
For built-in binary types, the sign is held in a single bit, but for other
types (cpp_dec_float and cpp_bin_float) it may be a separate storage element,
usually <code class="computeroutput"><span class="keyword">bool</span></code>.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h3"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.is_exact"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.is_exact">is_exact</a>
</h5>
<p>
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span> <span class="special">==</span>
<span class="keyword">true</span></code> if type T uses exact representations.
</p>
<p>
This is defined as <code class="computeroutput"><span class="keyword">true</span></code> for
all integer types and <code class="computeroutput"><span class="keyword">false</span></code>
for floating-point types.
</p>
<p>
<a href="http://stackoverflow.com/questions/14203654/stdnumeric-limitsis-exact-what-is-a-usable-definition" target="_top">A
usable definition</a> has been discussed.
</p>
<p>
ISO/IEC 10967-1, Language independent arithmetic, noted by the C++ Standard
defines
</p>
<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">floating</span> <span class="identifier">point</span> <span class="identifier">type</span> <span class="identifier">F</span> <span class="identifier">shall</span> <span class="identifier">be</span> <span class="identifier">a</span> <span class="identifier">finite</span> <span class="identifier">subset</span> <span class="identifier">of</span> <span class="special">[</span><span class="identifier">real</span><span class="special">].</span>
</pre>
<p>
The important practical distinction is that all integers (up to <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>)
can be stored exactly.
</p>
<p>
<a href="http://en.wikipedia.org/wiki/Rational_number" target="_top">Rational</a>
types using two integer types are also exact.
</p>
<p>
Floating-point types <span class="bold"><strong>cannot store all real values</strong></span>
(those in the set of &#8476;) <span class="bold"><strong>exactly</strong></span>. For example,
0.5 can be stored exactly in a binary floating-point, but 0.1 cannot. What
is stored is the nearest representable real value, that is, rounded to
nearest.
</p>
<p>
Fixed-point types (usually decimal) are also defined as exact, in that
they only store a <span class="bold"><strong>fixed precision</strong></span>, so
half cents or pennies (or less) cannot be stored. The results of computations
are rounded up or down, just like the result of integer division stored
as an integer result.
</p>
<p>
There are number of proposals to <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3407.html" target="_top">add
Decimal Floating Point Support to C++</a>.
</p>
<p>
<a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2849.pdf" target="_top">Decimal
TR</a>.
</p>
<p>
And also <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3352.html" target="_top">C++
Binary Fixed-Point Arithmetic</a>.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h4"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.is_bounded"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.is_bounded">is_bounded</a>
</h5>
<p>
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_bounded</span> <span class="special">==</span>
<span class="keyword">true</span></code> if the set of values represented
by the type <code class="computeroutput"><span class="identifier">T</span></code> is finite.
</p>
<p>
This is <code class="computeroutput"><span class="keyword">true</span></code> for all built-in
integer, fixed and floating-point types, and most multi-precision types.
</p>
<p>
It is only <code class="computeroutput"><span class="keyword">false</span></code> for a few
__arbitrary_precision types like <code class="computeroutput"><span class="identifier">cpp_int</span></code>.
</p>
<p>
Rational and fixed-exponent representations are exact but not integer.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h5"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.is_modulo"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.is_modulo">is_modulo</a>
</h5>
<p>
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_modulo</span></code> is defined as <code class="computeroutput"><span class="keyword">true</span></code> if adding two positive values of type
T can yield a result less than either value.
</p>
<p>
<code class="computeroutput"><span class="identifier">is_modulo</span> <span class="special">==</span>
<span class="keyword">true</span></code> means that the type does not
overflow, but, for example, 'wraps around' to zero, when adding one to
the <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code>
value.
</p>
<p>
For most built-in integer types, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;::</span><span class="identifier">is_modulo</span></code>
is <code class="computeroutput"><span class="keyword">true</span></code>.
</p>
<p>
<code class="computeroutput"><span class="keyword">bool</span></code> is the only exception.
</p>
<p>
The modulo behaviour is sometimes useful, but also can be unexpected, and
sometimes undesired, behaviour.
</p>
<p>
Overflow of signed integers can be especially unexpected, possibly causing
change of sign.
</p>
<p>
Boost.Multiprecision integer type <code class="computeroutput"><span class="identifier">cpp_int</span></code>
is not modulo because as an __arbitrary_precision types, it expands to
hold any value that the machine resources permit.
</p>
<p>
However fixed precision <a class="link" href="../ints/cpp_int.html" title="cpp_int">cpp_int</a>'s
may be modulo if they are unchecked (i.e. they behave just like built in
integers), but not if they are checked (overflow causes an exception to
be raised).
</p>
<p>
Built-in and multi-precision floating-point types are normally not modulo.
</p>
<p>
Where possible, overflow is to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;::</span><span class="identifier">infinity</span><span class="special">()</span></code>, provided <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;::</span><span class="identifier">has_infinity</span>
<span class="special">==</span> <span class="keyword">true</span></code>.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h6"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.radix"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.radix">radix</a>
</h5>
<p>
Constant <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">radix</span></code> returns either 2 (for built-in
and binary types) or 10 (for decimal types).
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h7"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.digits"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.digits">digits</a>
</h5>
<p>
The number of <code class="computeroutput"><span class="identifier">radix</span></code> digits
that be represented without change:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
for integer types, the number of <span class="bold"><strong>non-sign bits</strong></span>
in the significand.
</li>
<li class="listitem">
for floating types, the number of <span class="bold"><strong>radix digits</strong></span>
in the significand.
</li>
</ul></div>
<p>
The values include any implicit bit, so for example, for the ubiquious
<code class="computeroutput"><span class="keyword">double</span></code> using 64 bits (<a href="http://en.wikipedia.org/wiki/Double_precision_floating-point_format" target="_top">IEEE
binary64 </a>), <code class="computeroutput"><span class="identifier">digits</span></code>
== 53, even though there are only 52 actual bits of the significand stored
in the representation. The value of <code class="computeroutput"><span class="identifier">digits</span></code>
reflects the fact that there is one implicit bit which is always set to
1.
</p>
<p>
The Boost.Multiprecision binary types do not use an implicit bit, so the
<code class="computeroutput"><span class="identifier">digits</span></code> member reflects
exactly how many bits of precision were requested:
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">53</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">float64</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float</span><span class="special">&lt;</span><span class="number">113</span><span class="special">,</span> <span class="identifier">digit_base_2</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">float128</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">float64</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">==</span> <span class="number">53.</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">float128</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">==</span> <span class="number">113.</span>
</pre>
<p>
For the most common case of <code class="computeroutput"><span class="identifier">radix</span>
<span class="special">==</span> <span class="number">2</span></code>,
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span></code> is the number of bits in the representation,
not counting any sign bit.
</p>
<p>
For a decimal integer type, when <code class="computeroutput"><span class="identifier">radix</span>
<span class="special">==</span> <span class="number">10</span></code>,
it is the number of decimal digits.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h8"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.digits10"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.digits10">digits10</a>
</h5>
<p>
Constant <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits10</span></code> returns the number of decimal
digits that can be represented without change or loss.
</p>
<p>
For example, <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">digits10</span></code> is 2.
</p>
<p>
This somewhat inscrutable definition means that an <code class="computeroutput"><span class="keyword">unsigned</span>
<span class="keyword">char</span></code> can hold decimal values <code class="computeroutput"><span class="number">0.</span><span class="special">.</span><span class="number">99</span></code>
without loss of precision or accuracy, usually from truncation.
</p>
<p>
Had the definition been 3 then that would imply it could hold 0..999, but
as we all know, an 8-bit <code class="computeroutput"><span class="keyword">unsigned</span>
<span class="keyword">char</span></code> can only hold 0..255, and an
attempt to store 256 or more will involve loss or change.
</p>
<p>
For bounded integers, it is thus <span class="bold"><strong>one less</strong></span>
than number of decimal digits you need to display the biggest integer
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>.
This value can be used to predict the layout width required for
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpos</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">)()</span> <span class="comment">// +32767</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span>
<span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">)()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// -32767</span>
</pre>
<p>
For example, <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span></code>
is often stored in 16 bits, so the maximum value is 0xFFFF or 65535.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpos</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">)()</span> <span class="comment">// 65535</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">+</span><span class="number">1</span> <span class="special">+</span><span class="number">1</span><span class="special">)</span> <span class="comment">// digits10+1, and +1 for sign.</span>
<span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="keyword">short</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">)()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0</span>
</pre>
<p>
For bounded floating-point types, if we create a <code class="computeroutput"><span class="keyword">double</span></code>
with a value with <code class="computeroutput"><span class="identifier">digits10</span></code>
(usually 15) decimal digits, <code class="computeroutput"><span class="number">1e15</span></code>
or <code class="computeroutput"><span class="number">1000000000000000</span></code> :
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1e15</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">dp1</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="number">1</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span> <span class="special">&lt;&lt;</span> <span class="identifier">dp1</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// 1000000000000000</span>
<span class="comment">// 1000000000000001</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">dp1</span> <span class="special">-</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1</span>
</pre>
<p>
and we can increment this value to <code class="computeroutput"><span class="number">1000000000000001</span></code>
as expected and show the difference too.
</p>
<p>
But if we try to repeat this with more than <code class="computeroutput"><span class="identifier">digits10</span></code>
digits,
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1e16</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">dp1</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="number">1</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span> <span class="special">&lt;&lt;</span> <span class="identifier">dp1</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// 10000000000000000</span>
<span class="comment">// 10000000000000000</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">dp1</span> <span class="special">-</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0 !!!</span>
</pre>
<p>
then we find that when we add one it has no effect, and display show that
there is loss of precision. See <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">Loss
of significance or cancellation error</a>.
</p>
<p>
So <code class="computeroutput"><span class="identifier">digits10</span></code> is the number
of decimal digits <span class="bold"><strong>guaranteed</strong></span> to be correct.
</p>
<p>
For example, 'round-tripping' for <code class="computeroutput"><span class="keyword">double</span></code>:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
If a decimal string with at most <code class="computeroutput"><span class="identifier">digits10</span></code>(
== 15) significant decimal digits is converted to <code class="computeroutput"><span class="keyword">double</span></code>
and then converted back to the same number of significant decimal digits,
then the final string will match the original 15 decimal digit string.
</li>
<li class="listitem">
If a <code class="computeroutput"><span class="keyword">double</span></code> floating-point
number is converted to a decimal string with at least 17 decimal digits
and then converted back to <code class="computeroutput"><span class="keyword">double</span></code>,
then the result will be binary indentical to the original <code class="computeroutput"><span class="keyword">double</span></code> value.
</li>
</ul></div>
<p>
For most purposes, you will much more likely want <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;&gt;::</span><span class="identifier">max_digits10</span></code>,
the number of decimal digits that ensure that a change of one least significant
bit (ULP) produces a different decimal digits string.
</p>
<p>
For nearly all floating-point types, <code class="computeroutput"><span class="identifier">max_digits10</span></code>
is <code class="computeroutput"><span class="identifier">digits10</span><span class="special">+</span><span class="number">2</span></code>, but you should use <code class="computeroutput"><span class="identifier">max_digits10</span></code>
where possible.
</p>
<p>
If <code class="computeroutput"><span class="identifier">max_digits10</span></code> is not
available, you should using the <a href="http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF" target="_top">Kahan
formula for floating-point type T</a>
</p>
<pre class="programlisting"><span class="identifier">max_digits10</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">;</span>
</pre>
<p>
The factor is log<sub>10</sub>(2) = 0.3010 but must be evaluated at compile time using
only integers.
</p>
<p>
(See also <a href="http://www.loria.fr/~zimmerma/mca/mca-cup-0.5.9.pdf" target="_top">Richard
P. Brent and Paul Zimmerman, Modern Computer Arithmetic</a> Equation
3.8 on page 116.).
</p>
<p>
The extra two (or 3) least significant digits are 'noisy' and may be junk,
but if you want to 'round-trip' - printing a value out and reading it back
in - you must use <code class="computeroutput"><span class="identifier">os</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">)</span></code>.
For at least one popular compiler, you must also use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span></code>
format.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h9"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.max_digits10"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.max_digits10">max_digits10</a>
</h5>
<p>
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span></code> was added for floating-point
because <code class="computeroutput"><span class="identifier">digits10</span></code> decimal
digits are insufficient to show a least significant bit (ULP) change giving
puzzling displays like
</p>
<pre class="programlisting"><span class="number">0.666666666666667</span> <span class="special">!=</span> <span class="number">0.666666666666667</span>
</pre>
<p>
from failure to 'round-trip', for example:
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">write</span> <span class="special">=</span> <span class="number">2.</span><span class="special">/</span><span class="number">3</span><span class="special">;</span> <span class="comment">// Any arbitrary value that cannot be represented exactly.</span>
<span class="keyword">double</span> <span class="identifier">read</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">s</span><span class="special">;</span>
<span class="identifier">s</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">digits10</span><span class="special">);</span> <span class="comment">// or `float64_t` for 64-bit IEE754 double.</span>
<span class="identifier">s</span> <span class="special">&lt;&lt;</span> <span class="identifier">write</span><span class="special">;</span>
<span class="identifier">s</span> <span class="special">&gt;&gt;</span> <span class="identifier">read</span><span class="special">;</span>
<span class="keyword">if</span><span class="special">(</span><span class="identifier">read</span> <span class="special">!=</span> <span class="identifier">write</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">digits10</span><span class="special">)</span>
<span class="special">&lt;&lt;</span> <span class="identifier">read</span> <span class="special">&lt;&lt;</span> <span class="string">" != "</span> <span class="special">&lt;&lt;</span> <span class="identifier">write</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
If you wish to ensure that a change of one least significant bit (ULP)
produces a different decimal digits string, then <code class="computeroutput"><span class="identifier">max_digits10</span></code>
is the precision to use.
</p>
<p>
For example:
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">double_constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">pi</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 3.1415926535897931</span>
</pre>
<p>
will display &#960; to the maximum possible precision using a <code class="computeroutput"><span class="keyword">double</span></code>.
</p>
<p>
and similarly for a much higher precision type:
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">cpp_dec_float_50</span><span class="special">;</span> <span class="comment">// 50 decimal digits.</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float_50</span><span class="special">;</span>
<span class="identifier">cpp_dec_float_50</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;();</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">pi</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="comment">// 3.141592653589793238462643383279502884197169399375105820974944592307816406</span>
</pre>
<p>
For integer types, <code class="computeroutput"><span class="identifier">max_digits10</span></code>
is implementation-dependant, but is usually <code class="computeroutput"><span class="identifier">digits10</span>
<span class="special">+</span> <span class="number">2</span></code>.
This is the output field width required for the maximum value of the type
T <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>
including a sign and a space.
</p>
<p>
So this will produce neat columns.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">)</span> <span class="special">...</span>
</pre>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
For Microsoft Visual Studio 2010, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span></code>
is wrongly defined as 8. It should be 9.
</p></td></tr>
</table></div>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top">
<p>
For Microsoft Visual Studio, and default float format, a small range
of values approximately 0.0001 to 0.004, with exponent values of 3f2
to 3f6, are wrongly input by one least significant bit, probably every
third value of significand.
</p>
<p>
A workaround is using scientific or exponential format <code class="computeroutput"><span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">scientific</span></code>.
</p>
</td></tr>
</table></div>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
BOOST_NO_CXX11_NUMERIC_LIMITS is a suitable feature-test macro to determine
if <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span></code> is implemented on any
platform. If <code class="computeroutput"><span class="identifier">max_digits10</span></code>
is not available, you should using the <a href="http://www.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF" target="_top">Kahan
formula for floating-point type T</a>. See above.
</p></td></tr>
</table></div>
<p>
For example, to be portable, including older platforms:
</p>
<pre class="programlisting"> <span class="keyword">typedef</span> <span class="keyword">float</span> <span class="identifier">T</span><span class="special">;</span> <span class="comment">// Any type: `double`, cpp_dec_float_50, bin_128bit_double_type ...</span>
<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">2</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">);</span>
<span class="preprocessor">#else</span>
<span class="preprocessor"># if</span> <span class="special">(</span><span class="identifier">_MSC_VER</span> <span class="special">&lt;=</span> <span class="number">1600</span><span class="special">)</span> <span class="comment">// Correct wrong value for float.</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="number">2</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">*</span> <span class="number">3010U</span><span class="special">/</span><span class="number">10000U</span><span class="special">);</span>
<span class="preprocessor"># else</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="preprocessor"># endif</span>
<span class="preprocessor">#endif</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"std::cout.precision = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">x</span> <span class="special">=</span> <span class="number">1.2345678901234567889</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"x = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">x</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">//</span>
</pre>
<p>
which should output:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span> <span class="special">=</span> <span class="number">9</span>
<span class="identifier">x</span> <span class="special">=</span> <span class="number">1.23456789</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h10"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.round_style"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.round_style">round_style</a>
</h5>
<p>
The rounding style determines how the result of floating-point operations
is treated when the result cannot be <span class="bold"><strong>exactly represented</strong></span>
in the significand. Various rounding modes may be provided:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
round to nearest up or down (default for floating-point types).
</li>
<li class="listitem">
round up (toward positive infinity).
</li>
<li class="listitem">
round down (toward negative infinity).
</li>
<li class="listitem">
round toward zero (integer types).
</li>
<li class="listitem">
no rounding (if decimal radix).
</li>
<li class="listitem">
rounding mode is not determinable.
</li>
</ul></div>
<p>
For integer types, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">round_style</span></code>
is always towards zero, so
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_to_zero</span><span class="special">;</span>
</pre>
<p>
A decimal type, <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>
rounds in no particular direction, which is to say it doesn't round at
all. And since there are several guard digits, it's not really the same
as truncation (round toward zero) either.
</p>
<p>
For floating-point types, it is normal to round to nearest.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_to_nearest</span><span class="special">;</span>
</pre>
<p>
See function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">round_error</span></code> for the maximum error (in
ULP) that rounding can cause.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h11"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.has_denorm_loss"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.has_denorm_loss">has_denorm_loss</a>
</h5>
<p>
<code class="computeroutput"><span class="keyword">true</span></code> if a loss of precision
is detected as a <a href="http://en.wikipedia.org/wiki/Denormalization" target="_top">denormalization</a>
loss, rather than an inexact result.
</p>
<p>
Always <code class="computeroutput"><span class="keyword">false</span></code> for integer types.
</p>
<p>
<code class="computeroutput"><span class="keyword">false</span></code> for all types which
do not have <code class="computeroutput"><span class="identifier">has_denorm</span></code>
== <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span></code>.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h12"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.denorm_style"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.denorm_style">denorm_style</a>
</h5>
<p>
<a href="http://en.wikipedia.org/wiki/Denormal_number" target="_top">Denormalized
values</a> are representations with a variable number of exponent bits
that can permit gradual underflow, so that, if type T is <code class="computeroutput"><span class="keyword">double</span></code>.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">denorm_min</span><span class="special">()</span> <span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span>
</pre>
<p>
A type may have any of the following <code class="computeroutput"><span class="keyword">enum</span>
<span class="identifier">float_denorm_style</span></code> values:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_absent</span></code>, if it does not allow
denormalized values. (Always used for all integer and exact types).
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span></code>, if the floating-point
type allows denormalized values.
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_indeterminate</span></code>, if indeterminate
at compile time.
</li>
</ul></div>
<h5>
<a name="boost_multiprecision.tut.limits.constants.h13"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.constants.tinyness_before_rounding"></a></span><a class="link" href="constants.html#boost_multiprecision.tut.limits.constants.tinyness_before_rounding">Tinyness
before rounding</a>
</h5>
<p>
<code class="computeroutput"><span class="keyword">bool</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">tinyness_before</span></code>
</p>
<p>
<code class="computeroutput"><span class="keyword">true</span></code> if a type can determine
that a value is too small to be represent as a normalized value before
rounding it.
</p>
<p>
Generally true for <code class="computeroutput"><span class="identifier">is_iec559</span></code>
floating-point built-in types, but false for integer types.
</p>
<p>
Standard-compliant IEEE 754 floating-point implementations may detect the
floating-point underflow at three predefined moments:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
After computation of a result with absolute value smaller than <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code>,
such implementation detects <span class="emphasis"><em>tinyness before rounding</em></span>
(e.g. UltraSparc).
</li>
<li class="listitem">
After rounding of the result to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">digits</span></code>
bits, if the result is tiny, such implementation detects <span class="emphasis"><em>tinyness
after rounding</em></span> (e.g. SuperSparc).
</li>
<li class="listitem">
If the conversion of the rounded tiny result to subnormal form resulted
in the loss of precision, such implementation detects <span class="emphasis"><em>denorm
loss</em></span>.
</li>
</ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../limits.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="functions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,546 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>std::numeric_limits&lt;&gt; functions</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../limits.html" title="Numeric Limits">
<link rel="prev" href="constants.html" title="std::numeric_limits&lt;&gt; constants">
<link rel="next" href="limits32.html" title="Numeric limits for 32-bit platform">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="constants.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits32.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.limits.functions"></a><a class="link" href="functions.html" title="std::numeric_limits&lt;&gt; functions">std::numeric_limits&lt;&gt;
functions</a>
</h4></div></div></div>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.max_function"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.max_function">max function</a>
</h5>
<p>
Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code>
returns the largest finite value that can be represented by the type T.
If there is no such value (and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">bounded</span></code>
is <code class="computeroutput"><span class="keyword">false</span></code>) then returns <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>.
</p>
<p>
For built-in types there is usually a corresponding MACRO value TYPE_MAX,
where TYPE is CHAR, INT, FLOAT etc.
</p>
<p>
Other types, including those provided by a typedef, for example <code class="computeroutput"><span class="identifier">INT64_T_MAX</span></code> for <code class="computeroutput"><span class="identifier">int64_t</span></code>,
may provide a macro definition.
</p>
<p>
To cater for situations where no <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
specialization is available (for example because the precision of the type
varies at runtime), packaged versions of this (and other functions) are
provided using
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="identifier">T</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">max_value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;();</span>
</pre>
<p>
Of course, these simply use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span></code> if available, but otherwise 'do something
sensible'.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h1"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.lowest_function"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.lowest_function">lowest
function</a>
</h5>
<p>
Since C++11: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">lowest</span><span class="special">()</span></code>
is
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
For integral types, the same as function <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code>.
</li>
<li class="listitem">
For floating-point types, generally the negative of <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code> (but implementation-dependent).
</li>
</ul></div>
<pre class="programlisting"><span class="special">-(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">)()</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">lowest</span><span class="special">();</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h2"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.min_function"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.min_function">min function</a>
</h5>
<p>
Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code>
returns the minimum finite value that can be represented by the type T.
</p>
<p>
For built-in types there is usually a corresponding MACRO value TYPE_MIN,
where TYPE is CHAR, INT, FLOAT etc.
</p>
<p>
Other types, including those provided by a typedef, for example <code class="computeroutput"><span class="identifier">INT64_T_MIN</span></code> for <code class="computeroutput"><span class="identifier">int64_t</span></code>,
may provide a macro definition.
</p>
<p>
For floating-point types, it is more fully defined as the <span class="emphasis"><em>minimum
positive normalized value</em></span>.
</p>
<p>
See <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">denorm_min</span><span class="special">()</span></code>
for the smallest denormalized value, provided
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span>
</pre>
<p>
To cater for situations where no <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
specialization is available (for example because the precision of the type
varies at runtime), packaged versions of this (and other functions) are
provided using
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="identifier">T</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">min_value</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;();</span>
</pre>
<p>
Of course, these simply use <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min</span><span class="special">()</span></code> if available.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h3"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.denorm_min_function"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.denorm_min_function">denorm_min
function</a>
</h5>
<p>
Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">denorm_min</span><span class="special">()</span></code>
returns the smallest <a href="http://en.wikipedia.org/wiki/Denormal_number" target="_top">denormalized
value</a>, provided
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span>
</pre>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">has_denorm</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">denorm_present</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">denorm_min</span><span class="special">();</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 4.9406564584124654e-324</span>
<span class="keyword">int</span> <span class="identifier">exponent</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">significand</span> <span class="special">=</span> <span class="identifier">frexp</span><span class="special">(</span><span class="identifier">d</span><span class="special">,</span> <span class="special">&amp;</span><span class="identifier">exponent</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"exponent = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special">&lt;&lt;</span> <span class="identifier">exponent</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// fffffbcf</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"significand = "</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special">&lt;&lt;</span> <span class="identifier">significand</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 0.50000000000000000</span>
<span class="special">}</span>
<span class="keyword">else</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"No denormalization. "</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
The exponent is effectively reduced from -308 to -324 (though it remains
encoded as zero and leading zeros appear in the significand, thereby losing
precision until the significand reaches zero).
</p>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h4"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.round_error"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.round_error">round_error</a>
</h5>
<p>
Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">round_error</span><span class="special">()</span></code>
returns the maximum error (in units of <a href="http://en.wikipedia.org/wiki/Unit_in_the_last_place" target="_top">ULP</a>)
that can be caused by any basic arithmetic operation.
</p>
<pre class="programlisting"><span class="identifier">round_style</span> <span class="special">==</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">round_indeterminate</span><span class="special">;</span>
</pre>
<p>
The rounding style is indeterminable at compile time.
</p>
<p>
For floating-point types, when rounding is to nearest, only half a bit
is lost by rounding, and <code class="computeroutput"><span class="identifier">round_error</span>
<span class="special">==</span> <span class="number">0.5</span></code>.
In contrast when rounding is towards zero, or plus/minus infinity, we can
loose up to one bit from rounding, and <code class="computeroutput"><span class="identifier">round_error</span>
<span class="special">==</span> <span class="number">1</span></code>.
</p>
<p>
For integer types, rounding always to zero, so at worst almost one bit
can be rounded, so <code class="computeroutput"><span class="identifier">round_error</span>
<span class="special">==</span> <span class="number">1</span></code>.
</p>
<p>
<code class="computeroutput"><span class="identifier">round_error</span><span class="special">()</span></code>
can be used with <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">()</span></code>
to estimate the maximum potential error caused by rounding. For typical
floating-point types, <code class="computeroutput"><span class="identifier">round_error</span><span class="special">()</span> <span class="special">=</span> <span class="number">1</span><span class="special">/</span><span class="number">2</span></code>, so half
epsilon is the maximum potential error.
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">round_err</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">()</span> <span class="comment">// 2.2204460492503131e-016</span>
<span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">round_error</span><span class="special">();</span> <span class="comment">// 1/2</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">round_err</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.1102230246251565e-016</span>
</pre>
<p>
There are, of course, many occasions when much bigger loss of precision
occurs, for exampe, caused by <a href="http://en.wikipedia.org/wiki/Loss_of_significance" target="_top">Loss
of significance or cancellation error</a> or very many iterations.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h5"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.epsilon"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.epsilon">epsilon</a>
</h5>
<p>
Function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">()</span></code>
is meaningful only for non-integral types.
</p>
<p>
It returns the difference between <code class="computeroutput"><span class="number">1.0</span></code>
and the next value representable by the floating-point type T. So it is
a one least-significant-bit change in this floating-point value.
</p>
<p>
For <code class="computeroutput"><span class="keyword">double</span></code> (<code class="computeroutput"><span class="identifier">float_64t</span></code>) it is <code class="computeroutput"><span class="number">2.2204460492503131e-016</span></code>
showing all possibly significant 17 decimal digits.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">eps</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
<span class="keyword">double</span> <span class="identifier">dpeps</span> <span class="special">=</span> <span class="identifier">d</span><span class="special">+</span><span class="identifier">eps</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="comment">// Ensure all trailing zeros are shown.</span>
<span class="special">&lt;&lt;</span> <span class="identifier">d</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span> <span class="comment">// 1.0000000000000000</span>
<span class="special">&lt;&lt;</span> <span class="identifier">dpeps</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 2.2204460492503131e-016</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">dpeps</span> <span class="special">-</span> <span class="identifier">d</span> <span class="comment">// 1.0000000000000002</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
We can explicitly increment by one bit using the function <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">float_next</span><span class="special">()</span></code>
and the result is the same as adding <code class="computeroutput"><span class="identifier">epsilon</span></code>.
</p>
<pre class="programlisting"><span class="keyword">double</span> <span class="identifier">one</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">nad</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">float_next</span><span class="special">(</span><span class="identifier">one</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">nad</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span> <span class="comment">// 1.0000000000000002</span>
<span class="special">&lt;&lt;</span> <span class="identifier">nad</span> <span class="special">-</span> <span class="identifier">one</span> <span class="comment">// 2.2204460492503131e-016</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
Adding any smaller value, like half <code class="computeroutput"><span class="identifier">epsilon</span></code>,
will have no effect on this value.
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span><span class="special">.</span><span class="identifier">precision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">);</span>
<span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">1.</span><span class="special">;</span>
<span class="keyword">double</span> <span class="identifier">eps</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
<span class="keyword">double</span> <span class="identifier">dpeps</span> <span class="special">=</span> <span class="identifier">d</span> <span class="special">+</span> <span class="identifier">eps</span><span class="special">/</span><span class="number">2</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showpoint</span> <span class="comment">// Ensure all trailing zeros are shown.</span>
<span class="special">&lt;&lt;</span> <span class="identifier">dpeps</span> <span class="special">&lt;&lt;</span> <span class="string">"\n"</span> <span class="comment">// 1.0000000000000000</span>
<span class="special">&lt;&lt;</span> <span class="identifier">eps</span><span class="special">/</span><span class="number">2</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// 1.1102230246251565e-016</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">dpeps</span> <span class="special">-</span> <span class="identifier">d</span> <span class="comment">// 0.00000000000000000</span>
<span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
So this cancellation error leaves the values equal, despite adding half
<code class="computeroutput"><span class="identifier">epsilon</span></code>.
</p>
<p>
To achieve greater portability over platform and floating-point type, Boost.Math
and Boost.Multiprecion provide a package of functions that 'do something
sensible' if the standard <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
is not available. To use these <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">tools</span><span class="special">/</span><span class="identifier">precision</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
</p>
<p>
A tolerance might be defined using this version of epsilon thus:
</p>
<pre class="programlisting"><span class="identifier">RealType</span> <span class="identifier">tolerance</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tools</span><span class="special">::</span><span class="identifier">epsilon</span><span class="special">&lt;</span><span class="identifier">RealType</span><span class="special">&gt;()</span> <span class="special">*</span> <span class="number">2</span><span class="special">;</span>
</pre>
<h6>
<a name="boost_multiprecision.tut.limits.functions.h6"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.tolerance_for_floating_point_com"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.tolerance_for_floating_point_com">Tolerance
for Floating-point Comparisons</a>
</h6>
<p>
<code class="computeroutput"><span class="identifier">epsilon</span></code> is very useful
to compute a tolerance when comparing floating-point values, a much more
difficult task than is commonly imagined.
</p>
<p>
For more information you probably want (but still need) see <a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" target="_top">What
Every Computer Scientist Should Know About Floating-Point Arithmetic</a>
</p>
<p>
The naive test comparing the absolute difference between two values and
a tolerance does not give useful results if the values are too large or
too small.
</p>
<p>
So Boost.Test uses an algorithm first devised by Knuth for reliably checking
if floating-point values are close enough.
</p>
<p>
See Donald. E. Knuth. The art of computer programming (vol II). Copyright
1998 Addison-Wesley Longman, Inc., 0-201-89684-2. Addison-Wesley Professional;
3rd edition.
</p>
<p>
See also:
</p>
<p>
<a href="http://adtmag.com/articles/2000/03/15/comparing-floats-how-to-determine-if-floating-quantities-are-close-enough-once-a-tolerance-has-been.aspx" target="_top">Alberto
Squassia, Comparing floats</a>
</p>
<p>
<a href="http://adtmag.com/articles/2000/03/16/comparing-floats-how-to-determine-if-floating-quantities-are-close-enough-once-a-tolerance-has-been.aspx" target="_top">Alberto
Squassia, Comparing floats code</a>
</p>
<p>
<a href="../../../../../../../libs/test/doc/html/utf/testing-tools/floating_point_comparison.html" target="_top">floating-point
comparison</a>.
</p>
<p>
For example, if we want a tolerance that might suit about 9 arithmetical
operations, say sqrt(9) = 3, we could define:
</p>
<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">tolerance</span> <span class="special">=</span> <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
</pre>
<p>
This is very widely used in Boost.Math testing with Boost.Test's macro
<code class="computeroutput"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span></code>
</p>
<pre class="programlisting"><span class="identifier">T</span> <span class="identifier">expected</span> <span class="special">=</span> <span class="number">1.0</span><span class="special">;</span>
<span class="identifier">T</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">1.0</span> <span class="special">+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
<span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special">&lt;&lt;</span> <span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// true</span>
</pre>
<p>
If using Boost.Test, then call the macro version:
</p>
<pre class="programlisting"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span></pre>
<p>
used thus:
</p>
<pre class="programlisting"><span class="identifier">BOOST_CHECK_CLOSE_FRACTION</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
</pre>
<p>
(There is also a version using tolerance as a percentage rather than a
fraction).
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">number</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_dec_float</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">et_off</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;,</span> <span class="identifier">et_off</span> <span class="special">&gt;</span> <span class="identifier">cpp_dec_float_50</span><span class="special">;</span> <span class="comment">// 50 decimal digits.</span>
</pre>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
that Boost.Test does not yet allow floating-point comparisons with expression
templates on, so the default expression template parameter has been replaced
by <code class="computeroutput"><span class="identifier">et_off</span></code>.
</p></td></tr>
</table></div>
<pre class="programlisting"><span class="identifier">cpp_dec_float_50</span> <span class="identifier">tolerance</span> <span class="special">=</span> <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
<span class="identifier">cpp_dec_float_50</span> <span class="identifier">expected</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">two_pi</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;();</span>
<span class="identifier">cpp_dec_float_50</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">constants</span><span class="special">::</span><span class="identifier">pi</span><span class="special">&lt;</span><span class="identifier">cpp_dec_float_50</span><span class="special">&gt;();</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
<span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special">&lt;&lt;</span> <span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// true</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h7"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.infinity_positive_and_negative"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.infinity_positive_and_negative">Infinity
- positive and negative</a>
</h5>
<p>
For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_infinity</span>
<span class="special">==</span> <span class="keyword">true</span></code>,
function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">infinity</span><span class="special">()</span></code>
provides an implementation-defined representation for &#8734;.
</p>
<p>
The 'representation' is a particular bit pattern reserved for infinity.
For IEEE754 system (for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_iec559</span>
<span class="special">==</span> <span class="keyword">true</span></code>)
<a href="http://en.wikipedia.org/wiki/IEEE_754-1985#Positive_and_negative_infinity" target="_top">positive
and negative infinity</a> are assigned bit patterns for all defined
floating-point types.
</p>
<p>
Confusingly, the string resulting from outputting this representation,
is also implementation-defined. And the string that can be input to generate
the representation is also implementation-defined.
</p>
<p>
For example, the output is <code class="computeroutput"><span class="number">1.</span><span class="special">#</span><span class="identifier">INF</span></code>
on Microsoft systems, but <code class="computeroutput"><span class="identifier">inf</span></code>
on most *nix platforms.
</p>
<p>
This implementation-defined-ness has hampered use of infinity (and NaNs)
but Boost.Math and Boost.Multiprecision work hard to provide a sensible
representation for <span class="bold"><strong>all</strong></span> floating-point
types, not just the built-in types, which with the use of suitable facets
to define the input and output strings, makes it possible to use these
useful features portably and including Boost.Serialization.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.functions.h8"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.not_a_number_nan"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.not_a_number_nan">Not-A-Number
NaN</a>
</h5>
<h6>
<a name="boost_multiprecision.tut.limits.functions.h9"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.quiet_nan"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.quiet_nan">Quiet_NaN</a>
</h6>
<p>
For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_quiet_NaN</span>
<span class="special">==</span> <span class="keyword">true</span></code>,
function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">quiet_NaN</span><span class="special">()</span></code>
provides an implementation-defined representation for NaN.
</p>
<p>
<a href="http://en.wikipedia.org/wiki/NaN" target="_top">NaNs</a> are values to
indicate that the result of an assignment or computation is meaningless.
A typical example is <code class="computeroutput"><span class="number">0</span><span class="special">/</span><span class="number">0</span></code> but there are many others.
</p>
<p>
NaNs may also be used, to represent missing values: for example, these
could, by convention, be ignored in calculations of statistics like means.
</p>
<p>
Many of the problems with a representation for <a href="http://en.wikipedia.org/wiki/NaN" target="_top">Not-A-Number</a>
has hampered portable use, similar to those with infinity.
</p>
<p>
NaN can be used with binary multiprecision types like <code class="computeroutput"><span class="identifier">cpp_bin_float_quad</span></code>:
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_bin_float_quad</span><span class="special">;</span>
<span class="keyword">if</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_quad</span><span class="special">&gt;::</span><span class="identifier">has_quiet_NaN</span> <span class="special">==</span> <span class="keyword">true</span><span class="special">)</span>
<span class="special">{</span>
<span class="identifier">cpp_bin_float_quad</span> <span class="identifier">tolerance</span> <span class="special">=</span> <span class="number">3</span> <span class="special">*</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_quad</span><span class="special">&gt;::</span><span class="identifier">epsilon</span><span class="special">();</span>
<span class="identifier">cpp_bin_float_quad</span> <span class="identifier">NaN</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">cpp_bin_float_quad</span><span class="special">&gt;::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"cpp_bin_float_quad NaN is "</span> <span class="special">&lt;&lt;</span> <span class="identifier">NaN</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// cpp_bin_float_quad NaN is nan</span>
<span class="identifier">cpp_bin_float_quad</span> <span class="identifier">expected</span> <span class="special">=</span> <span class="identifier">NaN</span><span class="special">;</span>
<span class="identifier">cpp_bin_float_quad</span> <span class="identifier">calculated</span> <span class="special">=</span> <span class="number">2</span> <span class="special">*</span> <span class="identifier">NaN</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">test_tools</span><span class="special">::</span><span class="identifier">check_is_close</span><span class="special">;</span>
<span class="keyword">bool</span> <span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">expected</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special">&lt;&lt;</span> <span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// false, as expected because all comparisons with NaNs are false.</span>
<span class="identifier">r</span> <span class="special">=</span> <span class="identifier">check_is_close</span><span class="special">(</span><span class="identifier">expected</span><span class="special">,</span> <span class="identifier">calculated</span><span class="special">,</span> <span class="identifier">tolerance</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">boolalpha</span> <span class="special">&lt;&lt;</span> <span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// false, as expected because all comparisons with NaNs are false.</span>
<span class="special">}</span>
<span class="keyword">else</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Type "</span> <span class="special">&lt;&lt;</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">cpp_bin_float_quad</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="string">" does not have NaNs!"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
But using Boost.Math and suitable facets can permit portable use of both
NaNs and positive and negative infinity.
</p>
<p>
See <a href="../../../../../../../libs/math/example/nonfinite_facet_sstream.cpp" target="_top">boost:/libs/math/example/nonfinite_facet_sstream.cpp</a>
and we also need
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">nonfinite_num_facets</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
<p>
Then we can equally well use a multiprecision type cpp_bin_float_quad:
</p>
<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">cpp_bin_float_quad</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">cpp_bin_float_quad</span> <span class="identifier">T</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_put</span><span class="special">;</span>
<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">nonfinite_num_get</span><span class="special">;</span>
<span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
<span class="identifier">T</span> <span class="identifier">inf</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">infinity</span><span class="special">();</span>
<span class="identifier">ss</span> <span class="special">&lt;&lt;</span> <span class="identifier">inf</span><span class="special">;</span> <span class="comment">// Write out.</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"inf"</span><span class="special">);</span>
<span class="identifier">T</span> <span class="identifier">r</span><span class="special">;</span>
<span class="identifier">ss</span> <span class="special">&gt;&gt;</span> <span class="identifier">r</span><span class="special">;</span> <span class="comment">// Read back in.</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">inf</span> <span class="special">==</span> <span class="identifier">r</span><span class="special">);</span> <span class="comment">// Confirms that the floating-point values really are identical.</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"infinity output was "</span> <span class="special">&lt;&lt;</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"infinity input was "</span> <span class="special">&lt;&lt;</span> <span class="identifier">r</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<pre class="programlisting"><span class="identifier">infinity</span> <span class="identifier">output</span> <span class="identifier">was</span> <span class="identifier">inf</span>
<span class="identifier">infinity</span> <span class="identifier">input</span> <span class="identifier">was</span> <span class="identifier">inf</span>
</pre>
<p>
Similarly we can do the same with NaN (except that we cannot use <code class="computeroutput"><span class="identifier">assert</span></code>)
</p>
<pre class="programlisting"><span class="special">{</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">old_locale</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">tmp_locale</span><span class="special">(</span><span class="identifier">old_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_put</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span> <span class="identifier">new_locale</span><span class="special">(</span><span class="identifier">tmp_locale</span><span class="special">,</span> <span class="keyword">new</span> <span class="identifier">nonfinite_num_get</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">ss</span><span class="special">;</span>
<span class="identifier">ss</span><span class="special">.</span><span class="identifier">imbue</span><span class="special">(</span><span class="identifier">new_locale</span><span class="special">);</span>
<span class="identifier">T</span> <span class="identifier">n</span><span class="special">;</span>
<span class="identifier">T</span> <span class="identifier">NaN</span> <span class="special">=</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">quiet_NaN</span><span class="special">();</span>
<span class="identifier">ss</span> <span class="special">&lt;&lt;</span> <span class="identifier">NaN</span><span class="special">;</span> <span class="comment">// Write out.</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">==</span> <span class="string">"nan"</span><span class="special">);</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"NaN output was "</span> <span class="special">&lt;&lt;</span> <span class="identifier">ss</span><span class="special">.</span><span class="identifier">str</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="identifier">ss</span> <span class="special">&gt;&gt;</span> <span class="identifier">n</span><span class="special">;</span> <span class="comment">// Read back in.</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">NaN</span> <span class="special">==</span> <span class="identifier">n</span><span class="special">);</span> <span class="comment">// Confirms that the floating-point values really are identical.</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"NaN input was "</span> <span class="special">&lt;&lt;</span> <span class="identifier">n</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
NaN output was nan NaN input was nan
</p>
<h6>
<a name="boost_multiprecision.tut.limits.functions.h10"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.functions.signaling_nan"></a></span><a class="link" href="functions.html#boost_multiprecision.tut.limits.functions.signaling_nan">Signaling
NaN</a>
</h6>
<p>
For floating-point types only, for which <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">has_signaling_NaN</span>
<span class="special">==</span> <span class="keyword">true</span></code>,
function <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">signaling_NaN</span><span class="special">()</span></code>
provides an implementation-defined representation for NaN that causes a
hardware trap. It should be noted however, that at least one implementation
of this function causes a hardware trap to be triggered simply by calling
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">signaling_NaN</span><span class="special">()</span></code>,
and not only by using the value returned.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="constants.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits32.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,168 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>How to Determine the Kind of a Number From std::numeric_limits</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../limits.html" title="Numeric Limits">
<link rel="prev" href="limits32.html" title="Numeric limits for 32-bit platform">
<link rel="next" href="../input_output.html" title="Input Output">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="limits32.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../input_output.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.limits.how_to_tell"></a><a class="link" href="how_to_tell.html" title="How to Determine the Kind of a Number From std::numeric_limits">How to
Determine the Kind of a Number From <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code></a>
</h4></div></div></div>
<p>
Based on the information above, one can see that different kinds of numbers
can be differentiated based on the information stored in <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>. This is in addition to
the traits class <a class="link" href="../../ref/number.html#boost_multiprecision.ref.number.traits_class_support">number_category</a>
provided by this library.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.integer_types"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.integer_types">Integer
Types</a>
</h5>
<p>
For an integer type T, all of the following conditions hold:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span> <span class="special">==</span> <span class="keyword">true</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_integer</span> <span class="special">==</span> <span class="keyword">true</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span> <span class="special">==</span> <span class="keyword">true</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min_exponent</span> <span class="special">==</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_exponent</span> <span class="special">==</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min_exponent10</span> <span class="special">==</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_exponent10</span> <span class="special">==</span> <span class="number">0</span>
</pre>
<p>
In addition the type is <span class="emphasis"><em>signed</em></span> if:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_signed</span> <span class="special">==</span> <span class="keyword">true</span>
</pre>
<p>
If the type is arbitrary precision then:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_bounded</span> <span class="special">==</span> <span class="keyword">false</span>
</pre>
<p>
Otherwise the type is bounded, and returns a non zero value from:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">()</span>
</pre>
<p>
and has:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_modulo</span> <span class="special">==</span> <span class="keyword">true</span>
</pre>
<p>
if the type implements modulo arithmetic on overflow.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h1"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.rational_types"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.rational_types">Rational
Types</a>
</h5>
<p>
Rational types are just like integers except that:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_integer</span> <span class="special">==</span> <span class="keyword">false</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h2"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.fixed_precision_types"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.fixed_precision_types">Fixed
Precision Types</a>
</h5>
<p>
There appears to be no way to tell these apart from rational types, unless
they set:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span> <span class="special">==</span> <span class="keyword">false</span>
</pre>
<p>
This is because these types are in essense a rational type with a fixed
denominator.
</p>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h3"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.floating_point_types"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.floating_point_types">Floating
Point Types</a>
</h5>
<p>
For a floating point type T, all of the following conditions hold:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_specialized</span> <span class="special">==</span> <span class="keyword">true</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_integer</span> <span class="special">==</span> <span class="keyword">false</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span> <span class="special">==</span> <span class="keyword">false</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min_exponent</span> <span class="special">!=</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_exponent</span> <span class="special">!=</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">min_exponent10</span> <span class="special">!=</span> <span class="number">0</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">max_exponent10</span> <span class="special">!=</span> <span class="number">0</span>
</pre>
<p>
In addition the type is <span class="emphasis"><em>signed</em></span> if:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_signed</span> <span class="special">==</span> <span class="keyword">true</span>
</pre>
<p>
And the type may be decimal or binary depending on the value of:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">radix</span>
</pre>
<p>
In general, there are no arbitrary precision floating point types, and
so:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_bounded</span> <span class="special">==</span> <span class="keyword">false</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h4"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.exact_floating_point_types"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.exact_floating_point_types">Exact
Floating Point Types</a>
</h5>
<p>
Exact floating point types are a <a href="http://en.wikipedia.org/wiki/Field_%28mathematics%29" target="_top">field</a>
composed of an arbitrary precision integer scaled by an exponent. Such
types have no division operator and are the same as floating point types
except:
</p>
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">is_exact</span> <span class="special">==</span> <span class="keyword">true</span>
</pre>
<h5>
<a name="boost_multiprecision.tut.limits.how_to_tell.h5"></a>
<span class="phrase"><a name="boost_multiprecision.tut.limits.how_to_tell.complex_numbers"></a></span><a class="link" href="how_to_tell.html#boost_multiprecision.tut.limits.how_to_tell.complex_numbers">Complex
Numbers</a>
</h5>
<p>
For historical reasons, complex numbers do not specialize <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>, instead you must inspect
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">::</span><span class="identifier">value_type</span><span class="special">&gt;</span></code>.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="limits32.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../limits.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../input_output.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -196,7 +196,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -38,7 +38,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -65,14 +65,14 @@
<span class="special">&gt;</span></code>:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger1.png" alt="debugger1"></span>
<span class="inlinemediaobject"><img src="../../../../debugger1.png"></span>
</p>
<p>
Otherwise you will need to expand out the view and look at the "debug_value"
member:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger2.png" alt="debugger2"></span>
<span class="inlinemediaobject"><img src="../../../../debugger2.png"></span>
</p>
<p>
It works for all the backend types equally too, here it is inspecting a
@ -80,12 +80,12 @@
<span class="special">&gt;</span></code>:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger3.png" alt="debugger3"></span>
<span class="inlinemediaobject"><img src="../../../../debugger3.png"></span>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -89,8 +89,6 @@
The following example demonstrates this technique in a trivial algorithm
that deliberately introduces cancellation error:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">mpfi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">logged_adaptor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
@ -139,14 +137,10 @@
<span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
<p>
When we examine program output we can clearly see that the diameter of
the interval increases after each subtraction:
</p>
<p>
</p>
<pre class="programlisting"><span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Assignment</span> <span class="identifier">from</span> <span class="identifier">arithmetic</span> <span class="identifier">type</span>
<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.33681e-18</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
@ -204,12 +198,10 @@
<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.296861</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
<span class="identifier">Final</span> <span class="identifier">value</span> <span class="identifier">was</span><span class="special">:</span> <span class="special">{</span><span class="number">8.51569e-15</span><span class="special">,</span><span class="number">1.14843e-14</span><span class="special">}</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -33,7 +33,7 @@
partial solution in the shape of "visualizers" which provide
improved views of complex data structures, these visualizers need to be
added to the <code class="computeroutput"><span class="special">[</span><span class="identifier">Visualizer</span><span class="special">]</span></code> section of <code class="computeroutput"><span class="identifier">autoexp</span><span class="special">.</span><span class="identifier">dat</span></code>
located in the <code class="computeroutput"><span class="identifier">Common7</span><span class="special">\</span><span class="identifier">Packages</span><span class="special">\</span><span class="identifier">Debugger</span></code>
located in the <code class="computeroutput"><span class="identifier">Common7</span><span class="special">/</span><span class="identifier">Packages</span><span class="special">/</span><span class="identifier">Debugger</span></code>
directory of your Visual Studio installation. The actual visualizer code
is in the sandbox <a href="https://svn.boost.org/svn/boost/sandbox/boost_docs/subprojects/DebuggerVisualizers/multiprecision.vis.txt" target="_top">here</a>
- just cut and paste the code into your <code class="computeroutput"><span class="identifier">autoexp</span><span class="special">.</span><span class="identifier">dat</span></code>
@ -54,7 +54,7 @@
The first visualizer provides improved views of <code class="computeroutput"><span class="identifier">debug_adaptor</span></code>:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger1.png" alt="debugger1"></span>
<span class="inlinemediaobject"><img src="../../../../debugger1.png"></span>
</p>
<p>
The next visualizer provides improved views of cpp_int: small numbers are
@ -65,20 +65,20 @@
Here's what it looks like for small values:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger4.png" alt="debugger4"></span>
<span class="inlinemediaobject"><img src="../../../../debugger4.png"></span>
</p>
<p>
And for larger values:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger5.png" alt="debugger5"></span>
<span class="inlinemediaobject"><img src="../../../../debugger5.png"></span>
</p>
<p>
There is also a <code class="computeroutput"><span class="special">~</span><span class="identifier">raw</span></code>
child member that lets you see the actual members of the class:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger6.png" alt="debugger6"></span>
<span class="inlinemediaobject"><img src="../../../../debugger6.png"></span>
</p>
<p>
The visualizer for <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>
@ -87,12 +87,12 @@
data members:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../../debugger7.png" alt="debugger7"></span>
<span class="inlinemediaobject"><img src="../../../../debugger7.png"></span>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -43,7 +43,7 @@
</ul></div>
<h5>
<a name="boost_multiprecision.tut.mixed.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.mixed.mixing_operands_of_differing_precision"></a></span><a class="link" href="mixed.html#boost_multiprecision.tut.mixed.mixing_operands_of_differing_precision">Mixing
<span class="phrase"><a name="boost_multiprecision.tut.mixed.mixing_operands_of_differing_pre"></a></span><a class="link" href="mixed.html#boost_multiprecision.tut.mixed.mixing_operands_of_differing_pre">Mixing
Operands of Differing Precision</a>
</h5>
<p>
@ -109,8 +109,6 @@
<p>
For example:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -132,23 +130,17 @@
<span class="identifier">ui128</span> <span class="special">=</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">uint128_t</span><span class="special">&gt;::</span><span class="identifier">max</span><span class="special">)();</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">hex</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">showbase</span> <span class="special">&lt;&lt;</span> <span class="identifier">multiply</span><span class="special">(</span><span class="identifier">ui256</span><span class="special">,</span> <span class="identifier">ui128</span><span class="special">,</span> <span class="identifier">ui128</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
Produces the output:
</p>
<p>
</p>
<pre class="programlisting"><span class="number">0</span><span class="identifier">xffffffffffffffff</span>
<span class="number">0</span><span class="identifier">x10000000000000000</span>
<span class="number">0</span><span class="identifier">xFFFFFFFFFFFFFFFE0000000000000001</span>
<span class="number">0</span><span class="identifier">xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000000000000000000000000000001</span>
</pre>
<p>
</p>
<h5>
<a name="boost_multiprecision.tut.mixed.h2"></a>
<span class="phrase"><a name="boost_multiprecision.tut.mixed.backends_with_optimized_mixed_precision_arithmetic"></a></span><a class="link" href="mixed.html#boost_multiprecision.tut.mixed.backends_with_optimized_mixed_precision_arithmetic">Backends
<span class="phrase"><a name="boost_multiprecision.tut.mixed.backends_with_optimized_mixed_pr"></a></span><a class="link" href="mixed.html#boost_multiprecision.tut.mixed.backends_with_optimized_mixed_pr">Backends
With Optimized Mixed Precision Arithmetic</a>
</h5>
<p>
@ -166,7 +158,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -60,8 +60,6 @@
The following example searches for a prime <code class="computeroutput"><span class="identifier">p</span></code>
for which <code class="computeroutput"><span class="special">(</span><span class="identifier">p</span><span class="special">-</span><span class="number">1</span><span class="special">)/</span><span class="number">2</span></code> is also probably prime:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">miller_rabin</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
@ -99,12 +97,10 @@
<span class="keyword">return</span> <span class="number">1</span><span class="special">;</span>
<span class="special">}</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -39,8 +39,6 @@
<p>
Integers with <span class="emphasis"><em>N</em></span> random bits are generated using <code class="computeroutput"><span class="identifier">independent_bits_engine</span></code>:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">random</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -60,15 +58,11 @@
<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">gen</span><span class="special">()</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
Alternatively we can generate integers in a given range using <code class="computeroutput"><span class="identifier">uniform_int_distribution</span></code>, this will invoke
the underlying engine multiple times to build up the required number of bits
in the result:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">random</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -89,8 +83,6 @@
<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">10</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">ui</span><span class="special">(</span><span class="identifier">mt</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
Floating point values in [0,1) are generated using <code class="computeroutput"><span class="identifier">uniform_01</span></code>,
the trick here is to ensure that the underlying generator produces as many
@ -98,8 +90,6 @@
this purpose, note that we also have to convert decimal digits (in the floating
point type) to bits (in the random number generator):
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">random</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -119,14 +109,10 @@
<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">uf</span><span class="special">(</span><span class="identifier">gen</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
<p>
Finally, we can modify the above example to produce numbers distributed according
to some distribution:
</p>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">random</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
@ -147,12 +133,10 @@
<span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">20</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">gd</span><span class="special">(</span><span class="identifier">gen</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -247,7 +247,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -37,7 +37,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -81,10 +81,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.rational.cpp_rational.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.cpp_rational.example_"></a></span><a class="link" href="cpp_rational.html#boost_multiprecision.tut.rational.cpp_rational.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.cpp_rational.example"></a></span><a class="link" href="cpp_rational.html#boost_multiprecision.tut.rational.cpp_rational.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">cpp_int</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -103,12 +101,10 @@
<span class="identifier">cpp_rational</span> <span class="identifier">w</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span> <span class="comment">// component wise constructor</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">w</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 2/3</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -107,10 +107,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.rational.gmp_rational.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.gmp_rational.example_"></a></span><a class="link" href="gmp_rational.html#boost_multiprecision.tut.rational.gmp_rational.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.gmp_rational.example"></a></span><a class="link" href="gmp_rational.html#boost_multiprecision.tut.rational.gmp_rational.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">gmp</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -134,12 +132,10 @@
<span class="identifier">mpq_init</span><span class="special">(</span><span class="identifier">q</span><span class="special">);</span>
<span class="identifier">mpq_set</span><span class="special">(</span><span class="identifier">q</span><span class="special">,</span> <span class="identifier">v</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -53,7 +53,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -87,10 +87,8 @@
</ul></div>
<h6>
<a name="boost_multiprecision.tut.rational.tommath_rational.h0"></a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.tommath_rational.example_"></a></span><a class="link" href="tommath_rational.html#boost_multiprecision.tut.rational.tommath_rational.example_">Example:</a>
<span class="phrase"><a name="boost_multiprecision.tut.rational.tommath_rational.example"></a></span><a class="link" href="tommath_rational.html#boost_multiprecision.tut.rational.tommath_rational.example">Example:</a>
</h6>
<p>
</p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">tommath</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
@ -109,12 +107,10 @@
<span class="identifier">tom_rational</span> <span class="identifier">w</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">3</span><span class="special">);</span> <span class="comment">// Component wise constructor</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">w</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 2/3</span>
</pre>
<p>
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -177,7 +177,7 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -0,0 +1,63 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Serialization Support</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
<link rel="up" href="../tut.html" title="Tutorial">
<link rel="prev" href="gen_int.html" title="Generic Integer Operations">
<link rel="next" href="limits.html" title="Numeric Limits">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="gen_int.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.serial"></a><a class="link" href="serial.html" title="Boost.Serialization Support">Boost.Serialization
Support</a>
</h3></div></div></div>
<p>
Support for serialization comes in two forms:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Classes <a class="link" href="../ref/number.html" title="number">number</a>,
<a class="link" href="misc/debug_adaptor.html" title="debug_adaptor">debug_adaptor</a>,
<a class="link" href="misc/logged_adaptor.html" title="logged_adaptor">logged_adaptor</a>
and <a class="link" href="rational/rational_adaptor.html" title="rational_adaptor">rational_adaptor</a>
have "pass through" serialization support which requires the
underlying backend to be serializable.
</li>
<li class="listitem">
Backends <a class="link" href="ints/cpp_int.html" title="cpp_int">cpp_int</a>,
<a class="link" href="floats/cpp_dec_float.html" title="cpp_dec_float">cpp_dec_float</a>
and <a class="link" href="floats/float128.html" title="float128">float128</a>
have full support for Boost.Serialization.
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="gen_int.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="limits.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -28,7 +28,7 @@
<div><div class="author"><h3 class="author">
<span class="firstname">Christopher</span> <span class="surname">Kormanyos</span>
</h3></div></div>
<div><p class="copyright">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos</p></div>
<div><p class="copyright">Copyright &#169; 2002-2013 John Maddock and Christopher Kormanyos</p></div>
<div><div class="legalnotice">
<a name="boost_multiprecision.legal"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
@ -55,6 +55,7 @@
</dl></dd>
<dt><span class="section"><a href="boost_multiprecision/tut/floats.html">Floating Point Numbers</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="boost_multiprecision/tut/floats/cpp_bin_float.html">cpp_bin_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/floats/cpp_dec_float.html">cpp_dec_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/floats/gmp_float.html">gmp_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/floats/mpfr_float.html">mpfr_float</a></span></dt>
@ -101,6 +102,18 @@
<dt><span class="section"><a href="boost_multiprecision/tut/gen_int.html">Generic Integer Operations</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/serial.html">Boost.Serialization
Support</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/limits.html">Numeric Limits</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="boost_multiprecision/tut/limits/constants.html">std::numeric_limits&lt;&gt;
constants</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/limits/functions.html">std::numeric_limits&lt;&gt;
functions</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/limits/limits32.html">Numeric limits
for 32-bit platform</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/tut/limits/how_to_tell.html">How to
Determine the Kind of a Number From <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code></a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_multiprecision/tut/input_output.html">Input Output</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_multiprecision/ref.html">Reference</a></span></dt>
<dd><dl>
@ -110,6 +123,7 @@
<dt><span class="section"><a href="boost_multiprecision/ref/tom_int_ref.html">tom_int</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/ref/mpf_ref.html">gmp_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/ref/mpfr_ref.html">mpfr_float_backend</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/ref/cpp_bin_float_ref.html">cpp_bin_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/ref/cpp_dec_ref.html">cpp_dec_float</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/ref/internals.html">Internal Support
Code</a></span></dt>
@ -120,7 +134,7 @@
<dd><dl>
<dt><span class="section"><a href="boost_multiprecision/perf/overhead.html">The Overhead in the
Number Class Wrapper</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/perf/realworld.html">Floating Point Real
<dt><span class="section"><a href="boost_multiprecision/perf/realworld.html">Floating-Point Real
World Tests</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/perf/int_real_world.html">Integer Real
World Tests</a></span></dt>
@ -139,17 +153,11 @@
<dt><span class="section"><a href="boost_multiprecision/map/ack.html">Acknowledgements</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_multiprecision/indexes.html">Indexes</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="boost_multiprecision/indexes/s01.html">Function Index</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/indexes/s02.html">Class Index</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/indexes/s03.html">Typedef Index</a></span></dt>
<dt><span class="section"><a href="boost_multiprecision/indexes/s04.html">Index</a></span></dt>
</dl></dd>
</dl>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: September 30, 2013 at 17:51:19 GMT</small></p></td>
<td align="left"><p><small>Last revised: November 21, 2013 at 18:50:39 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,94 @@
[/
Copyright 2013 Paul A. Bristow.
Copyright 2013 John Maddock.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
]
[section:limits32 Numeric limits for 32-bit platform]
These tables were generated using the following program and options:
[pre
Program:
numeric_limits_qbk.cpp
Mon Nov 4 18:09:06 2013
BuildInfo:
Platform Win32
Compiler Microsoft Visual C++ version 10.0
MSVC version 160040219.
STL Dinkumware standard library version 520
Boost version 1.55.0
]
[table:integral_constants Integer types constants (`std::numeric_limits<T>::is_integer == true` && is_exact == true)
[[type][signed][bound][modulo][round][radix][digits][digits10]]
[[bool][unsigned][bound][no][to zero][2][1][0]]
[[char][signed][bound][modulo][to zero][2][7][2]]
[[unsigned char][unsigned][bound][modulo][to zero][2][8][2]]
[[char16_t][unsigned][bound][modulo][to zero][2][16][4]]
[[char32_t][unsigned][bound][modulo][to zero][2][32][9]]
[[short][signed][bound][modulo][to zero][2][15][4]]
[[unsigned short][unsigned][bound][modulo][to zero][2][16][4]]
[[int][signed][bound][modulo][to zero][2][31][9]]
[[unsigned][unsigned][bound][modulo][to zero][2][32][9]]
[[long][signed][bound][modulo][to zero][2][31][9]]
[[unsigned long][unsigned][bound][modulo][to zero][2][32][9]]
[[long long][signed][bound][modulo][to zero][2][63][18]]
[[unsigned long long][unsigned][bound][modulo][to zero][2][64][19]]
[[int32_t][signed][bound][modulo][to zero][2][31][9]]
[[uint32_t][unsigned][bound][modulo][to zero][2][32][9]]
[[int64_t][signed][bound][modulo][to zero][2][63][18]]
[[uint64_t][unsigned][bound][modulo][to zero][2][64][19]]
[[int128_t][signed][bound][modulo][to zero][2][128][38]]
[[uint128_t][unsigned][bound][modulo][to zero][2][128][38]]
[[int256_t][signed][bound][modulo][to zero][2][256][77]]
[[uint256_t][unsigned][bound][modulo][to zero][2][256][77]]
[[cpp_int][signed][unbounded][no][to zero][2][2147483647][646392383]]
]
[table:integral_functions Integer types functions (`std::numeric_limits<T>::is_integer == true && std::numeric_limits<T>::min() == std::numeric_limits<T>::lowest()` )
[[function][max][min]]
[[bool][1][0]]
[[char][127][-128]]
[[unsigned char][255][0]]
[[char16_t][65535][0]]
[[char32_t][4294967295][0]]
[[short][32767][-32768]]
[[unsigned short][65535][0]]
[[int][2147483647][-2147483648]]
[[unsigned int][4294967295][0]]
[[long][2147483647][-2147483648]]
[[unsigned long][4294967295][0]]
[[long long][9223372036854775807][-9223372036854775808]]
[[unsigned long long][18446744073709551615][0]]
[[int32_t][2147483647][-2147483648]]
[[int64_t][9223372036854775807][-9223372036854775808]]
[[int128_t][340282366920938463463374607431768211455][-340282366920938463463374607431768211455]]]
[table:float_functions Floating-point types constants (`std::numeric_limits<T>::is_integer==false && is_signed==true && is_modulo==false && is_exact==false && is_bound==true`)
[[type][round][radix][digits][digits10][max_digits10][min_exp][min_exp10][max_exp][max_exp10][tiny][trap]]
[[float][to nearest][2][24][6][8][-125][-37][128][38][tiny][traps]]
[[double][to nearest][2][53][15][17][-1021][-307][1024][308][tiny][traps]]
[[long double][to nearest][2][53][15][17][-1021][-307][1024][308][tiny][traps]]
[[cpp_dec_float_50][indeterminate][10][50][50][80][-222953000][-67108864][222953000][67108864][no][no]]
[[bin_128bit_double_type][to nearest][2][377][113][115][-2147482894][-646392082][2147482893][646392082][no][traps]]
]
[table:float_functions Floating-point types functions (`std::numeric_limits<T>::is_integer == false`)
[[function][float][double][long double][cpp_dec_50][cpp_bin_128]][[max][3.40282e+038][1.79769e+308][1.79769e+308][1e+67108865][1.85906e+646456766]]
[[min][1.17549e-038][2.22507e-308][2.22507e-308][1e-67108864][5.37906e-646456767]]
[[epsilon][1.19209e-007][2.22045e-016][2.22045e-016][1e-49][6.49713e-114]]
[[round_error][0.5][0.5][0.5][0.5][0.5]]
[[infinity][1.#INF][1.#INF][1.#INF][inf][inf]]
[[quiet_NaN][1.#QNAN][1.#QNAN][1.#QNAN][nan][nan]]
[[signaling_NaN][1.#QNAN][1.#QNAN][1.#QNAN][0][0]]
[[denorm_min][1.4013e-045][4.94066e-324][4.94066e-324][0][0]]
]
[endsect] [/section:limits32 Numeric limits for 32-bit platform]

719
doc/numeric_limits_qbk.cpp Normal file
View File

@ -0,0 +1,719 @@
// Copyright Paul A. Bristow 2013
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
// Program to list all numeric_limits items for any type to a file in Quickbook format.
// C standard http://www.open-std.org/jtc1/sc22/wg11/docs/n507.pdf
// SC22/WG11 N507 DRAFT INTERNATIONAL ISO/IEC STANDARD WD 10967-1
// Information technology Language independent arithmetic Part 1: Integer and Floating point arithmetic
/* E.3 C++
The programming language C++ is defined by ISO/IEC 14882:1998, Programming languages C++ [18].
An implementation should follow all the requirements of LIA-1 unless otherwise specified by
this language binding.
*/
// http://754r.ucbtest.org/standards/754.pdf
// http://www.cesura17.net/~will/Professional/Research/Papers/retrospective.pdf
// http://www.exploringbinary.com/using-integers-to-check-a-floating-point-approximation/
// http://stackoverflow.com/questions/12466745/how-to-convert-float-to-doubleboth-stored-in-ieee-754-representation-without-loss
#ifdef _MSC_VER
# pragma warning (disable : 4127) // conditional expression is constant.
# pragma warning (disable : 4100) // unreferenced formal parameter.
#endif
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <fstream>
#include <limits> // numeric_limits
#include <typeinfo>
#include <boost/version.hpp>
#include <boost/config.hpp>
// May need extra includes for other types, for example:
#include <boost/multiprecision/cpp_dec_float.hpp> // is decimal.
#include <boost/multiprecision/cpp_bin_float.hpp> // is binary.
// Assume that this will be run on MSVC to get the 32 or 64 bit info.
#ifdef _WIN32
std::string bits32_64 = "32";
std::string filename = "numeric_limits_32_tables.qbk";
#else
std::string bits32_64 = "64";
std::string filename = "numeric_limits_64_tables.qbk";
#endif
#ifdef INT32_T_MAX
int i = INT256_T_MAX;
#endif
std::array<std::string, 16> integer_type_names =
{
"bool",
"char",
"unsigned char",
"char16_t",
"char32_t",
"short",
"unsigned short",
"int",
"unsigned int",
"long",
"unsigned long",
"long long",
"unsigned long long",
"int32_t",
//"uint32_t",
"int64_t",
//"uint64_t",
"int128_t",
//"uint128_t" // Too big?
//"int256_t",
//"uint256_t"
//"int512_t"
};
std::array<std::string, 6> float_type_names =
{
"function", "float", "double", "long double", "cpp_dec_50", "cpp_bin_128"
};
// Table headings for integer constants.
std::array<std::string, 8> integer_constant_heads =
{
"type", "signed", "bound", "modulo", "round", "radix", "digits", "digits10", // "max_digits10"
};
// Table headings for integer functions.
std::array<std::string, 2> integer_function_heads =
{
"max", // "lowest", assumes is same for all integer types, so not worth listing.
"min"
};
// Table headings for float constants.
std::array<std::string, 12> float_constant_heads =
{
"type", // "signed", "exact", "bound", // "modulo",
"round", "radix", "digits", "digits10", "max_digits10", "min_exp", "min_exp10", "max_exp", "max_exp10", "tiny", "trap"
};
// Table headings for float functions.
std::array<std::string, 10> float_function_heads =
{
"function", "max", "lowest", "min", "eps", "round", "infinity", "NaN", "sig_NaN", "denorm_min"
};
std::string versions()
{ // Build a string of info about Boost, platform, STL, etc.
std::stringstream mess;
//mess << "\n" << "Program:\n\" " __FILE__ << "\"\n"; // \n is mis-interpreted!
mess << "\n" << "Program:\n numeric_limits_qbk.cpp \n";
#ifdef __TIMESTAMP__
mess << __TIMESTAMP__;
#endif
mess << "\nBuildInfo:\n" " Platform " << BOOST_PLATFORM;
mess << "\n Compiler " BOOST_COMPILER;
#ifdef _MSC_FULL_VER
mess << "\n MSVC version "<< BOOST_STRINGIZE(_MSC_FULL_VER) << ".";
#endif
mess << "\n STL " BOOST_STDLIB;
mess << "\n Boost version " << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100 << std::endl;
return mess.str();
} // std::string versions()
template <typename T>
void out_round_style(std::ostream& os)
{ //! Send short string describing STD::round_style to stream os.
// os << "Round style is ";
if (std::numeric_limits<T>::round_style == std::round_indeterminate)
{
os << "indeterminate" ;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_zero)
{
os << "to zero" ;
}
else if (std::numeric_limits<T>::round_style == std::round_to_nearest)
{
os << "to nearest" ;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_infinity)
{
os << "to infin[]"; // Or << "to \u221E" << "to infinity" ;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_neg_infinity)
{
os << "to -infin[]" ;
}
else
{
os << "undefined!";
std::cout << "std::numeric_limits<T>::round_style is undefined value!" << std::endl;
}
return;
} // out_round_style(std::ostream& os);
template<typename T>
void integer_constants(std::string type_name, std::ostream& os)
{ //! Output a line of table integer constant values to ostream os.
os << "\n["
"[" << type_name << "]" ;
os << "[" << (std::numeric_limits<T>::is_signed ? "signed" : "unsigned") << "]" ;
// Is always exact for integer types, so removed:
// os << "[" << (std::numeric_limits<T>::is_exact ? "exact" : "inexact") << "]" ;
os << "[" << (std::numeric_limits<T>::is_bounded ? "bound" : "unbounded") << "]" ;
os << "[" << (std::numeric_limits<T>::is_modulo ? "modulo" : "no") << "]" ;
os << "[" ; out_round_style<T>(os); os << "]" ;
os << "[" << std::numeric_limits<T>::radix << "]" ;
os << "[" << std::numeric_limits<T>::digits << "]" ;
os << "[" << std::numeric_limits<T>::digits10 << "]" ;
// Undefined for integers, so removed:
// os << "[" << std::numeric_limits<T>::max_digits10 << "]"
os << "]";
} // void integer_constants
template<typename T>
void float_constants(std::string type_name, std::ostream& os)
{ //! Output a row of table values to `ostream` os.
os << "\n["
"[" << type_name << "]" ;
//os << "[" << (std::numeric_limits<T>::is_signed ? "signed" : "unsigned") << "]" ;
//os << "[" << (std::numeric_limits<T>::is_exact ? "exact" : "inexact") << "]" ;
//os << "[" << (std::numeric_limits<T>::is_bounded ? "bound" : "no") << "]" ;
// os << "[" << (std::numeric_limits<T>::is_modulo ? "modulo" : "no") << "]" ;
os << "[" ; out_round_style<T>(os); os << "]" ;
os << "[" << std::numeric_limits<T>::radix << "]" ;
os << "[" << std::numeric_limits<T>::digits << "]" ;
os << "[" << std::numeric_limits<T>::digits10 << "]" ;
os << "[" << std::numeric_limits<T>::max_digits10 << "]";
os << "[" << std::numeric_limits<T>::min_exponent << "]" ;
os << "[" << std::numeric_limits<T>::min_exponent10 << "]" ;
os << "[" << std::numeric_limits<T>::max_exponent << "]" ;
os << "[" << std::numeric_limits<T>::max_exponent10 << "]" ;
os << "[" << (std::numeric_limits<T>::tinyness_before ? "tiny" : "no") << "]" ;
os << "[" << (std::numeric_limits<T>::traps ? "traps" : "no") << "]" ;
os << "]" "\n"; // end of row.
} // void float_constants
/* Types across and two functions down.
template<typename T>
void integer_functions(std::string type_name, std::ostream& os)
{ //! Output a line of table integer function values to `ostream` os.
os << "\n["
"[" << type_name << "]" ;
os << "[" << std::numeric_limits<T>::max() << "]" ;
//os << "[" << std::numeric_limits<T>::lowest() << "]" ; always == min for integer types,
// so removed to save space.
os << "[" << std::numeric_limits<T>::min() << "]"
"]";
} // void integer_functions
*/
// Types down and two (or three) functions across.
template<typename T>
void integer_functions(std::string type_name, std::ostream& os)
{ //! Output a line of table integer function values to `ostream` os.
os << "\n[" // start of row.
"[" << type_name << "]" ;
os << "[" << std::numeric_limits<T>::max() << "]" ;
// os << "[" << std::numeric_limits<T>::lowest() << "]" ;
os << "[" << std::numeric_limits<T>::min() << "]" ;
os << "]"; // end of row.
} // void integer_functions
template<typename T>
void float_functions(std::string type_name, std::ostream& os)
{ //! Output a line of table float-point function values to `ostream` os.
os << "\n[" // start of row.
"[" << type_name << "]" ;
os << "[" << std::numeric_limits<T>::max() << "]" ;
os << "[" << std::numeric_limits<T>::lowest() << "]" ;
os << "[" << std::numeric_limits<T>::min() << "]"
os << "[" << std::numeric_limits<T>::epsilon() << "]"
os << "[" << std::numeric_limits<T>::round_error() << "]"
os << "[" << std::numeric_limits<T>::infinity() << "]"
os << "[" << std::numeric_limits<T>::quiet_NaN() << "]"
os << "[" << std::numeric_limits<T>::signaling_NaN() << "]"
os << "[" << std::numeric_limits<T>::denorm_min() << "]"
"]"; // end of row.
} // void float_functions
template<typename T>
int numeric_limits_list(std::string description)
{//! Output numeric_limits for numeric_limits<T>, for example `numeric_limits_list<bool>()`.
// This is not used for Quickbook format.
// std::cout << versions() << std::endl;
std::cout << "\n" << description << "\n" << std::endl; // int, int64_t rather than full long typeid(T).name().
std::cout << "Type " << typeid(T).name() << " std::numeric_limits::<" << typeid(T).name() << ">\n" << std::endl;
// ull long typeid(T).name()
if (std::numeric_limits<T>::is_specialized == false)
{
std::cout << "type " << typeid(T).name() << " is not specialized for std::numeric_limits!" << std::endl;
//return -1;
}
// Member constants.
std::cout << (std::numeric_limits<T>::is_signed ? "is signed." : "unsigned.") << std::endl;
std::cout << (std::numeric_limits<T>::is_integer ? "is integer." : "not integer (fixed or float-point).") << std::endl;
std::cout << (std::numeric_limits<T>::is_exact ? "is exact." : "not exact.") << std::endl;
std::cout << (std::numeric_limits<T>::has_infinity ? "has infinity." : "no infinity.") << std::endl;
std::cout << (std::numeric_limits<T>::has_quiet_NaN ? "has quiet NaN." : "no quiet NaN.") << std::endl;
std::cout << (std::numeric_limits<T>::has_signaling_NaN ? "has signaling NaN." : "no signaling NaN.") << std::endl;
if (!std::numeric_limits<T>::is_integer)
{ // is floating_point
std::cout << "Denorm style is " ;
if (std::numeric_limits<T>::has_denorm == std::denorm_absent)
{
std::cout << "denorm_absent." << std::endl;
}
else if (std::numeric_limits<T>::has_denorm == std::denorm_present)
{
std::cout << "denorm_present." << std::endl;
}
else if (std::numeric_limits<T>::has_denorm == std::denorm_indeterminate)
{
std::cout << "denorm_indeterminate." << std::endl;
}
else
{
std::cout << "std::numeric_limits<T>::has_denorm unexpected value!" << std::endl;
}
std::cout << (std::numeric_limits<T>::has_denorm_loss ? "has denorm loss." : "no denorm loss.") << std::endl;
// true if a loss of accuracy is detected as a denormalization loss, rather than an inexact result.
std::cout << "Round style is ";
if (std::numeric_limits<T>::round_style == std::round_indeterminate)
{
std::cout << "round_indeterminate!" << std::endl;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_zero)
{
std::cout << "round_toward_zero." << std::endl;
}
else if (std::numeric_limits<T>::round_style == std::round_to_nearest)
{
std::cout << "round_to_nearest." << std::endl;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_infinity)
{
std::cout << "round_toward_infinity." << std::endl;
}
else if (std::numeric_limits<T>::round_style == std::round_toward_neg_infinity)
{
std::cout << "round_toward_neg_infinity." << std::endl;
}
else
{
std::cout << "undefined value!" << std::endl;
}
} // is floating_point
std::cout << (std::numeric_limits<T>::is_iec559 ? "is IEC599." : "not IEC599.") << std::endl;
std::cout << (std::numeric_limits<T>::is_bounded ? "is bound." : "unbounded.") << std::endl;
std::cout << (std::numeric_limits<T>::is_modulo ? "is modulo." : "no modulo.") << std::endl;
std::cout << std::dec << "radix " << std::numeric_limits<T>::radix << std::endl;
std::cout << "digits " << std::numeric_limits<T>::digits << std::endl;
std::cout << "digits10 " << std::numeric_limits<T>::digits10 << std::endl;
std::cout.precision(std::numeric_limits<T>::max_digits10); // Full precision for floating-point values like max, min ...
std::cout << "max_digits10 " << std::numeric_limits<T>::max_digits10 << std::endl;
std::cout << "min_exponent " << std::numeric_limits<T>::min_exponent << std::endl;
std::cout << "min_exponent10 " << std::numeric_limits<T>::min_exponent10 << std::endl;
std::cout << "max_exponent " << std::numeric_limits<T>::max_exponent << std::endl;
std::cout << "max_exponent10 " << std::numeric_limits<T>::max_exponent10 << std::endl;
std::cout << (std::numeric_limits<T>::tinyness_before ? "Can tiny values before rounding." : "no tinyness_before.") << std::endl;
// true if the type can detect tiny values before rounding; false if it cannot.
std::cout << (std::numeric_limits<T>::traps ? "traps" : "no trapping.") << std::endl;
// Whether trapping that reports on arithmetic exceptions is implemented for a type.
std::cout << "Member functions." << std::endl;
// (assumes operator<< for type T is available).
// If floating-point then hex format may not be available.
std::cout << "max = " << std::numeric_limits<T>::max() << std::endl;
//if (std::numeric_limits<T>::is_integer)
//{
// std::cout << " = " << std::hex << std::numeric_limits<T>::max() << std::endl;
//}
std::cout << "lowest = " << std::dec << std::numeric_limits<T>::lowest() << std::endl;
//if (std::numeric_limits<T>::is_integer)
//{
// std::cout << " = " << std::hex << std::numeric_limits<T>::lowest() << std::endl;
//}
std::cout << "min = " << std::dec << std::numeric_limits<T>::min() << std::endl;
//if (std::numeric_limits<T>::is_integer)
//{
// std::cout << " = " << std::hex << std::numeric_limits<T>::min() << std::endl;
//}
std::cout << "epsilon = " << std::dec << std::numeric_limits<T>::epsilon() << std::endl;
//if (std::numeric_limits<T>::is_integer)
//{
// std::cout << " = " << std::hex << std::numeric_limits<T>::epsilon() << std::endl;
//}
// round_error is always zero for integer types.
// round_error is usually 1/2 = (T)0.5 for floating-point types.
// round_error is ? for fixed-point.
std::cout << "round_error = " << std::numeric_limits<T>::round_error() << " ULP." << std::endl;
std::cout << "infinity = " << std::dec << std::numeric_limits<T>::infinity() << std::endl;
std::cout << " = " << std::hex << std::numeric_limits<T>::infinity() << std::endl;
std::cout << "quiet_NaN = " << std::dec << std::numeric_limits<T>::quiet_NaN() << std::endl;
std::cout << " = " << std::hex << std::numeric_limits<T>::quiet_NaN() << std::endl;
std::cout << "signaling_NaN = " << std::dec << std::numeric_limits<T>::signaling_NaN() << std::endl;
std::cout << " = " << std::hex << std::numeric_limits<T>::signaling_NaN() << std::endl;
// Only meaningful if (std::numeric_limits<T>::has_denorm == std::denorm_present)
// so might not bother to show if absent?
std::cout << "denorm_min = " << std::numeric_limits<T>::denorm_min() << std::endl;
std::cout << " = " << std::numeric_limits<T>::denorm_min() << std::endl;
return 0;
}
int main()
{
try
{
using namespace boost::multiprecision;
std::cout << versions() << std::endl;
std::ofstream fout(filename, std::ios_base::out);
if (!fout.is_open())
{
std::cout << "Unable to open file " << filename << " for output.\n" << std::endl;
return -1; // boost::EXIT_FAILURE;
}
fout <<
"[/""\n"
"Copyright 2013 Paul A. Bristow.""\n"
"Copyright 2013 John Maddock.""\n"
"Distributed under the Boost Software License, Version 1.0.""\n"
"(See accompanying file LICENSE_1_0.txt or copy at""\n"
"http://www.boost.org/LICENSE_1_0.txt).""\n"
"]""\n"
<< std::endl;
fout << "[section:limits"<< bits32_64 << " Numeric limits for " << bits32_64 << "-bit platform]" << std::endl;
// Output platform version info (32 or 64).
fout << "These tables were generated using the following program and options:\n\n"
"[pre""\n"
<< versions()
<< "]""\n"
<< std::endl;
fout << "[table:integral_constants Integer types constants (`std::numeric_limits<T>::is_integer == true` && is_exact == true)" "\n"
"[";
for (size_t i = 0; i < integer_constant_heads.size(); i++)
{ // signed, bound, modulo ...
fout << "[" << integer_constant_heads[i] << "]" ;
}
fout << "]";
integer_constants<bool>("bool", fout);
integer_constants<char>("char", fout);
integer_constants<unsigned char>("unsigned char", fout);
integer_constants<char16_t>("char16_t", fout);
integer_constants<char32_t>("char32_t", fout);
integer_constants<short>("short", fout);
integer_constants<unsigned short>("unsigned short", fout);
integer_constants<int>("int", fout);
integer_constants<unsigned int>("unsigned", fout);
integer_constants<long>("long", fout);
integer_constants<unsigned long>("unsigned long", fout);
integer_constants<long long>("long long", fout);
integer_constants<unsigned long long>("unsigned long long", fout);
integer_constants<int32_t>("int32_t", fout);
integer_constants<uint32_t>("uint32_t", fout);
integer_constants<int64_t>("int64_t", fout);
integer_constants<uint64_t>("uint64_t", fout);
integer_constants<int128_t>("int128_t", fout);
integer_constants<uint128_t>("uint128_t", fout);
integer_constants<int256_t>("int256_t", fout);
integer_constants<uint256_t>("uint256_t", fout);
// integer_constants<int512_t>("int512_t", fout);
//integer_constants<uint512_t>("uint512_t", fout); // Too big?
integer_constants<cpp_int>("cpp_int", fout);
fout << "\n]\n\n";
fout << "[table:integral_functions Integer types functions (`std::numeric_limits<T>::is_integer == true && std::numeric_limits<T>::min() == std::numeric_limits<T>::lowest()` )" "\n"
"[";
// Display types across the page, and 2 (or 3) functions as rows.
fout << "[function]";
for (size_t i = 0; i < integer_function_heads.size(); i++)
{
fout << "[" << integer_function_heads[i] << "]" ;
}
fout << "]"; // end of headings.
integer_functions<bool>("bool", fout);
//integer_functions<char>("char", fout); // Need int value not char.
fout << "\n[" // start of row.
"[" << "char"<< "]" ;
fout << "[" << static_cast<int>((std::numeric_limits<char>::max)()) << "]" ;
// fout << "[" << (std::numeric_limits<T>::lowest)() << "]" ;
fout << "[" << static_cast<int>((std::numeric_limits<char>::min)()) << "]" ;
fout << "]"; // end of row.
//integer_functions<unsigned char>("unsigned char", fout); // Need int value not char.
fout << "\n[" // start of row.
"[" << "unsigned char"<< "]" ;
fout << "[" << static_cast<int>((std::numeric_limits<unsigned char>::max)()) << "]" ;
// fout << "[" << std::numeric_limits<unsigned char>::lowest() << "]" ;
fout << "[" << static_cast<int>(std::numeric_limits<unsigned char>::min()) << "]" ;
fout << "]"; // end of row.
integer_functions<char16_t>("char16_t", fout);
integer_functions<char32_t>("char32_t", fout);
integer_functions<short>("short", fout);
integer_functions<unsigned short>("unsigned short", fout);
integer_functions<int>("int", fout);
integer_functions<unsigned int>("unsigned int", fout);
integer_functions<long>("long", fout);
integer_functions<unsigned long>("unsigned long", fout);
integer_functions<long long>("long long", fout);
integer_functions<unsigned long long>("unsigned long long", fout);
integer_functions<int32_t>("int32_t", fout);
integer_functions<int64_t>("int64_t", fout);
integer_functions<int128_t>("int128_t", fout);
fout << "]" "\n"; // end of table;
//fout << "[[max]"
// << "[" << std::numeric_limits<bool>::max() << "]"
// << "[" << static_cast<int>(std::numeric_limits<char>::max()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<unsigned char>::max()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<char16_t>::max()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<char32_t>::max()) << "]"
// << "[" << std::numeric_limits<short>::max() << "]"
// << "[" << std::numeric_limits<unsigned short>::max() << "]"
// << "[" << std::numeric_limits<int>::max() << "]"
// << "[" << std::numeric_limits<unsigned int>::max() << "]"
// << "[" << std::numeric_limits<long>::max() << "]"
// << "[" << std::numeric_limits<unsigned long>::max() << "]"
// << "[" << std::numeric_limits<long long>::max() << "]"
// << "[" << std::numeric_limits<unsigned long long>::max() << "]"
// << "[" << std::numeric_limits<int32_t>::max() << "]"
// << "[" << std::numeric_limits<int64_t>::max() << "]"
// << "[" << std::numeric_limits<int128_t>::max() << "]"
// //<< "[" << std::numeric_limits<int256_t>::max() << "]" // too big?
// //<< "[" << std::numeric_limits<int512_t>::max() << "]" // too big?
// << "]" "\n";
///* Assume lowest() is not useful as == min for all integer types.
// */
//fout << "[[min]"
// << "[" << std::numeric_limits<bool>::min() << "]"
// << "[" << static_cast<int>(std::numeric_limits<char>::min()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<unsigned char>::min()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<char16_t>::min()) << "]"
// << "[" << static_cast<int>(std::numeric_limits<char32_t>::min()) << "]"
// << "[" << std::numeric_limits<short>::min() << "]"
// << "[" << std::numeric_limits<unsigned short>::min() << "]"
// << "[" << std::numeric_limits<int>::min() << "]"
// << "[" << std::numeric_limits<unsigned int>::min() << "]"
// << "[" << std::numeric_limits<long>::min() << "]"
// << "[" << std::numeric_limits<unsigned long>::min() << "]"
// << "[" << std::numeric_limits<long long>::min() << "]"
// << "[" << std::numeric_limits<unsigned long long>::min() << "]"
// << "[" << std::numeric_limits<int32_t>::min() << "]"
// << "[" << std::numeric_limits<int64_t>::min() << "]"
// << "[" << std::numeric_limits<int128_t>::min() << "]"
// // << "[" << std::numeric_limits<int256_t>::min() << "]" // too big?
// // << "[" << std::numeric_limits<int512_t>::min() << "]" // too big?
// << "]""\n";
// Floating-point
typedef number<cpp_dec_float<50> > cpp_dec_float_50; // 50 decimal digits.
typedef number<cpp_bin_float<113> > bin_128bit_double_type; // == Binary rare long double.
fout <<
//"[table:float_functions Floating-point types constants (`std::numeric_limits<T>::is_integer == false && std::numeric_limits<T>::is_modulo == false` )" "\n"
"[table:float_functions Floating-point types constants (`std::numeric_limits<T>::is_integer==false && is_signed==true && is_modulo==false && is_exact==false && is_bound==true`)" "\n"
"[";
for (size_t i = 0; i < float_constant_heads.size(); i++)
{
fout << "[" << float_constant_heads[i] << "]" ;
}
fout << "]"; // end of headings.
float_constants<float>("float", fout);
float_constants<double>("double", fout);
float_constants<long double>("long double", fout);
float_constants<cpp_dec_float_50>("cpp_dec_float_50", fout);
float_constants<bin_128bit_double_type>("bin_128bit_double_type", fout);
fout << "]" "\n"; // end of table;
fout <<
"[table:float_functions Floating-point types functions (`std::numeric_limits<T>::is_integer == false`)" "\n"
"[";
for (size_t i = 0; i < float_type_names.size(); i++)
{
fout << "[" << float_type_names[i] << "]" ;
}
fout << "]"; // end of headings.
fout << "[[max]"
<< "[" << std::numeric_limits<float>::max() << "]"
<< "[" << std::numeric_limits<double>::max() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Perhaps to test Long double is not just a duplication of double (but need change is headings too).
<< "[" << std::numeric_limits<long double>::max() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50>::max() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::max() << "]"
<< "]" "\n"; // end of row.
fout << "[[min]"
<< "[" << std::numeric_limits<float>::min() << "]"
<< "[" << std::numeric_limits<double>::min() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::min() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::min() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::min() << "]"
<< "]" "\n"; // end of row.
fout << "[[epsilon]"
<< "[" << std::numeric_limits<float>::epsilon() << "]"
<< "[" << std::numeric_limits<double>::epsilon() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::epsilon() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::epsilon() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::epsilon() << "]"
<< "]" "\n"; // end of row.
fout << "[[round_error]"
<< "[" << std::numeric_limits<float>::round_error() << "]"
<< "[" << std::numeric_limits<double>::round_error() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::round_error() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::round_error() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::round_error() << "]"
<< "]" "\n"; // end of row.
fout << "[[infinity]"
<< "[" << std::numeric_limits<float>::infinity() << "]"
<< "[" << std::numeric_limits<double>::infinity() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::infinity() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::infinity() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::infinity() << "]"
<< "]" "\n"; // end of row.
fout << "[[quiet_NaN]"
<< "[" << std::numeric_limits<float>::quiet_NaN() << "]"
<< "[" << std::numeric_limits<double>::quiet_NaN() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::quiet_NaN() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::quiet_NaN() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::quiet_NaN() << "]"
<< "]" "\n"; // end of row.
fout << "[[signaling_NaN]"
<< "[" << std::numeric_limits<float>::signaling_NaN() << "]"
<< "[" << std::numeric_limits<double>::signaling_NaN() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::signaling_NaN() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::signaling_NaN() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::signaling_NaN() << "]"
<< "]" "\n"; // end of row.
fout << "[[denorm_min]"
<< "[" << std::numeric_limits<float>::denorm_min() << "]"
<< "[" << std::numeric_limits<double>::denorm_min() << "]"
//#if LDBL_MANT_DIG > DBL_MANT_DIG
// Long double is not just a duplication of double.
<< "[" << std::numeric_limits<long double>::denorm_min() << "]"
//#endif
<< "[" << std::numeric_limits<cpp_dec_float_50 >::denorm_min() << "]"
<< "[" << std::numeric_limits<bin_128bit_double_type >::denorm_min() << "]"
<< "]" "\n"; // end of row.
fout << "]" "\n"; // end of table;
fout << "\n\n"
"[endsect] [/section:limits32 Numeric limits for 32-bit platform]" "\n" << std::endl;
fout.close();
}
catch(std::exception ex)
{
std::cout << "exception thrown: " << ex.what() << std::endl;
}
} // int main()
/*
Description: Autorun "J:\Cpp\Misc\Debug\numeric_limits_qbk.exe"
Program: I:\boost-sandbox\multiprecision.cpp_bin_float\libs\multiprecision\doc\numeric_limits_qbk.cpp
Wed Aug 28 14:17:21 2013
BuildInfo:
Platform Win32
Compiler Microsoft Visual C++ version 10.0
MSVC version 160040219.
STL Dinkumware standard library version 520
Boost version 1.55.0
*/

View File

@ -0,0 +1,39 @@
///////////////////////////////////////////////////////////////
// Copyright 2013 John Maddock. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <boost/math/special_functions/gamma.hpp>
#include <iostream>
void t1()
{
//[cpp_bin_float_eg
//=#include <boost/multiprecision/cpp_bin_float.hpp>
using namespace boost::multiprecision;
// Operations at fixed precision and full numeric_limits support:
cpp_bin_float_100 b = 2;
std::cout << std::numeric_limits<cpp_bin_float_100>::digits << std::endl;
std::cout << std::numeric_limits<cpp_bin_float_100>::digits10 << std::endl;
// We can use any C++ std lib function, lets print all the digits as well:
std::cout << std::setprecision(std::numeric_limits<cpp_bin_float_100>::max_digits10)
<< log(b) << std::endl; // print log(2)
// We can also use any function from Boost.Math:
std::cout << boost::math::tgamma(b) << std::endl;
// These even work when the argument is an expression template:
std::cout << boost::math::tgamma(b * b) << std::endl;
// And since we have an extended exponent range we can generate some really large
// numbers here (4.0238726007709377354370243e+2564):
std::cout << boost::math::tgamma(cpp_bin_float_100(1000)) << std::endl;
//]
}
int main()
{
t1();
return 0;
}

View File

@ -0,0 +1,458 @@
// Copyright Paul A. Bristow 2013
// Copyright John Maddock 2013
// Copyright Christopher Kormanyos
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
// Examples of numeric_limits usage as snippets for multiprecision documentation.
// Includes text as Quickbook comments.
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <limits> // numeric_limits
#include <iomanip>
#include <locale>
#include <boost/assert.hpp>
#include <boost/math/constants/constants.hpp>
#include <boost/math/special_functions/nonfinite_num_facets.hpp>
#include <boost/math/special_functions/factorials.hpp>
#include <boost/math/special_functions/next.hpp>
#include <boost/math/tools/precision.hpp>
#include <boost/multiprecision/cpp_dec_float.hpp> // is decimal.
#include <boost/multiprecision/cpp_bin_float.hpp> // is binary.
#include <boost/test/unit_test.hpp> // Boost.Test
#include <boost/test/floating_point_comparison.hpp>
template<class RealType>
bool nearly_equal(RealType a, RealType b)
{
const RealType tolerance = 3 * std::numeric_limits<T>::epsilon();
return (a - tolerance * std::abs(a) <= b + tolerance * std::abs(b)) //
&& (a + tolerance * std::abs(a) >= b - tolerance * std::abs(b));
}
int main()
{
try
{
// Example of portable way to get std::numeric_limits<T>::max_digits10.
//[max_digits10_1
/*`For example, to be portable, including older platforms:
*/
typedef float T; // Any type: `double`, cpp_dec_float_50, bin_128bit_double_type ...
#if defined(BOOST_NO_CXX11_NUMERIC_LIMITS)
std::cout.precision(2 + std::numeric_limits<T>::digits * 3010U/10000U);
#else
# if (_MSC_VER <= 1600) // Correct wrong value for float.
std::cout.precision(2 + std::numeric_limits<T>::digits * 3010U/10000U);
# else
std::cout.precision(std::numeric_limits<T>::max_digits10);
# endif
#endif
std::cout << "std::cout.precision = " << std::cout.precision() << std::endl;
double x = 1.2345678901234567889;
std::cout << "x = " << x << std::endl; //
/*`which should output:
std::cout.precision = 9
x = 1.23456789
*/
//] [/max_digits10_1]
{
//[max_digits10_2
double write = 2./3; // Any arbitrary value that cannot be represented exactly.
double read = 0;
std::stringstream s;
s.precision(std::numeric_limits<double>::digits10); // or `float64_t` for 64-bit IEE754 double.
s << write;
s >> read;
if(read != write)
{
std::cout << std::setprecision(std::numeric_limits<double>::digits10)
<< read << " != " << write << std::endl;
}
//] [/max_digits10_2]
// 0.666666666666667 != 0.666666666666667
}
{
//[max_digits10_3
double pi = boost::math::double_constants::pi;
std::cout.precision(std::numeric_limits<double>::max_digits10);
std::cout << pi << std::endl; // 3.1415926535897931
//] [/max_digits10_3]
}
{
//[max_digits10_4
/*`and similarly for a much higher precision type:
*/
using namespace boost::multiprecision;
typedef number<cpp_dec_float<50> > cpp_dec_float_50; // 50 decimal digits.
using boost::multiprecision::cpp_dec_float_50;
cpp_dec_float_50 pi = boost::math::constants::pi<cpp_dec_float_50>();
std::cout.precision(std::numeric_limits<cpp_dec_float_50>::max_digits10);
std::cout << pi << std::endl;
// 3.141592653589793238462643383279502884197169399375105820974944592307816406
//] [/max_digits10_4]
}
{
//[max_digits10_5
for (int i = 2; i < 15; i++)
{
std::cout << std::setw(std::numeric_limits<int>::max_digits10)
<< boost::math::factorial<double>(i) << std::endl;
}
//] [/max_digits10_5]
}
}
catch(std::exception ex)
{
std::cout << "Caught Exception " << ex.what() << std::endl;
}
{
//[max_digits10_6
typedef double T;
bool denorm = std::numeric_limits<T>::denorm_min() < std::numeric_limits<T>::min();
BOOST_ASSERT(denorm);
//] [/max_digits10_6]
}
{
unsigned char c = 256;
std::cout << "char c = " << (int)c << std::endl;
}
{
//[digits10_1
std::cout
<< std::setw(std::numeric_limits<short>::digits10 +1 +1) // digits10+1, and +1 for sign.
<< std::showpos << (std::numeric_limits<short>::max)() // +32767
<< std::endl
<< std::setw(std::numeric_limits<short>::digits10 +1 +1)
<< (std::numeric_limits<short>::min)() << std::endl; // -32767
//] [/digits10_1]
}
{
//[digits10_2
std::cout
<< std::setw(std::numeric_limits<unsigned short>::digits10 +1 +1) // digits10+1, and +1 for sign.
<< std::showpos << (std::numeric_limits<unsigned short>::max)() // 65535
<< std::endl
<< std::setw(std::numeric_limits<unsigned short>::digits10 +1 +1) // digits10+1, and +1 for sign.
<< (std::numeric_limits<unsigned short>::min)() << std::endl; // 0
//] [/digits10_2]
}
std::cout <<std::noshowpos << std::endl;
{
//[digits10_3
std::cout.precision(std::numeric_limits<double>::max_digits10);
double d = 1e15;
double dp1 = d+1;
std::cout << d << "\n" << dp1 << std::endl;
// 1000000000000000
// 1000000000000001
std::cout << dp1 - d << std::endl; // 1
//] [/digits10_3]
}
{
//[digits10_4
std::cout.precision(std::numeric_limits<double>::max_digits10);
double d = 1e16;
double dp1 = d+1;
std::cout << d << "\n" << dp1 << std::endl;
// 10000000000000000
// 10000000000000000
std::cout << dp1 - d << std::endl; // 0 !!!
//] [/digits10_4]
}
{
//[epsilon_1
std::cout.precision(std::numeric_limits<double>::max_digits10);
double d = 1.;
double eps = std::numeric_limits<double>::epsilon();
double dpeps = d+eps;
std::cout << std::showpoint // Ensure all trailing zeros are shown.
<< d << "\n" // 1.0000000000000000
<< dpeps << std::endl; // 2.2204460492503131e-016
std::cout << dpeps - d // 1.0000000000000002
<< std::endl;
//] [epsilon_1]
}
{
//[epsilon_2
double one = 1.;
double nad = boost::math::float_next(one);
std::cout << nad << "\n" // 1.0000000000000002
<< nad - one // 2.2204460492503131e-016
<< std::endl;
//] [epsilon_2]
}
{
//[epsilon_3
std::cout.precision(std::numeric_limits<double>::max_digits10);
double d = 1.;
double eps = std::numeric_limits<double>::epsilon();
double dpeps = d + eps/2;
std::cout << std::showpoint // Ensure all trailing zeros are shown.
<< dpeps << "\n" // 1.0000000000000000
<< eps/2 << std::endl; // 1.1102230246251565e-016
std::cout << dpeps - d // 0.00000000000000000
<< std::endl;
//] [epsilon_3]
}
{
typedef double RealType;
//[epsilon_4
/*`A tolerance might be defined using this version of epsilon thus:
*/
RealType tolerance = boost::math::tools::epsilon<RealType>() * 2;
//] [epsilon_4]
}
{
//[digits10_5
-(std::numeric_limits<double>::max)() == std::numeric_limits<double>::lowest();
//] [/digits10_5]
}
{
//[denorm_min_1
std::cout.precision(std::numeric_limits<double>::max_digits10);
if (std::numeric_limits<double>::has_denorm == std::denorm_present)
{
double d = std::numeric_limits<double>::denorm_min();
std::cout << d << std::endl; // 4.9406564584124654e-324
int exponent;
double significand = frexp(d, &exponent);
std::cout << "exponent = " << std::hex << exponent << std::endl; // fffffbcf
std::cout << "significand = " << std::hex << significand << std::endl; // 0.50000000000000000
}
else
{
std::cout << "No denormalization. " << std::endl;
}
//] [denorm_min_1]
}
{
//[round_error_1
double round_err = std::numeric_limits<double>::epsilon() // 2.2204460492503131e-016
* std::numeric_limits<double>::round_error(); // 1/2
std::cout << round_err << std::endl; // 1.1102230246251565e-016
//] [/round_error_1]
}
{
typedef double T;
//[tolerance_1
/*`For example, if we want a tolerance that might suit about 9 arithmetical operations,
say sqrt(9) = 3, we could define:
*/
T tolerance = 3 * std::numeric_limits<T>::epsilon();
/*`This is very widely used in Boost.Math testing
with Boost.Test's macro `BOOST_CHECK_CLOSE_FRACTION`
*/
T expected = 1.0;
T calculated = 1.0 + std::numeric_limits<T>::epsilon();
using boost::test_tools::check_is_close;
bool r = check_is_close(expected, calculated, tolerance);
std::cout << std::boolalpha << r << std::endl; // true
/*`If using Boost.Test, then call the macro version:
``BOOST_CHECK_CLOSE_FRACTION(expected, calculated, tolerance);``
*/
//] [/tolerance_1]
}
{
//[tolerance_2
using boost::multiprecision::number;
using boost::multiprecision::cpp_dec_float;
using boost::multiprecision::et_off;
typedef number<cpp_dec_float<50>, et_off > cpp_dec_float_50; // 50 decimal digits.
/*`[note that Boost.Test does not yet allow floating-point comparisons with expression templates on,
so the default expression template parameter has been replaced by `et_off`.]
*/
cpp_dec_float_50 tolerance = 3 * std::numeric_limits<cpp_dec_float_50>::epsilon();
cpp_dec_float_50 expected = boost::math::constants::two_pi<cpp_dec_float_50>();
cpp_dec_float_50 calculated = 2 * boost::math::constants::pi<cpp_dec_float_50>();
using boost::test_tools::check_is_close;
bool r = check_is_close(expected, calculated, tolerance);
std::cout << std::boolalpha << r << std::endl; // true
//] [/tolerance_2]
}
{
//[tolerance_3
using boost::multiprecision::cpp_bin_float_quad;
cpp_bin_float_quad tolerance = 3 * std::numeric_limits<cpp_bin_float_quad>::epsilon();
cpp_bin_float_quad expected = boost::math::constants::two_pi<cpp_bin_float_quad>();
cpp_bin_float_quad calculated = 2 * boost::math::constants::pi<cpp_bin_float_quad>();
using boost::test_tools::check_is_close;
bool r = check_is_close(expected, calculated, tolerance);
std::cout << std::boolalpha << r << std::endl; // true
//] [/tolerance_3]
}
{
//[nan_1]
/*`NaN can be used with binary multiprecision types like `cpp_bin_float_quad`:
*/
using boost::multiprecision::cpp_bin_float_quad;
if (std::numeric_limits<cpp_bin_float_quad>::has_quiet_NaN == true)
{
cpp_bin_float_quad tolerance = 3 * std::numeric_limits<cpp_bin_float_quad>::epsilon();
cpp_bin_float_quad NaN = std::numeric_limits<cpp_bin_float_quad>::quiet_NaN();
std::cout << "cpp_bin_float_quad NaN is " << NaN << std::endl; // cpp_bin_float_quad NaN is nan
cpp_bin_float_quad expected = NaN;
cpp_bin_float_quad calculated = 2 * NaN;
using boost::test_tools::check_is_close;
bool r = check_is_close(expected, expected, tolerance);
std::cout << std::boolalpha << r << std::endl; // false, as expected because all comparisons with NaNs are false.
r = check_is_close(expected, calculated, tolerance);
std::cout << std::boolalpha << r << std::endl; // false, as expected because all comparisons with NaNs are false.
}
else
{
std::cout << "Type " << typeid(cpp_bin_float_quad).name() << " does not have NaNs!" << std::endl;
}
//] [/nan_1]
}
{
//[facet_1]
/*`
See [@boost:/libs/math/example/nonfinite_facet_sstream.cpp]
and we also need
#include <boost/math/special_functions/nonfinite_num_facets.hpp>
Then we can equally well use a multiprecision type cpp_bin_float_quad:
*/
using boost::multiprecision::cpp_bin_float_quad;
typedef cpp_bin_float_quad T;
using boost::math::nonfinite_num_put;
using boost::math::nonfinite_num_get;
{
std::locale old_locale;
std::locale tmp_locale(old_locale, new nonfinite_num_put<char>);
std::locale new_locale(tmp_locale, new nonfinite_num_get<char>);
std::stringstream ss;
ss.imbue(new_locale);
T inf = std::numeric_limits<T>::infinity();
ss << inf; // Write out.
assert(ss.str() == "inf");
T r;
ss >> r; // Read back in.
assert(inf == r); // Confirms that the floating-point values really are identical.
std::cout << "infinity output was " << ss.str() << std::endl;
std::cout << "infinity input was " << r << std::endl;
}
/*`
infinity output was inf
infinity input was inf
Similarly we can do the same with NaN (except that we cannot use `assert`)
*/
{
std::locale old_locale;
std::locale tmp_locale(old_locale, new nonfinite_num_put<char>);
std::locale new_locale(tmp_locale, new nonfinite_num_get<char>);
std::stringstream ss;
ss.imbue(new_locale);
T n;
T NaN = std::numeric_limits<T>::quiet_NaN();
ss << NaN; // Write out.
assert(ss.str() == "nan");
std::cout << "NaN output was " << ss.str() << std::endl;
ss >> n; // Read back in.
assert(NaN == n); // Confirms that the floating-point values really are identical.
std::cout << "NaN input was " << n << std::endl;
}
/*`
NaN output was nan
NaN input was nan
*/
//] [/facet_1]
}
} // int main()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,690 @@
///////////////////////////////////////////////////////////////
// Copyright 2013 John Maddock. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
#ifndef BOOST_MP_CPP_BIN_FLOAT_IO_HPP
#define BOOST_MP_CPP_BIN_FLOAT_IO_HPP
namespace boost{ namespace multiprecision{ namespace cpp_bf_io_detail{
//
// Multiplies a by b and shifts the result so it fits inside max_bits bits,
// returns by how much the result was shifted.
//
template <class I>
inline I restricted_multiply(cpp_int& result, const cpp_int& a, const cpp_int& b, I max_bits, boost::int64_t& error)
{
result = a * b;
I gb = msb(result);
I rshift = 0;
if(gb > max_bits)
{
rshift = gb - max_bits;
I lb = lsb(result);
int roundup = 0;
// The error rate increases by the error of both a and b,
// this may be overly pessimistic in many case as we're assuming
// that a and b have the same level of uncertainty...
if(lb < rshift)
error = error ? error * 2 : 1;
if(rshift)
{
BOOST_ASSERT(rshift < INT_MAX);
if(bit_test(result, static_cast<unsigned>(rshift - 1)))
{
if(lb == rshift - 1)
roundup = 1;
else
roundup = 2;
}
result >>= rshift;
}
if((roundup == 2) || ((roundup == 1) && (result.backend().limbs()[0] & 1)))
++result;
}
return rshift;
}
//
// Computes a^e shifted to the right so it fits in max_bits, returns how far
// to the right we are shifted.
//
template <class I>
inline I restricted_pow(cpp_int& result, const cpp_int& a, I e, I max_bits, boost::int64_t& error)
{
BOOST_ASSERT(&result != &a);
I exp = 0;
if(e == 1)
{
result = a;
return exp;
}
else if(e == 2)
{
return restricted_multiply(result, a, a, max_bits, error);
}
else if(e == 3)
{
exp = restricted_multiply(result, a, a, max_bits, error);
exp += restricted_multiply(result, result, a, max_bits, error);
return exp;
}
I p = e / 2;
exp = restricted_pow(result, a, p, max_bits, error);
exp *= 2;
exp += restricted_multiply(result, result, result, max_bits, error);
if(e & 1)
exp += restricted_multiply(result, result, a, max_bits, error);
return exp;
}
inline int get_round_mode(const cpp_int& what, boost::int64_t location, boost::int64_t error)
{
//
// Can we round what at /location/, if the error in what is /error/ in
// units of 0.5ulp. Return:
//
// -1: Can't round.
// 0: leave as is.
// 1: tie.
// 2: round up.
//
BOOST_ASSERT(location >= 0);
BOOST_ASSERT(location < INT_MAX);
boost::int64_t error_radius = error & 1 ? (1 + error) / 2 : error / 2;
if(error_radius && ((int)msb(error_radius) >= location))
return -1;
if(bit_test(what, static_cast<unsigned>(location)))
{
if((int)lsb(what) == location)
return error ? -1 : 1; // Either a tie or can't round depending on whether we have any error
if(!error)
return 2; // no error, round up.
cpp_int t = what - error_radius;
if((int)lsb(t) >= location)
return -1;
return 2;
}
else if(error)
{
cpp_int t = what + error_radius;
return bit_test(t, static_cast<unsigned>(location)) ? -1 : 0;
}
return 0;
}
inline int get_round_mode(cpp_int& r, cpp_int& d, boost::int64_t error, const cpp_int& q)
{
//
// Lets suppose we have an inexact division by d+delta, where the true
// value for the divisor is d, and with |delta| <= error/2, then
// we have calculated q and r such that:
//
// n r
// --- = q + -----------
// d + error d + error
//
// Rearranging for n / d we get:
//
// n delta*q + r
// --- = q + -------------
// d d
//
// So rounding depends on whether 2r + error * q > d.
//
// We return:
// 0 = down down.
// 1 = tie.
// 2 = round up.
// -1 = couldn't decide.
//
r <<= 1;
int c = r.compare(d);
if(c == 0)
return error ? -1 : 1;
if(c > 0)
{
if(error)
{
r -= error * q;
return r.compare(d) > 0 ? 2 : -1;
}
return 2;
}
if(error)
{
r += error * q;
return r.compare(d) < 0 ? 0 : -1;
}
return 0;
}
} // namespace
namespace backends{
template <unsigned Digits, digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE>
cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>& cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::operator=(const char *s)
{
cpp_int n;
boost::intmax_t decimal_exp = 0;
boost::intmax_t digits_seen = 0;
static const boost::intmax_t max_digits_seen = 4 + (cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count * 301L) / 1000;
bool ss = false;
//
// Extract the sign:
//
if(*s == '-')
{
ss = true;
++s;
}
else if(*s == '+')
++s;
//
// Special cases first:
//
if((std::strcmp(s, "nan") == 0) || (std::strcmp(s, "NaN") == 0) || (std::strcmp(s, "NAN") == 0))
{
return *this = std::numeric_limits<number<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> > >::quiet_NaN().backend();
}
if((std::strcmp(s, "inf") == 0) || (std::strcmp(s, "Inf") == 0) || (std::strcmp(s, "INF") == 0) || (std::strcmp(s, "infinity") == 0) || (std::strcmp(s, "Infinity") == 0) || (std::strcmp(s, "INFINITY") == 0))
{
*this = std::numeric_limits<number<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> > >::infinity().backend();
if(ss)
negate();
return *this;
}
//
// Digits before the point:
//
while(*s && (*s >= '0') && (*s <= '9'))
{
n *= 10u;
n += *s - '0';
if(digits_seen || (*s != '0'))
++digits_seen;
++s;
}
// The decimal point (we really should localise this!!)
if(*s && (*s == '.'))
++s;
//
// Digits after the point:
//
while(*s && (*s >= '0') && (*s <= '9'))
{
n *= 10u;
n += *s - '0';
--decimal_exp;
if(digits_seen || (*s != '0'))
++digits_seen;
++s;
if(digits_seen > max_digits_seen)
break;
}
//
// Digits we're skipping:
//
while(*s && (*s >= '0') && (*s <= '9'))
++s;
//
// See if there's an exponent:
//
if(*s && ((*s == 'e') || (*s == 'E')))
{
++s;
boost::intmax_t e = 0;
bool es = false;
if(*s && (*s == '-'))
{
es = true;
++s;
}
else if(*s && (*s == '+'))
++s;
while(*s && (*s >= '0') && (*s <= '9'))
{
e *= 10u;
e += *s - '0';
++s;
}
if(es)
e = -e;
decimal_exp += e;
}
if(*s)
{
//
// Oops unexpected input at the end of the number:
//
BOOST_THROW_EXCEPTION(std::runtime_error("Unable to parse string as a valid floating point number."));
}
if(n == 0)
{
// Result is necessarily zero:
*this = static_cast<limb_type>(0u);
return *this;
}
static const unsigned limb_bits = sizeof(limb_type) * CHAR_BIT;
//
// Set our working precision - this is heuristic based, we want
// a value as small as possible > cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count to avoid large computations
// and excessive memory usage, but we also want to avoid having to
// up the computation and start again at a higher precision.
// So we round cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count up to the nearest whole number of limbs, and add
// one limb for good measure. This works very well for small exponents,
// but for larger exponents we may may need to restart, we could add some
// extra precision right from the start for larger exponents, but this
// seems to be slightly slower in the *average* case:
//
#ifdef BOOST_MP_STRESS_IO
boost::intmax_t max_bits = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + 32;
#else
boost::intmax_t max_bits = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + (cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count % limb_bits ? limb_bits - cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count % limb_bits : 0) + limb_bits;
#endif
boost::int64_t error = 0;
boost::intmax_t calc_exp = 0;
boost::intmax_t final_exponent = 0;
if(decimal_exp >= 0)
{
// Nice and simple, the result is an integer...
do
{
cpp_int t;
if(decimal_exp)
{
calc_exp = boost::multiprecision::cpp_bf_io_detail::restricted_pow(t, cpp_int(5), decimal_exp, max_bits, error);
calc_exp += boost::multiprecision::cpp_bf_io_detail::restricted_multiply(t, t, n, max_bits, error);
}
else
t = n;
final_exponent = (boost::int64_t)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - 1 + decimal_exp + calc_exp;
int rshift = msb(t) - cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + 1;
if(rshift > 0)
{
final_exponent += rshift;
int roundup = boost::multiprecision::cpp_bf_io_detail::get_round_mode(t, rshift - 1, error);
t >>= rshift;
if((roundup == 2) || ((roundup == 1) && t.backend().limbs()[0] & 1))
++t;
else if(roundup < 0)
{
#ifdef BOOST_MP_STRESS_IO
max_bits += 32;
#else
max_bits *= 2;
#endif
error = 0;
continue;
}
}
else
{
BOOST_ASSERT(!error);
}
if(final_exponent > cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent)
{
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent;
final_exponent -= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent;
}
else if(final_exponent < cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent)
{
// Underflow:
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent;
final_exponent -= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent;
}
else
{
exponent() = static_cast<Exponent>(final_exponent);
final_exponent = 0;
}
copy_and_round(*this, t.backend());
break;
}
while(true);
if(ss != sign())
negate();
}
else
{
// Result is the ratio of two integers: we need to organise the
// division so as to produce at least an N-bit result which we can
// round according to the remainder.
//cpp_int d = pow(cpp_int(5), -decimal_exp);
do
{
cpp_int d;
calc_exp = boost::multiprecision::cpp_bf_io_detail::restricted_pow(d, cpp_int(5), -decimal_exp, max_bits, error);
int shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - msb(n) + msb(d);
final_exponent = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - 1 + decimal_exp - calc_exp;
if(shift > 0)
{
n <<= shift;
final_exponent -= static_cast<Exponent>(shift);
}
cpp_int q, r;
divide_qr(n, d, q, r);
int gb = msb(q);
BOOST_ASSERT((gb >= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - 1));
//
// Check for rounding conditions we have to
// handle ourselves:
//
int roundup = 0;
if(gb == cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - 1)
{
// Exactly the right number of bits, use the remainder to round:
roundup = boost::multiprecision::cpp_bf_io_detail::get_round_mode(r, d, error, q);
}
else if(bit_test(q, gb - (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count) && ((int)lsb(q) == (gb - (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count)))
{
// Too many bits in q and the bits in q indicate a tie, but we can break that using r,
// note that the radius of error in r is error/2 * q:
int shift = gb - (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + 1;
q >>= shift;
final_exponent += static_cast<Exponent>(shift);
BOOST_ASSERT((msb(q) >= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - 1));
if(error && (r < (error / 2) * q))
roundup = -1;
else if(error && (r + (error / 2) * q >= d))
roundup = -1;
else
roundup = r ? 2 : 1;
}
else if(error && (((error / 2) * q + r >= d) || (r < (error / 2) * q)))
{
// We might have been rounding up, or got the wrong quotient: can't tell!
roundup = -1;
}
if(roundup < 0)
{
#ifdef BOOST_MP_STRESS_IO
max_bits += 32;
#else
max_bits *= 2;
#endif
error = 0;
if(shift > 0)
{
n >>= shift;
final_exponent += static_cast<Exponent>(shift);
}
continue;
}
else if((roundup == 2) || ((roundup == 1) && q.backend().limbs()[0] & 1))
++q;
if(final_exponent > cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent)
{
// Overflow:
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent;
final_exponent -= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent;
}
else if(final_exponent < cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent)
{
// Underflow:
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent;
final_exponent -= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent;
}
else
{
exponent() = static_cast<Exponent>(final_exponent);
final_exponent = 0;
}
copy_and_round(*this, q.backend());
if(ss != sign())
negate();
break;
}
while(true);
}
//
// Check for scaling and/or over/under-flow:
//
final_exponent += exponent();
if(final_exponent > cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent)
{
// Overflow:
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::exponent_infinity;
bits() = limb_type(0);
}
else if(final_exponent < cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::min_exponent)
{
// Underflow:
exponent() = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::exponent_zero;
bits() = limb_type(0);
sign() = 0;
}
else
{
exponent() = static_cast<Exponent>(final_exponent);
}
return *this;
}
template <unsigned Digits, digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE>
std::string cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::str(std::streamsize dig, std::ios_base::fmtflags f) const
{
if(dig == 0)
dig = std::numeric_limits<number<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> > >::max_digits10;
bool scientific = (f & std::ios_base::scientific) == std::ios_base::scientific;
bool fixed = !scientific && (f & std::ios_base::fixed);
std::string s;
if(exponent() <= cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::max_exponent)
{
// How far to left-shift in order to demormalise the mantissa:
boost::intmax_t shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - exponent() - 1;
boost::intmax_t digits_wanted = static_cast<int>(dig);
boost::intmax_t base10_exp = exponent() >= 0 ? static_cast<boost::intmax_t>(std::floor(0.30103 * exponent())) : static_cast<boost::intmax_t>(std::ceil(0.30103 * exponent()));
//
// For fixed formatting we want /dig/ digits after the decimal point,
// so if the exponent is zero, allowing for the one digit before the
// decimal point, we want 1 + dig digits etc.
//
if(fixed)
digits_wanted += 1 + base10_exp;
if(scientific)
digits_wanted += 1;
if(digits_wanted < -1)
{
// Fixed precision, no significant digits, and nothing to round!
s = "0";
if(sign())
s.insert(0, 1, '-');
boost::multiprecision::detail::format_float_string(s, base10_exp, dig, f, true);
return s;
}
//
// power10 is the base10 exponent we need to multiply/divide by in order
// to convert our denormalised number to an integer with the right number of digits:
//
boost::intmax_t power10 = digits_wanted - base10_exp - 1;
//
// If we calculate 5^power10 rather than 10^power10 we need to move
// 2^power10 into /shift/
//
shift -= power10;
cpp_int i;
int roundup = 0; // 0=no rounding, 1=tie, 2=up
static const unsigned limb_bits = sizeof(limb_type) * CHAR_BIT;
//
// Set our working precision - this is heuristic based, we want
// a value as small as possible > cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count to avoid large computations
// and excessive memory usage, but we also want to avoid having to
// up the computation and start again at a higher precision.
// So we round cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count up to the nearest whole number of limbs, and add
// one limb for good measure. This works very well for small exponents,
// but for larger exponents we add a few extra limbs to max_bits:
//
#ifdef BOOST_MP_STRESS_IO
boost::intmax_t max_bits = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + 32;
#else
boost::intmax_t max_bits = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count + (cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count % limb_bits ? limb_bits - cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count % limb_bits : 0) + limb_bits;
if(power10)
max_bits += (msb(std::abs(power10)) / 8) * limb_bits;
#endif
do
{
boost::int64_t error = 0;
boost::intmax_t calc_exp = 0;
//
// Our integer result is: bits() * 2^-shift * 5^power10
//
i = bits();
if(shift < 0)
{
if(power10 >= 0)
{
// We go straight to the answer with all integer arithmetic,
// the result is always exact and never needs rounding:
BOOST_ASSERT(power10 <= (boost::intmax_t)INT_MAX);
i <<= -shift;
if(power10)
i *= pow(cpp_int(5), static_cast<unsigned>(power10));
}
else if(power10 < 0)
{
cpp_int d;
calc_exp = boost::multiprecision::cpp_bf_io_detail::restricted_pow(d, cpp_int(5), -power10, max_bits, error);
shift += calc_exp;
BOOST_ASSERT(shift < 0); // Must still be true!
i <<= -shift;
cpp_int r;
divide_qr(i, d, i, r);
roundup = boost::multiprecision::cpp_bf_io_detail::get_round_mode(r, d, error, i);
if(roundup < 0)
{
#ifdef BOOST_MP_STRESS_IO
max_bits += 32;
#else
max_bits *= 2;
#endif
shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - exponent() - 1 - power10;
continue;
}
}
}
else
{
//
// Our integer is bits() * 2^-shift * 10^power10
//
if(power10 > 0)
{
if(power10)
{
cpp_int t;
calc_exp = boost::multiprecision::cpp_bf_io_detail::restricted_pow(t, cpp_int(5), power10, max_bits, error);
calc_exp += boost::multiprecision::cpp_bf_io_detail::restricted_multiply(i, i, t, max_bits, error);
shift -= calc_exp;
}
if((shift < 0) || ((shift == 0) && error))
{
// We only get here if we were asked for a crazy number of decimal digits -
// more than are present in a 2^max_bits number.
#ifdef BOOST_MP_STRESS_IO
max_bits += 32;
#else
max_bits *= 2;
#endif
shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - exponent() - 1 - power10;
continue;
}
if(shift)
{
roundup = boost::multiprecision::cpp_bf_io_detail::get_round_mode(i, shift - 1, error);
if(roundup < 0)
{
#ifdef BOOST_MP_STRESS_IO
max_bits += 32;
#else
max_bits *= 2;
#endif
shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - exponent() - 1 - power10;
continue;
}
i >>= shift;
}
}
else
{
// We're right shifting, *and* dividing by 5^-power10,
// so 5^-power10 can never be that large or we'd simply
// get zero as a result, and that case is already handled above:
cpp_int r;
BOOST_ASSERT(-power10 < INT_MAX);
cpp_int d = pow(cpp_int(5), static_cast<unsigned>(-power10));
d <<= shift;
divide_qr(i, d, i, r);
r <<= 1;
int c = r.compare(d);
roundup = c < 0 ? 0 : c == 0 ? 1 : 2;
}
}
s = i.str(0, std::ios_base::fmtflags(0));
//
// Check if we got the right number of digits, this
// is really a test of whether we calculated the
// decimal exponent correctly:
//
boost::intmax_t digits_got = i ? static_cast<boost::intmax_t>(s.size()) : 0;
if(digits_got != digits_wanted)
{
base10_exp += digits_got - digits_wanted;
if(fixed)
digits_wanted = digits_got; // strange but true.
power10 = digits_wanted - base10_exp - 1;
shift = (int)cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count - exponent() - 1 - power10;
if(fixed)
break;
roundup = 0;
}
else
break;
}
while(true);
//
// Check whether we need to round up: note that we could equally round up
// the integer /i/ above, but since we need to perform the rounding *after*
// the conversion to a string and the digit count check, we might as well
// do it here:
//
if((roundup == 2) || ((roundup == 1) && ((s[s.size() - 1] - '0') & 1)))
{
boost::multiprecision::detail::round_string_up_at(s, static_cast<int>(s.size() - 1), base10_exp);
}
if(sign())
s.insert(0, 1, '-');
boost::multiprecision::detail::format_float_string(s, base10_exp, dig, f, false);
}
else
{
switch(exponent())
{
case exponent_zero:
s = "0";
boost::multiprecision::detail::format_float_string(s, 0, dig, f, true);
break;
case exponent_nan:
s = "nan";
break;
case exponent_infinity:
s = sign() ? "-inf" : f & std::ios_base::showpos ? "+inf" : "inf";
break;
}
}
return s;
}
}}} // namespaces
#endif

View File

@ -0,0 +1,132 @@
///////////////////////////////////////////////////////////////
// Copyright 2013 John Maddock. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
#ifndef BOOST_MULTIPRECISION_CPP_BIN_FLOAT_TRANSCENDENTAL_HPP
#define BOOST_MULTIPRECISION_CPP_BIN_FLOAT_TRANSCENDENTAL_HPP
namespace boost{ namespace multiprecision{ namespace backends{
template <unsigned Digits, digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE>
void eval_exp_taylor(cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> &res, const cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> &arg)
{
static const int bits = cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>::bit_count;
//
// Taylor series for small argument, note returns exp(x) - 1:
//
res = limb_type(0);
cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> num(arg), denom, t;
denom = limb_type(1);
eval_add(res, num);
for(unsigned k = 2; ; ++k)
{
eval_multiply(denom, k);
eval_multiply(num, arg);
eval_divide(t, num, denom);
eval_add(res, t);
if(eval_is_zero(t) || (res.exponent() - bits > t.exponent()))
break;
}
}
template <unsigned Digits, digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE>
void eval_exp(cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> &res, const cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> &arg)
{
//
// This is based on MPFR's method, let:
//
// n = floor(x / ln(2))
//
// Then:
//
// r = x - n ln(2) : 0 <= r < ln(2)
//
// We can reduce r further by dividing by 2^k, with k ~ sqrt(n),
// so if:
//
// e0 = exp(r / 2^k) - 1
//
// With e0 evaluated by taylor series for small arguments, then:
//
// exp(x) = 2^n (1 + e0)^2^k
//
// Note that to preserve precision we actually square (1 + e0) k times, calculating
// the result less one each time, i.e.
//
// (1 + e0)^2 - 1 = e0^2 + 2e0
//
// Then add the final 1 at the end, given that e0 is small, this effectively wipes
// out the error in the last step.
//
using default_ops::eval_multiply;
using default_ops::eval_subtract;
using default_ops::eval_add;
using default_ops::eval_convert_to;
int type = eval_fpclassify(arg);
bool isneg = eval_get_sign(arg) < 0;
if(type == FP_NAN)
{
res = arg;
return;
}
else if(type == FP_INFINITE)
{
res = arg;
if(isneg)
res = limb_type(0u);
else
res = arg;
return;
}
else if(type == FP_ZERO)
{
res = limb_type(1);
return;
}
cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> t, n;
if(isneg)
{
t = arg;
t.negate();
eval_exp(res, t);
t.swap(res);
res = limb_type(1);
eval_divide(res, t);
return;
}
eval_divide(n, arg, default_ops::get_constant_ln2<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> >());
eval_floor(n, n);
eval_multiply(t, n, default_ops::get_constant_ln2<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> >());
eval_subtract(t, arg);
t.negate();
BOOST_ASSERT(t.compare(limb_type(0)) >= 0);
BOOST_ASSERT(t.compare(default_ops::get_constant_ln2<cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE> >()) < 0);
Exponent k, nn;
eval_convert_to(&nn, n);
k = nn ? Exponent(1) << (msb(nn) / 2) : 0;
eval_ldexp(t, t, -k);
eval_exp_taylor(res, t);
//
// Square 1 + res k times:
//
for(int s = 0; s < k; ++s)
{
t.swap(res);
eval_multiply(res, t, t);
eval_ldexp(t, t, 1);
eval_add(res, t);
}
eval_add(res, limb_type(1));
eval_ldexp(res, res, nn);
}
}}} // namespaces
#endif

View File

@ -12,7 +12,7 @@
#if !defined(TEST_MPF) && !defined(TEST_MPZ) && \
!defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPQ) \
&& !defined(TEST_TOMMATH) && !defined(TEST_TOMMATH_BOOST_RATIONAL) && !defined(TEST_MPZ_BOOST_RATIONAL)\
&& !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_RATIONAL)
&& !defined(TEST_CPP_INT) && !defined(TEST_CPP_INT_RATIONAL) && !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF
# define TEST_MPZ
# define TEST_MPQ
@ -22,6 +22,7 @@
# define TEST_TOMMATH
# define TEST_CPP_INT
# define TEST_CPP_INT_RATIONAL
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -39,6 +40,9 @@
#ifdef TEST_CPP_DEC_FLOAT
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#ifdef TEST_CPP_BIN_FLOAT
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -84,15 +88,6 @@ private:
unsigned bits_wanted; // for integer types
namespace boost{ namespace multiprecision{
template<>
class number_category<boost::int64_t> : public mpl::int_<number_kind_integer>{};
template<>
class number_category<boost::uint64_t> : public mpl::int_<number_kind_integer>{};
}}
template <class T, int Type>
struct tester
{
@ -841,6 +836,11 @@ int main()
test<boost::multiprecision::cpp_dec_float_100>("cpp_dec_float", 100);
test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<500> > >("cpp_dec_float", 500);
#endif
#ifdef TEST_CPP_BIN_FLOAT
test<boost::multiprecision::cpp_bin_float_50>("cpp_bin_float", 50);
test<boost::multiprecision::cpp_bin_float_100>("cpp_bin_float", 100);
test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<500> >::digits> > >("cpp_bin_float", 500);
#endif
#ifdef TEST_MPFR
test<boost::multiprecision::mpfr_float_50>("mpfr_float", 50);
test<boost::multiprecision::mpfr_float_100>("mpfr_float", 100);

View File

@ -7,12 +7,13 @@
#define BOOST_MATH_PROMOTE_DOUBLE_POLICY false
#if !defined(TEST_MPFR) && !defined(TEST_MPREAL) && !defined(TEST_MPF) && !defined(TEST_MPREAL) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) && !defined(TEST_FLOAT)
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_CLASS) && !defined(TEST_FLOAT) && !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPFR
# define TEST_MPF
# define TEST_CPP_DEC_FLOAT
# define TEST_MPFR_CLASS
# define TEST_MPREAL
# define TEST_CPP_BIN_FLOAT
//# define TEST_MPFR_CLASS
//# define TEST_MPREAL
# define TEST_FLOAT
#endif
@ -34,6 +35,10 @@
#ifdef TEST_CPP_DEC_FLOAT
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#ifdef TEST_CPP_BIN_FLOAT
#include <boost/multiprecision/cpp_bin_float.hpp>
#include <boost/multiprecision/mpfr.hpp>
#endif
#include <boost/math/special_functions/bessel.hpp>
#include <boost/math/tools/rational.hpp>
#include <boost/math/distributions/non_central_t.hpp>

View File

@ -14,4 +14,7 @@ void bessel_tests_2()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_50", test_bessel<cpp_dec_float_50>, 3);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_50", test_bessel<cpp_bin_float_50>, 3);
#endif
}

View File

@ -10,6 +10,9 @@ void bessel_tests_6()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_100", test_bessel<cpp_dec_float_100>);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_100", test_bessel<cpp_bin_float_100>);
#endif
#ifdef TEST_MPFR_CLASS
time_proc("mpfr_class", test_bessel<mpfr_class>);
#endif

View File

@ -13,6 +13,9 @@ void nct_tests_3()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_50", test_nct<cpp_dec_float_50>);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_50", test_nct<cpp_bin_float_50>, 3);
#endif
#ifdef TEST_MPFR_CLASS
time_proc("mpfr_class", test_nct<mpfr_class>);
#endif

View File

@ -13,6 +13,9 @@ void nct_tests_6()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_100", test_nct<cpp_dec_float_100>);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_100", test_nct<cpp_bin_float_100>);
#endif
#ifdef TEST_MPFR_CLASS
time_proc("mpfr_class", test_nct<mpfr_class>);
#endif

View File

@ -29,6 +29,9 @@ void poly_tests()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_50", test_polynomial<cpp_dec_float_50>);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_50", test_polynomial<cpp_bin_float_50>);
#endif
#ifdef TEST_MPFR_CLASS
time_proc("mpfr_class", test_polynomial<mpfr_class>);
#endif
@ -57,6 +60,9 @@ void poly_tests()
#ifdef TEST_CPP_DEC_FLOAT
time_proc("cpp_dec_float_100", test_polynomial<cpp_dec_float_100>);
#endif
#ifdef TEST_CPP_BIN_FLOAT
time_proc("cpp_bin_float_100", test_polynomial<cpp_bin_float_100>);
#endif
#ifdef TEST_MPFR_CLASS
time_proc("mpfr_class", test_polynomial<mpfr_class>);
#endif

View File

@ -60,6 +60,10 @@ run test_arithmetic_cpp_dec_float_1.cpp ;
run test_arithmetic_cpp_dec_float_2.cpp ;
run test_arithmetic_cpp_dec_float_3.cpp ;
run test_arithmetic_cpp_bin_float_1.cpp ;
run test_arithmetic_cpp_bin_float_2.cpp ;
run test_arithmetic_cpp_bin_float_3.cpp ;
run test_arithmetic_mpf_50.cpp gmp : : : [ check-target-builds ../config//has_gmp : : <build>no ] ;
run test_arithmetic_mpf.cpp gmp : : : [ check-target-builds ../config//has_gmp : : <build>no ] ;
run test_arithmetic_mpz.cpp gmp : : : [ check-target-builds ../config//has_gmp : : <build>no ] ;
@ -172,6 +176,13 @@ run test_numeric_limits.cpp
<define>TEST_CPP_DEC_FLOAT
: test_numeric_limits_cpp_dec_float ;
run test_numeric_limits.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_BIN_FLOAT
: test_numeric_limits_cpp_bin_float ;
run test_numeric_limits.cpp $(TOMMATH)
: # command line
: # input files
@ -240,6 +251,12 @@ for local source in test_exp.cpp test_log.cpp test_pow.cpp test_sinh.cpp test_sq
: # requirements
<define>TEST_CPP_DEC_FLOAT
: $(source:B)_cpp_dec_float ;
run $(source)
: # command line
: # input files
: # requirements
<define>TEST_CPP_BIN_FLOAT
: $(source:B)_cpp_bin_float ;
run $(source) quadmath
: # command line
: # input files
@ -327,12 +344,41 @@ run test_test.cpp ;
run test_cpp_int_lit.cpp ;
compile test_constexpr.cpp : [ check-target-builds ../config//has_float128 : <define>HAVE_FLOAT128 : ] [ check-target-builds ../config//has_intel_quad : <define>HAVE_FLOAT128 : ] ;
run test_cpp_bin_float_io.cpp /boost/system//boost_system /boost/chrono//boost_chrono
: # command line
: # input files
: # requirements
<define>TEST_CPP_BIN_FLOAT
<define>TEST1
release # Otherwise runtime is slow
: test_cpp_bin_float_io_1
;
run test_cpp_bin_float_io.cpp /boost/system//boost_system /boost/chrono//boost_chrono
: # command line
: # input files
: # requirements
<define>TEST_CPP_BIN_FLOAT
<define>TEST2
release # Otherwise runtime is slow
: test_cpp_bin_float_io_2
;
run test_cpp_bin_float.cpp mpfr gmp /boost/system//boost_system /boost/chrono//boost_chrono
: # command line
: # input files
: # requirements
<define>TEST_MPFR
[ check-target-builds ../config//has_mpfr : : <build>no ]
release # Otherwise runtime is slow
;
run test_float_io.cpp
: # command line
: # input files
: # requirements
<define>TEST_CPP_DEC_FLOAT
#release # Otherwise runtime is slow
release # Otherwise runtime is slow
: test_float_io_cpp_dec_float ;
run test_float_io.cpp gmp
@ -521,6 +567,7 @@ run ../example/logged_adaptor.cpp mpfi mpfr gmp
run ../example/cpp_dec_float_snips.cpp ;
run ../example/cpp_int_snips.cpp ;
run ../example/cpp_bin_float_snips.cpp ;
run ../example/tommath_snips.cpp $(TOMMATH)
: # command line
@ -551,6 +598,7 @@ compile include_test/tommath_include_test.cpp
[ check-target-builds ../config//has_tommath : : <build>no ] ;
compile include_test/cpp_int_include_test.cpp ;
compile include_test/cpp_dec_float_include_test.cpp ;
compile include_test/cpp_bin_float_include_test.cpp ;
run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp ;
run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp ;
@ -629,6 +677,18 @@ if $(enable-specfun)
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_cpp_dec_float ;
run $(source) /boost/test//boost_unit_test_framework/<link>static
/boost/regex//boost_regex/<link>static
math/instances//test_instances_cpp_bin_float/<link>static
: # command line
: # input files
: # requirements
<define>TEST_CPP_BIN_FLOAT
<define>BOOST_ALL_NO_LIB
<optimization>speed
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_cpp_bin_float ;
run $(source) quadmath
/boost/test//boost_unit_test_framework/<link>static
/boost/regex//boost_regex/<link>static
@ -723,6 +783,12 @@ if ! $(disable-concepts)
<debug-symbols>off
: $(source:B)_cpp_dec_float ;
compile $(source)
: # requirements
<define>TEST_CPP_BIN_FLOAT
<debug-symbols>off
: $(source:B)_cpp_bin_float ;
compile $(source)
: # requirements
<define>TEST_CPP_DEC_FLOAT_NO_ET

View File

@ -21,7 +21,8 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)\
&& !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +34,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -52,6 +54,9 @@
#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -192,6 +197,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif
@ -226,6 +234,9 @@ int main()
#ifdef TEST_CPP_DEC_FLOAT
BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::cpp_dec_float_50>));
#endif
#ifdef TEST_CPP_BIN_FLOAT
BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::cpp_bin_float_50>));
#endif
#ifdef TEST_LOGGED_ADAPTER
typedef boost::multiprecision::number<boost::multiprecision::logged_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
test_extra(num_t());

View File

@ -21,7 +21,7 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) \
&& !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER) && !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +33,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -52,6 +53,9 @@
#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -145,6 +149,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif

View File

@ -21,7 +21,8 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)\
&& !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +34,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -52,6 +54,9 @@
#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -112,6 +117,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif

View File

@ -21,7 +21,8 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)\
&& !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +34,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -52,6 +54,9 @@
#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -116,6 +121,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif

View File

@ -21,7 +21,8 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)\
&& !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +34,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -55,6 +57,9 @@
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#ifdef TEST_LOGGED_ADAPTER
#include <boost/multiprecision/logged_adaptor.hpp>
#endif
@ -134,6 +139,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif

View File

@ -21,7 +21,8 @@
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
&& !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
&& !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
&& !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)\
&& !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_BACKEND
# define TEST_MPZ
@ -33,6 +34,7 @@
# define TEST_CPP_DEC_FLOAT
# define TEST_CPP_DEC_FLOAT_NO_ET
# define TEST_LOGGED_ADAPTER
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -52,6 +54,9 @@
#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
#if defined(TEST_CPP_BIN_FLOAT)
#include <boost/multiprecision/cpp_bin_float.hpp>
#endif
#if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
#include <boost/multiprecision/mpfr.hpp>
#endif
@ -107,6 +112,9 @@ void foo()
#ifdef TEST_CPP_DEC_FLOAT
test_extra(boost::multiprecision::cpp_dec_float_50());
#endif
#ifdef TEST_CPP_BIN_FLOAT
test_extra(boost::multiprecision::cpp_bin_float_50());
#endif
#ifdef TEST_CPP_DEC_FLOAT_NO_ET
test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
#endif

View File

@ -0,0 +1,12 @@
///////////////////////////////////////////////////////////////
// Copyright 2012 John Maddock. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
#include <boost/multiprecision/cpp_bin_float.hpp>
using namespace boost::multiprecision;
cpp_bin_float<50> a;

View File

@ -68,13 +68,14 @@ rule generate_objs ( suffix : variant_count : build_opts * )
lib test_instances_mpf : [ generate_objs "_mpf" : 4 : <define>TEST_MPF_50 ] : [ check-target-builds ../../../config//has_gmp : : <build>no ] ;
lib test_instances_mpfr : [ generate_objs "_mpfr" : 3 : <define>TEST_MPFR_50 ] : [ check-target-builds ../../../config//has_mpfr : : <build>no ] ;
lib test_instances_cpp_dec_float : [ generate_objs "_cpp_dec_float" : 3 : <define>TEST_CPP_DEC_FLOAT ] : ;
lib test_instances_cpp_bin_float : [ generate_objs "_cpp_bin_float" : 1 : <define>TEST_CPP_BIN_FLOAT ] : ;
lib test_instances_float128 : [ generate_objs "_float128" : 1 : <define>TEST_FLOAT128 ] : [ check-target-builds ../../../config//has_float128 : : <build>no ] ;
lib test_instances_intel_quad : [ generate_objs "_intel_quad" : 1 : <define>TEST_FLOAT128 <cxxflags>-Qoption,cpp,--extended_float_type ] : [ check-target-builds ../../../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] ;
explicit test_instances_mpf ;
explicit test_instances_mpfr ;
explicit test_instances_cpp_dec_float ;
explicit test_instances_cpp_bin_float ;
explicit test_instances_float128 ;
explicit test_instances_intel_quad ;

View File

@ -13,11 +13,12 @@
#define BOOST_MATH_SMALL_CONSTANT(x) x
#if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) \
&& !defined(TEST_MPFR_50) && !defined(TEST_FLOAT128)
&& !defined(TEST_MPFR_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
# define TEST_MPF_50
# define TEST_MPFR_50
# define TEST_CPP_DEC_FLOAT
# define TEST_FLOAT128
# define TEST_CPP_BIN_FLOAT
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@ -91,6 +92,19 @@ typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<35, l
#endif
#ifdef TEST_CPP_BIN_FLOAT
#include <boost/multiprecision/cpp_bin_float.hpp>
#define CPP_BIN_FLOAT_TESTS test(cpp_bin_float_quad(), "cpp_bin_float_quad");
typedef boost::multiprecision::cpp_bin_float_quad test_type_1;
#else
#define CPP_BIN_FLOAT_TESTS
#endif
#ifdef TEST_FLOAT128
#include <boost/multiprecision/float128.hpp>
@ -115,13 +129,15 @@ typedef boost::multiprecision::float128 test_type_1;
MPF_TESTS\
MPFR_TESTS\
CPP_DEC_FLOAT_TESTS\
FLOAT128_TESTS
FLOAT128_TESTS\
CPP_BIN_FLOAT_TESTS
#define ALL_SMALL_TESTS\
MPF_SMALL_TESTS\
MPFR_TESTS\
CPP_DEC_FLOAT_TESTS\
FLOAT128_TESTS
FLOAT128_TESTS\
CPP_BIN_FLOAT_TESTS
#endif

358
test/sincos.ipp Normal file
View File

@ -0,0 +1,358 @@
#ifndef SC_
# define SC_(x) static_cast<T>(BOOST_STRINGIZE(x))
#endif
static const boost::array<boost::array<T, 3>, 351> sincos = {{
{ SC_(0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00) },
{ SC_(1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818836212158203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-45), SC_(1.40129846432481707092372958328991613128026194187651577175706828388979108268586060148663818790351457308800340787773674912766449462132584452348391040651604302709449379239880726512478831381302725264182410989377719891632824721505923538954718756787336781717738534589892517841597367279244325993758027159471887458619888927468693858915842127431596637785499217667152866164893680003868553832956009253404298979008131545708840033018263781326433505544641583562700173344804674499926293464492880691980275690339365803e-45), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999018181306940454689380845609002744871404956897500110086977690176562578949055656828707980423353194933884755560203023626611533678706648719853431695157198205786802969097792096779337651473648106366274410397508094269252694850980143248502445340096430658555215811691593841493933838124949891785030283170868447315870535323338409489664710335241993056422950940322493204196544853978533985277190092235175175166662055024795932e-01) },
{ SC_(2.80259692864963414184745916657983226256052388375303154351413656777958216537172120297327637672424316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-45), SC_(2.80259692864963414184745916657983226256052388375303154351413656777958216537172120297327637305538709251652726302189399302131595697060675618787128325212834421675595033919045812099830759114965997778797780834590216037028749734324604341671062262121984141170908506261795217328399995070051694207174852643747661007471491085388153950316454056337188894731416167834304541739657820299760902499844561410566938370733275087498466575935335388483418932214377317214724719142755203142240541630547874210971000852044930167e-45), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999996072725227761818757523382436010979485619827590000440347910760706250315796222627314831921695340715627621329535004694534216141863971398843021645158093032804874254958679377217097895883419963322632791960267614868367018464110751226843336329749526804502021446103686642277447920958483566966767779163022051468729743460838565621454431717928897730690691764161059400654765666575293764292473950159219386917758286295006197205e-01) },
{ SC_(4.20389539297445121277118874986974839384078582562954731527120485166937324805758180445991456508636474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-45), SC_(4.20389539297445121277118874986974839384078582562954731527120485166937324805758180445991455270397550462609201269889222644694135477579780213406558097593316173155133239476779615836929419876071343120971532989314549209781635141154879822077216303667702093239942499810993653083491071372581441825986232094472955340205971243975796884028319908471468409203092484306028848922723223269266129671649514061121265458553966701648599990935430386904212713721653207641489661037980396865125821447766865757966623202011002481e-45), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999991163631762464092204427610481024703842644612077500990782799211589063210541500911458371823821746369757456643806982812806123846003228662260328395521200223742443485215609381850897310524629291344568956530530262684105635460612822223837210330705593721872335387821404502143865865987389605653700871033897311375196441706482504472066650591798878127657289137553615069304296604544940870015086975449211081356049236357710750027e-01) },
{ SC_(8.40779078594890242554237749973949678768157165125909463054240970333874649611516360891982913017272949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-45), SC_(8.40779078594890242554237749973949678768157165125909463054240970333874649611516360891982903111361556044623610159113781157553083820638241707252464780746529385241065915814236926695461618692810291645026043369651421342028007962602533874712596930401059391166595777353132351354736336704190050078910834200567500725387522401892079463643692576146069143395731578179123995246777807445028382991342302004768477178958229712964263884786053770003966369485261014589712284700049082525146041017974355650133493523666604208e-45), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999964654527049856368817710441924098815370578448310003963131196846356252842166003645833487295443148286288493466057531853473865963093643770093554970659404333489664430527782442632013409169209372509621725822822280428683194964710409099655027231809772830542963187159283687376144462766563252564386045904505129129380699890638470353691133935782709516334660181819672442049363705097682342862579067086527667395708957625728010687e-01) },
{ SC_(1.54142831075729877801610254161890774440828813606416734893277511227877019095444666163530200719833374023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-44), SC_(1.54142831075729877801610254161890774440828813606416734893277511227877019095444666163530194615774084988825358852676130889214423409846990607570847510728532690627712376828124698811004373805554947945445940658982587165803101327925691022042340834793945730630651714551646267709027625314258120286618611628110979879120205714434111724186618983889316034414274293110435526057786113651996476163163956546218796793849755436659001175560988905437079489045957123605234732369555892588189553152777884400882221479823702315e-44), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999881199938139795017415082318689332129439999784597513320524300511364072052835734476273665633558539016419647248757611892421704225588717291067846471845751360789925288829565527986759623768975753575997773800645970067273825398960965781570222907333052180870307750101932061092875046215001474627990763755720004253005726220961181931360340566888859898469699692960128833946501406695399631850637468380933106599429434314849425374e-01) },
{ SC_(3.22298646794707926312457804156680710194460246631598627504125705294651949017747938341926783323287963867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-44), SC_(3.22298646794707926312457804156680710194460246631598627504125705294651949017747938341926727524573185742374636484230266362939060576715503172287379160806955106587059721162879947735886748511328881312314826032585123373233873715409532159887503072282395082993219295587670117698205854346930405798097420936363731431238400620602531307113293335307369886473931872251669066838685519427524997065747532725008631793788181680132189938777240459148366970187452325085041054979389568689596347966804174842938247660756550437e-44), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999480617911371500530682467327162452036973222198777558236011198103401604264050442462386521688828475944132820270974357744852187719530274229740373520595807665539873553993080745823439955253622478543514458940785554677862703585578090996659264673716399020742597191730642633179383457364996748943881349656994930909983016269956721448068004898707766137974729184023442461006739874323489203375832554602730784179556189605934184419e-01) },
{ SC_(7.42688186092153047589576679143655549578538829194553359031246190461589273823506118787918239831924438476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-44), SC_(7.42688186092153047589576679143655549578538829194553359031246190461589273823506118787917557071567734039333546138139998793069657391277551227141295908889377447469523309572292100019331359631334318174561609698634784357031155321301439148398735485598083156201912789699437880499952454662251467269128292323182720318781277898618615138713234960798201648044045228024517817220298333488925242202864692124191272173879533829613886485347072065635916938540096866697115628808888824427591990485826501618370545748403779575e-44), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999997242071291195737222470795315688710343776523925077809234320331705964284267897340031840718276442954050335356685171447220544117279261490357334686649206295189130909786729091199045220985992676527516309991379539048035055704301070927384372207584878961173246105601002640718234285492270478202155019800902822073363446671078460482683530262882597940421207717144002253386046652555081637431410126935539589794505731025710676379063e-01) },
{ SC_(1.05097384824361280319279718746743709846019645640738682881780121291734331201439545111497864127159118652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-43), SC_(1.05097384824361280319279718746743709846019645640738682881780121291734331201439545111497670652327220720187698420191038233458668371840658344774702748955652055489568668246814974626901822859305738995281066066448198114020751344649620709960208002064198384905117235274182583546441284941429826369890146228651398698659788539187660433894685192269471013358968568537625675802567571975922807099858605616052408037138909868535400231927588666795931021281563837169514777440278854726220318571799562403632573245982136141e-43), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999994477269851540057627767256550640439901652882548438119239249507243164506588438069661482394963882717005084354341383831108371223875714348110550375875361891735468092383465608580594392203699927961133554924574448443357107180124203598756077136385300580115685171857809418195803009471462689144883556767944584573067238540300397625512326425856193876988499074312589335443468863296988797494008557816054949653946346405265614466521e-01) },
{ SC_(2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222995728254318237304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-43), SC_(2.10194769648722560638559437493487419692039291281477365763560242583468662402879090222994180455663053847439087361528305867669346974725266758197621991645216443916549345974519799579636871892676112526648444061630875432364581411034670256488408102709411987031842685229809521678287117433846120945714500267214729465233728758289015332663555356907038138247888801679347356008669703897840194824797666053047570787305557626392462396479147321595075220703366096193472213477456408514532068165552987454832784517598469370e-43), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999977909079406160230511069026202561759606611530193752476956998028972658026353752278645929640856627453437091647678270578093867348912670303473993915455915738774094895059219945425455712948260097287167402615818858938341377297396988942875681514508702249864150447882439620069730994781383325744667145025187907937825146056513256418433787478833229590937485750976313958959995857469736815601150524811999423397557967975094145663405e-01) },
{ SC_(4.66632388620164084617601951235542071716327226644879751995103738535300430534391580295050516724586486816406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-43), SC_(4.66632388620164084617601951235542071716327226644879751995103738535300430534391580295033582185205789161845419398674547856851973379123930414244575696445912083280274388675828051112459855219307669660923033393959195552402701380143007212075019536866539095886456124694103812914692592186813095161949784665763547067799123307190932094852262291743854239589467068246000091236672783966432440796514865312222994728751652343905850683285452371439099763686518414140487338867024165200326852923049841093249444705198793873e-43), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999891127106945320080050752588736705376045224265406889707434869085988847817081832730078601216698537208723978870828429426132354223033640845300085418977379720396588632501949070635779461038749299328050727369251003094322938028991998378771012224015911587313333701442922100083787345533568931010184906661307603865664516617509537152983462675147192472775815030334087089321785263057861128893065942146589055914769708614295112037282e-01) },
{ SC_(1.22333355935556530291641592621209678260766867525819826874392061183578761518475630509783513844013214111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-42), SC_(1.22333355935556530291641592621209678260766867525819826874392061183578761518475630509753000948705533479418866027375467625129135687610161180897162329185595954402814970753825051091958713527722375174828431644619848284971925661141095511345836491236689334826010659371679330787292070314641713965540731707275304824222335038176768345388241694945900470602965316849261159010127304761857501611899200514651777047976437164422797344832678448893012684055590664977502888862432076111336870979449510638233456440392092154e-42), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999999251727501277221791963134483143652946098988395334861400478220036573461731864838683206477730569359918994418110092459071692590420954258112913054863293511313821049032279840033133091972315123462424997068552908251488888835340014765762041910447767748264144555345710012367897821701950047391724289924099438289720106542049969731533631374438421776311556603444490337372131933655486205390154608413468747459621886432625215014782084e-01) },
{ SC_(2.57838917435766341049966243325344568155568197305278902003300564235721559214198350673541426658630371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-42), SC_(2.57838917435766341049966243325344568155568197305278902003300564235721559214198350673255737238966372051888799258963778247990152783376242111381303331610145725745772353945427357361145486695541184381321338742142669770269495102860756614147260496795107861458914054023077958024860025506704682782268721894529111699275425956795744932455234081018984532485402586765516884392364011034682787867594623024532922588091056836292782026784274713857015966608080506950980879305590087445073079381675098230575099138827876112e-42), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999996675954632777603396367790893839693036628622072176372710471667861770267289922831759275580067027867234722228430080471552582226415723987626237690981128512381741567675223648396297701756050725932395149173824330771267008371869876795254391227451236964243860781777838348733979424414018273387935180620881558052018364492093238348499691354984306857440378153948514582513764076650823260920930404915003875414931338093385440488610425e-01) },
{ SC_(2.96094365511833847086184060949159278539519348318507782572268528385912855771522345094126649200916290283203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-42), SC_(2.96094365511833847086184060949159278539519348318507782572268528385912855771522345093693996739342932663804846651085820195898433848681112306343912274946090956703290365385602078892224342391181399780345406462574604119522592402659502072571781680123040917209154609109171457264508074993793451528626299861129351462001440897361404823166962990209615925574365137246754984870857324607933605053121269918918153614170251284286175857951281402587778087901842648839202937674178237986130813368757321932975610351978531701e-42), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999995616406335607226943052228668861576216757838002294669012925294791921129051796275883456903694979322501329971375447753971251773961247808436603020996111873404733070017197845470310705625912309526290295374073656496025387323329294558782671483807734805753414994834876374099993858561755751805408888198323439213097646998312370490782535190924653242809107848005183955596913373155062584166537545022162737405001739308072239264970136e-01) },
{ SC_(7.55720261810373846349167364268251769599445265254004955708586925501764330892484622381743974983692169189453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-42), SC_(7.55720261810373846349167364268251769599445265254004955708586925501764330892484622374550612448373730191413193303431049794041304644123408793084820745811028793562333348916456519265465336696463122961996291323668438209924140273844864059538944318277976227762678517671975595479579453080897835805446525198108109753026208669175956600936390166668134897501291587095007074691843131333212682512579039986401027805480348350886360241751644496932510052072285282083099768297529183165722660597082513542981408056777981617e-42), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999971444344294463000450108045691914274072389027232540179319088194078035322752282849196194896756803855580175797043645074196213887410097135181896784101900962704236324186319009789568789941181425532234149392153366432424993544410950289613464726947532233749725913910743043679099530150918947846596008589510245917814356607023762433721080260938839286761529865612309642958368349089189032058662245374996383379270059613802426143510423e-01) },
{ SC_(1.46589832353019113789331351707958126493228201739702314883506913177711045159767877521517220884561538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-41), SC_(1.46589832353019113789331351707958126493228201739702314883506913177711045159767877516267208908427393861721504907325171929472720865773006275638632426304933510409951261954656218026260776426755670372542025774879490868328477422522654282360896480461898264393728557122541481302896883438232050290492523787110495425540325854976498628867329722408191317623181418915019006160748335621352766125413675429734653791931135071630025587791482079495664566178902236522056278966690016735464045305629073387162733493980906882e-41), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999892557105253568753545217864104950667197665245189775644595497906778178128656691096078303466467187938459594167417463818916417117358473643785540714442073012942743717914732037748071998704147219159170063017358513712449206088197946521436940697640711296900126660913421258179104561251733958995998165062617805307831291519562109920870718679948001278826555255838735691382758937227438223290700605918762038729941060805254738926364578e-01) },
{ SC_(4.29890342885567381017981761561680470754158758528877508459633408131710108346368315324070863425731658935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-41), SC_(4.29890342885567381017981761561680470754158758528877508459633408131710108346368315191660548910487698640593276555287590068274126080495796600691159804102586379685177760662635437114892933360460302490297861538787485499296789402780765824215676091815381268645071433103144568224470731467136203368744072106184460077740479824007144285177878600537935639122698858220342265906528947489376413420658288715001310209384236877493329408364270388530486494392325150006115430411152539355170867002025305337772612859827428934e-41), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999999075971465468646533180207192109630863406681770546873997223395847820009758339292966324975612532967466820309355879235997759431321194583616980614121361748306696010139554876844921925965078471560618240863429559876295366367257626963436982144381690256088162065634034183526734308381551083435025308855773105012914069158476743241978619938658527251068183076619854877720409206737387349288732114126976152205371577160652967630617123599e-01) },
{ SC_(4.80379126555190540083363738447616148964186596294688371716040578400259281055539872795634437352418899536132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-41), SC_(4.80379126555190540083363738447616148964186596294688371716040578400259281055539872610877338501347601219175270676662869099033699415241762387976667404536927935589076831672632599089820124680009011322734319715118623320805661025510875584717953950495972701008862867740843426026356222430890016125676658201558709582791616384491466268886310743277365390744757660647471861857386539703251775817308401899230677444627869562185725283076582085060518200835494958195542251512378077909637116291984512266293918513338503809e-41), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999998846179473850361154371674922854129986084727096709142870280757393394130581463291168610112704406499060352403499469291720728306994847837600250563158304798680794177527403425268942921796278460653093888122873284053643989868791585401086238273954075339473301544992488839606468292179655865318731156652793808004127813501461466101819147627941309038766551940761100509140381914523658200325453837791357981873672885699155514487958255331e-01) },
{ SC_(1.05528984751373323977124227458397004014453966318836649739481298323172386854906790176755748689174652099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-40), SC_(1.05528984751373323977124227458397004014453966318836649739481298323172386854906789980887504771187332364132636109487217929208679431907543158803628082268875678333496411512923906603472445334327299722485190443927742726521958136503063744853505202494039957387234555933593281644632395449538000337461647675827932577828286596180344814422872806232066066010815495542783741497903180129364783147090148024196900445602757951656729695080517991132336449993528257155261985896406981415684240794679489860063828342392027328e-40), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999994431816688672208233710305042314219151101272516933748775711167580922607168373864227965541361289251010654534999802989928735915119413129451470140853636658987643574157298081896981245127358297596889192754078582247331884307559147751318090642104769338421104440133007218078588778511425272289353063257890140890461661561004041429851910440417566678968240145321910415990690683553710637026739594965677666802372650596926643292041996638e-01) },
{ SC_(2.01510923065301669250045085265839809426495508027668597525981690428203627063474812075583031401038169860839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-40), SC_(2.01510923065301669250045085265839809426495508027668597525981690428203627063474810711802373032594699969810619116841404970861472887256166386048754834748113391268197763832955073628906392784795381155976046065612198436366710288821444973028946646023484366577270255382565430666890873219733228088428497141478307604678164851586001801533760898750558581710818483297283897358606526238189016006778424780680200657251336858863806486367993844372954164133250632883143114958449643914391396931717830204115391769145546484e-40), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999979696673942685035853850543073045777707954868946997951599446982788522244825490912223945146237649836813044005513754448276849194256842083656687070132896763547132020424839753567770743006368670904848300067578350340653279036966460909408461382429991769872604279825699445913799875847014991026905964403318089265513005878651764666517348099896382056900530127079726632856823997344435810758823451691867992445903154064288120383150987671e-01) },
{ SC_(7.32504950151904601935173936261887729052525165662936718917887575242562162025627969796914840117096900939941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-40), SC_(7.32504950151904601935173936261887729052525165662936718917887575242562162025627904291011292837720144593431126597367515998989153198457015902750071695137835990685604892263621831515557060246307131984841519212710373547750063546014290419636943710720132280288244343650374997981943021052969538830344386792052372151384906422960252069039716388381803899141518571399834733857022053723510925721401160619649691446479064067028054989737014742554510760352969761538081403146605616293590611767277714260566785874599515793e-40), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999731718249001477877143168008532640917534029873632032252120957303589649904151885305973799269888934534909136198437925454757554860783321503630302312105520970158621889109299625562988285780953907400410390020639968947017260622162867366315832821549484018469877658751307945502656509972585482311806680315543936811858642849279465528279655411048214732456565842865876212846439566194454456637005298750822183817695104506210394947373953085e-01) },
{ SC_(1.33966515396841864169329118502807575007816218088696097856787714955946640149608839465145138092339038848876953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-39), SC_(1.33966515396841864169329118502807575007816218088696097856787714955946640149608799393466769935160071827043264942041685242847448108284494427393761948492846509916986077875292923082077469184325721717857533402797270511306605163459987343262256569264007349244333444115764051413257529668304213835300075569972339881302618317393221832794373332099017592930269066115891486986577472025784928127713471885695681145572611164474622978513975703266720143131891946646092594745882505672457515555881327346483090258133109813e-39), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999999102648637621386587238987552746272043013454101628689499407841187184948605476876334955279870868767750800059575163137784626164589056798852834142555490085645186899015547757002677276114759208540303733026521153564543719479878946956818853456708417790933960103537105155253735839010002786196075719602911681185910630157610492301675225607916036307950416287870173505934149096254870905146725805112841309456550280335897354832252188484699e-01) },
{ SC_(2.67704619143998783156097669083538893686233753480866323642779027781619244352739883652247954159975051879882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-39), SC_(2.67704619143998783156097669083538893686233753480866323642779027781619244352739563897984299105902128855302251894710143801990277685086036288881537114672707533483727518555424527302608356036356217986356197792739366250414583736898340317558602513631529933174608625249495997042977955438961972134324708577539931088346231802431204407452780232261732489676314940425767518677852657613399447450394975134408614300034765724426388230494398863554338885318201348491063100048984565134316337355192798205904718373408055959e-39), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999996416711844448328010836543119598472240469572030882370560576310418964309618728328179940611074428491474999154941510527197897854270875982495690413621119770434170978547360806493132985478957649761646330066648315631863124058757356730994348799421077276380735378148156663760085371571182147899917776000626572381366357642100541978640426148495871453988769629317000167837866856830562597160012881170553619814677812429087684105533480604824e-01) },
{ SC_(4.98065334862973353780613406637193167431914166341694440226118064331717501247442925205177743919193744659423828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-39), SC_(4.98065334862973353780613406637193167431914166341694440226118064331717501247440865961706082185262300907349748068968430289329142149112388324350697105735066444850117781308977214384632246495516203852364550923245875264911126054830285447794666051901956355872882436639418664467404450121285880935039406673241090924270460939631836024048762290640271473049067456927214532714526797251300223483202814869269567316784928514501511005074814011991880011042729877301864770711496955945630526292405050391715830741638832339e-39), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999987596546110391710994379711623068869451337606096342108625478131918320009488445778250750401876191182731266979269973303293901478710089771515180173918644613342792395295337150147962833559157614103818968508131256797025993480612649131131295014985392720460404345935117219910238516012744511524766168411644949909022868757584567938463480609599435179942543723898381721040096255576605436773910863929161497154264218514163673674788342460421e-01) },
{ SC_(6.61322911799904004220047059873593201348655443749046971956789426212155666440217771651077782735228538513183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-39), SC_(6.61322911799904004220047059873593201348655443749046971956789426212155666440212951180267037989278011390446684321888716336223066517279132166898428654774534689211293208975697927510796390180089112434958835354241993947050884854802882807109910568964641743255696216900096606365458624787210152018106794407805871136753532283305154054797825092007339353096964641783328787428804217368758985796365133796747731180160659350716972790789978702678899730892531705668567399746853894977141121012996122009020944132722807189e-39), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999978132600316424819458871898582377151976877276609840945795779220166843198812911241921361184270437776491458291901247500946988256003349588053268643044761577809440194145005106845400574711621718945974528696979467351650861357365416040731658845738292066488483990916744859113297684359767658520832922218399521682790249135386599957375066859000568645217385839964246827971397420685997824501311319875532430117958365665071740834286896688200e-01) },
{ SC_(1.54824254492961749846859045383652994857147779383512446982767538392966946703133146456821123138070106506347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-38), SC_(1.54824254492961749846859045383652994857147779383512446982767538392966946703126961085988845194765016677224573150759279990907005138172280344305822762129830974739861817563548607584336183614347338206829196446854499415600946091562886397948974153134147914359866606123722979808726587858809602661796413993286599443541318127541811836618562120619935933142937927283356718969340037803418384915663635421018050240390063399173057203977102865070796348392652096890020237829272597410682790525617612157766125616287252744e-38), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999880147251103493067079197906492851642489951807612675096101071372809763052176814238098234757914806141252740340867410432612444896212338592468868178773649165288944334267569037833785705287027561088840334981533388491347173126442412363399111551633509256874317164512773006907444197207798073824215723487854515014273420120927829877512313201892373536931918844370906211898732256730679347491689855151383360496535317453280786049708294692770e-01) },
{ SC_(4.14655650189182261793630321328885828961460755538706729231614042880185722061980868602404370903968811035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-38), SC_(4.14655650189182261793630321328885828961460755538706729231614042880185722061862042592989753985866613511536161784732505728534611917389621675815565806216456733797635229753667377166650970990553431464073848921448167545536686761492234778689910956124468888048028352079425119895491432133576643928937349140475648209132764234915780601666168316129135579051679358350888091833066751395602947699623976228467139520969584938853923527081219369788343445865866087636551945529117194090170963755429299772957394707033664947e-38), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999999140303458830932562495970891609851434141169762625227468703921261555172214042553364993994634622966419016883421920787233269568087911528717371496834529990991021120129680362470105835559303793013244274628533900046317008176792327455914771957236528289495804030764115202483608113943926547285214664218148302982221883326127385930775038463435090571400891500003663643560192259356160907398291267541063405411124424549800043463320847909557477e-01) },
{ SC_(9.16989984771782597788130033192388394290674988675850299695759145456042116251182960695587098598480224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-38), SC_(9.16989984771782597788130033192388394290674988675850299695759145456042116249897844115270071964291065187070451428162205117773893965556440691457216154310897806331075177813107720146501971323479067623584326457128542356781061897017124711295344504641604649164572504676902618542136026936516116875011868845410581154011041055005068165526312569371383835954064173376238455385938643029758029883725569938873704091787777011093003754252650660888047134772339268203354903543272132734204180304904382006508458834331093434e-38), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999995795646839141229597049600163486950487961160605966971207927639433117443286573917272952598730352586395213231378556612129809781665455673803791882078391445491798305436834690788293112765270306893834416062496422378540679879435567787167675258265803526815917323453636547446953905378952509733862550508155185660036566272965610345657669309817400942905631053083173596575938300954384335741012857888893148639864847391669179906074771423380675e-01) },
{ SC_(1.40174284409382375691326091641536902948381353854352365243860788538397821323400194160058163106441497802734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-37), SC_(1.40174284409382375691326091641536902948381353854352365243860788538397821322941150712376691297505221433850032159236497718292753220163294157274980746057268308682402443770033257716345829685049988934416666205697588973059884017465980900504040551091151637072348559801709457371522176034711208838536663456112005139845564302752800851586255173206233829429750479632089286711032500609176606849490519569468727094188589180524908936230012972908141632433602684418792195948582158744208296995186130664849282559534747283e-37), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999990175584995158790521452395330292149934987246293181315818289498140837852990983340598997291574198506644414638962922288593792275112076522551276639205559930026303787875160133236787445628969231440689003816906777605687862518569148148349736607073003542934036846197242745708929670399344795068969975702827824659694309674652879251454493737996840612211561985346098039062629674466776090326736274135796172249813160074647258847047218550681667e-01) },
{ SC_(1.94557624033383353951438702124371913986437597061599651205892247320811128119544264336582273244857788085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-37), SC_(1.94557624033383353951438702124371913986437597061599651205892247320811128118316843443667798911811276260782979573655043471811433560953937347381596636250270351757320824484922352524345495092588725917950183456096195479396095297149816723715887520239499660954344948495823620417694122747792675711464880383881647242003709193872670297166532991944589140423445905575281550707206772623747725383628200116441780614927532794556312983397464198282523328334749316987456840895529998261299646887219234662348063597570361594e-37), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999981073665465242325973499850572514928918968773433476252290727706213747142412896890402940728348529719295299594618859825128431836531924921078163936256958737028704143307321875801616577679750689234365062786505605378356205461533046996279728442748616071759347859462543457969102284480550870641847873336874142813399784209309858808036665885184827443870158113940056434388089580250524388193858351108489442281034092467002540157658438751846360e-01) },
{ SC_(6.25778729623775298048262176417037819653492494267247379139395559947273151024660364782903343439102172851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-37), SC_(6.25778729623775298048262176417037819653492494267247379139395559947273150983817975401690962877507381485954149692981033327650991617834865104519184119130061428188738093774975277921899654100143262904731856281487753604601557753455546117850172891385055603321634400101181307965562370267510834301717555763528082516451060689486995693578669148903908270920118745103309628202998328094040623530190880768011165490634231906351433112453170352587798690643432435729816389805275266302654200777080302116699928186436416280e-37), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999804200490775226966111214503355373143794475289458519970663519021821882302293192082627747880642626873706396542685764556638857367505201946491497647523599633143848708648597649676052358311232218277829371003261111576758376332700582495048660141665559358151192500767632875806022243667932552701370660858833078445158658650315371959830990489689133490741796408732580215105542936306741728965736925282835297914658845693947125055548101972328355e-01) },
{ SC_(1.08239073560602090995217585692806369173691892430234761217807120271122700572163921606261283159255981445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-36), SC_(1.08239073560602090995217585692806369173691892430234761217807120271122700551028985034672156536838775060537851211158634395935548306255588517499841223461589544558196181625229089645208230094515808394044610446532031934838322012297783463544971778652121566632444020332699464984967424106583836820627443079249218431496439763226943699593605710951086552042194684093571682506350566713599585362101737015819290889457768321375371619193837339682475558478823722791771452951524569087148988620542200906995110022069839836e-36), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999999414215147737128469167864887720746679277344361554323001931299657738560350385993270574167093724891580864281120375306410266364949815767159380406106349373771695612577895176379716706515330135955237783460936144953034420281108932351416421393064032426483755702763946710102993202761795407302174421831510588548964721554672431413244801666849243141372241714766821101374200896460046332817068614637339045853629713469603736177193274739125474695e-01) },
{ SC_(1.69406069903391450739476895874772531773020353068657868999386494068826181091935723088681697845458984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-36), SC_(1.69406069903391450739476895874772531773020353068657868999386494068826181010907623836633953419580256640864513774823628873707949104515727247109331100403413891290300709523854457848706858116029524709018232091056506435291372700659313907652389536318026768678059554060588900632671169691115979901437413522298032403609565133598996394311329293506372714835392975912718206936295166137569549996347175694398582596884916164647798625653170932974980454711118715400166890733722244368752314502042796902887081917869423252e-36), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999998565079173994362465396001931894411364393220606475206715927476216753773288096464547196783798237465369184337707326956679899579250402430116331781856535753325581983852597538161877588948904446302891805591165493406298635982122739131855419006169860034975915041849599506141381562127259826196852690691935014842448052582785680360758805244541197319297101970723393414590425744716094952004261652430364851834943964098519682976590628698821905236e-01) },
{ SC_(4.15747613699065532685928122715139996054660257193228334398574664448888782430913124699145555496215820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-36), SC_(4.15747613699065532685928122715139996054660257193228334398574664448888781233240714882509337727250115653085990578082365934763746608796598027817817403401461047679675712170611380828783971391822261067802809536400457345024480713629655636200059306305344565998169640785290567657819069495209506513879092612549199675733793897404446425995581237641738804282966499303539895482161907154840024757495882276282239646780995340616670801737107926048021853177442090405674446382967308057029828089451182423912906080446301645e-36), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999991357696085176628871090559479687924742457625998376218971921267372616718383844949588137456909796500905937687155045180713696605882356605141845708585115529311992066558444828324343695453901931401333937064875027623092193879640543740281736662900057499119419568523976952025817917330364180443654367979292006373325784480983727857210671247058000389980104063249629948415515037996578331323999224928160405646611251354255937726429113087375434086e-01) },
{ SC_(7.28367983015663846905417378314883240316980135196070300998300722783440619423345196992158889770507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-36), SC_(7.28367983015663846905417378314883240316980135196070300998300722783440612983116478321067269269552308077493978289889202693267062792028217262679594799658402831534524488850105100944772764063369876205824531656366687705105223061889202677601008770250436737657307404663067598694505137070363243354865573283915190217134660161868686059432339437177299032222560991940423832159892424897426322085372898507971392663686985246163580637451954849520995735087906076886949281806248923115176051266427223525387444974822188331e-36), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999973474004065884681092335767433370237858027851321456659743937462071520016274972595345712838831068927056324434283196754695183381625754321780334336941984724512744537129286325405215594299982932720024848636604144040397744749234633858822500707447887371424947606546560076781166070773896632315222333445267419206441770719310077458761071140435155108660069240335296609374518753267631061279679348531496176734798021898607900054696705595585834697e-01) },
{ SC_(2.12516349467652166437607482766014955572619379291278811395257773014799695943111146334558725357055664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-35), SC_(2.12516349467652166437607482766014955572619379291278811395257773014799679946580917405606737529904973622759508384432023182892335044923493007532938776076021675357752206257108287956169574764984778204026048822274447050733368944371230550045017655124033941820725414467102677098724735986282971546316360184957916240826596403661388999867239776163371097109947879294702830424203436319213220983022808349976076039486046869137974826650175930349065434734116373586647276765562985583562832443119253244361340883240441062e-35), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999774184006044713683773900470805922150932250054980379582662128503096057808845185235527786487472856932618201965360896707252655627980442148963128043654276596608302237896826278499952875156492510369808863542269935941777674888168571205797103443085578125711094779798379963949265068579368931957701357361326476145671210315141516694776450386623526577296405590662971296035440956921410316901837494666387892421775940274748625097808888274273886927e-01) },
{ SC_(2.53071076762576381696050568408073626122257552718503248673567740389955815771827474236488342285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-35), SC_(2.53071076762576381696050568408073626122257552718503248673567740389955788758611653831292769789020166483010759970222136556385108151865059794457635671929591006389256386912362204985190361367849653914692349249660353344507347124549418382882966230813006834337598876272906754108025215894180395623651246082863891038037258220096650540393960954745608563649602644462517562149795780631117951814592950632076254125100378944378612616648449108475867033852063670662261449078443752015576717559948578847287912367450188387e-35), SC_(9.99999999999999999999999999999999999999999999999999999999999999999999679775150531150862612324087422368961581536597039422383152126708901047347940304146276116283666506430133777448923147529348926857835369585229245501288249005852911543348998007660604853568806160045133561007206980521854122283010742632980337999371272670810643167591287325720576566145125174718484145644918457200064131979165887596637731687390351612705444505957008226887752046771682765148512429504692651191887187474974604465117914715417737883e-01) },
{ SC_(8.64357296960196048049463886033217008510050159920791504997812301769322118616400985047221183776855468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-35), SC_(8.64357296960196048049463886033217008510050159920791504997812301769321042328005655004380652466252000805353736975177627305689102897263689458460558483905184538823511276614613879037974542294557763642845332403887710155638310471047995839486930032353911469131857519161973191263919662124863592037455099841121434453263204523757117696307125405556392707606083229317021124606853797280595140779847922679683860621633533580470006084570869328567023511427290495777006546862741888593675678753734706727091765908497226790e-35), SC_(9.99999999999999999999999999999999999999999999999999999999999999999996264432315958317318170910958737722004540033486380110083998546410044791571639359001045000390165257415777237093860585996520548881515148587137444154873492144978975716761135704715068314007809110467706034696558926322998865776056244797839299023107292117589896179835013332775610172777676182558538012867578344415855072459321045720088178567198565080237600962243652912204402124151596300356253263256122139223449122695528077428547738849446992392e-01) },
{ SC_(9.98056233630547948377202558654806807390245378474739594717134172352501764180487953126430511474609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-35), SC_(9.98056233630547948377202558654806807390245378474739594717134172352500107213774235211520366087753993326665312083888782751842897484262816852301203303461018681653919301907168238595958554638307471117620123755538957953333151205635414773328841023242129782657905930623401544810100924035706284091402411873695041620447824159545092622198222137489682714360461036541587882003436623206649000290867227071217854957074912804962012941175988955433888661010676438557159248028493582668925712339840773429543419954418016701e-35), SC_(9.99999999999999999999999999999999999999999999999999999999999999999995019418772556025452179753936296723190620561787496251708691401075923962934222261393282794216532984558739824698172829691185955595995089041577202174812312947856501006713170529287477350411350868128826538380042853030454395774427817996996972615435833753547763126950693322514112229274794236400050824445172812668516611850872983573938547300630346487402262543251741159012770284460576903327602326016046183371595735415925160127128817835623068688e-01) },
{ SC_(2.28583325383040341115984344956726956942648839173021717936437613438727112225024029612541198730468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-34), SC_(2.28583325383040341115984344956726956942648839173021717936437613438725121632406983133997779856371235469800960484094688446211707494308823723702511129954566803322521144774271849538557931309348505755177198991392479394688991152239758824965009950771960366476022856124052233499690226825352494698918049373160506861871032682154872340811445877852985420557422813230494867182881063793147826094622998366088820877495792124626334108720159346279352639830014634233819658689195810426400524416487075106577081762959804327e-34), SC_(9.99999999999999999999999999999999999999999999999999999999999999999973874831678415552645214136320719547515304986065715399671015948522117357521386822474945821385174233689548253591575756766508400490826265582618706311906049075954729995626366958081761228787732882417823878421236061267588485487036165146284349698162478575358442590632990892375447104360565217621089582310412890703562600854348719569212910573217175396813750336931826089876644954945470721952677819309500120155038935270482632452051218728106534190e-01) },
{ SC_(5.42623437031930140219487755133755705879730231824934987938484354241808205188135616481304168701171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-34), SC_(5.42623437031930140219487755133755705879730231824934987938484354241781576829753192001504542670578168514322574346362411838697558294055698060256643491044626864706023229351509292462926224529701979980092636352965151156855735493539697229126183525244673254444594932743813340713277981673283478626960530386752618274460408012086120450381392347958398326330449608398379219370083483268351133688476999510593296289238728648271061550800714334372631288774732378360955680765670890145329863879353773268761484500941680668e-34), SC_(9.99999999999999999999999999999999999999999999999999999999999999999852779902791827473069699853002689009383385697232980632967935862458237014302008822313290073227392761021824999598806655046675355022913174279103879824846548509249049870612992964381556241095616833742905956965264034731825567461408179336671461735669309570725949353784032168729737514901374614918492020733323657326776972378228052939461852740662884848942182183850537408756939752311876936201545716136909239650842326963967558877840074472028373156e-01) },
{ SC_(1.14767260359023175444419398476720241433534365304121115753874238230025639495579525828361511230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-33), SC_(1.14767260359023175444419398476720241433534365304121115753874238230000445166746063656515559841089289105607686539825978861594544159895336596964422134771640137572553567078243138888530843580152233779636754650662243824370534098475025420547383932421683776941031164647482102775065775891998610842166179191292338275465136314733106299902048187444411004404558040659067390216180114189607920889347076280704914251579487942983549927641405688544915035199870167862655069055588251673922237588302101782819511491910735654e-33), SC_(9.99999999999999999999999999999999999999999999999999999999999999999341423797484209381329588309288146803267822324076796870775252179426174205035478581780473549580911343948996844459479379323793574583702208105912195692041827294007298447777379983852214659915146476246650306684196241377878426909383663765219628801085832023184448671086794319720603937760883119648546708413620967469776165374332966612650640592032647489688329087738368543536541785457409887376144297548884705846677582389852083943727803618460003560e-01) },
{ SC_(2.24638807152062302597056753414010558790018579564078381747074808494346598308766260743141174316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-33), SC_(2.24638807152062302597056753414010558790018579564078381747074808494157667361269882569441673060651915437664267383350810846419364777111420950445674141352657892653029864814464928712480345882096155199766282054160037261290793618209567223822474205025102444332810773106250060132178243200876493509840693909890022305266515863453984042974449133489686322410570709426572392159303858270564017974265942192514778239674771168343975398653578155273192682439379656676210238904588026596239307200791791903087670175397447691e-33), SC_(9.99999999999999999999999999999999999999999999999999999999999999997476870316064928124336269726622406446098767475833498791397615072417963776006183762747986076321718823234433302205664070428488474365161284533503805124055838617058588428710575226216649561390342676237713905134207296393773422163114041458550176660590328481590273828588141315198970622646050350164026489967133824488059763316031263167042511671805434119993909381688766722661327619081391469360750198917897989810671842667975179843263514510070805364e-01) },
{ SC_(4.45455641359219790147891656069310138539319495403506917428904099409692207700572907924652099609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-33), SC_(4.45455641359219790147891656069310138539319495403506917428904099408219006244020355341019923416458691646791783382968221703942437110847236298490017165119347209547953248371396373134888130108963826910897009132512935868074403092848118118664348760003373801795767345559897877338293545883678173435890964691395009506069309003543166240667253840198108859444636305560559966548986023314855939971070573945498737110851520499021749551723015354411711372545551098465273329330533003046029281429836758805400309819773473594e-33), SC_(9.99999999999999999999999999999999999999999999999999999999999999990078463579062307755526600873014625216226284609280745739844840338725476993691131021921643887307732286631053281933853188844559271647726836118909431359129252865878843629812349803224098882677865802701318090937633055526915899392674220081478796481818247514342288829051175946144134849997283314619395790196378587070000606077549331566177326361432397781171544675801887712953061428639817708889966799537670086563002303589097210837017109439496973892e-01) },
{ SC_(9.16785088874388950633683172059419126693105638377124253293737332626278657699003815650939941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-33), SC_(9.16785088874388950633683172059419126693105638377124253293737332613436104518246704921369229928400760527355642289946851996779146737350255733633661964290512225435043234556399487444290802165698462256421277014798059769310983640659437713092187875796959432270158150107717786562565837537819205647372788133354445767003351222939549690095319817221458619710368607102404725417014793188796707925380868001635367674953089171550791669153185795146352256358389658293075151223426432691016855045414346008882486947094640909e-33), SC_(9.99999999999999999999999999999999999999999999999999999999999999957975255040878937656479309884424948105529598925238666019539098203884358858925757483714325117607223046140184112647307315076184737530446206798662621567798660251616524997044561301533332545638798527755946852445727867891941468188937777228366606532547501859733408033893918556168750942201731744749872794943260463802390118755564820664666033161746287816363441616184896748936552044324961750117806166223424101518916285648897331999217064683807662234e-01) },
{ SC_(2.02923708991490176840630238442216715768751725200674633498021393052113126032054424285888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-32), SC_(2.02923708991490176840630238442216715768751725200674633498021393038186461172686811541995622938699502131970339437751250339238625815957020497240862068215740583517496640248330164143489558982862806234162766064849533848215436080242913357931665996587857021941752158058508684563520436602915924175811991614599975795835696422654161032468437709940060988366827698300610082819892290092277729920515375436926078407908932472437573715334908580131664447785618965945457668393933348454041625387066589186615396751622114360e-32), SC_(9.99999999999999999999999999999999999999999999999999999999999999794109841645685043783972015726491288792978131514713708274780330025533629205662944646785839549634108447687840508965230119113963615379532190188313923611545568771941825154090178302130626216188195315323190824517446123383168919123080013332622969893566616492877927920852006877324669233583154264978656000830597138317838869261407433049633324695624794836488665265011978772645136673545407262195618625203203879355393108059137267873193617971618206698e-01) },
{ SC_(4.42248951544894130940528341232594713442514066697910501274604300192549999337643384933471679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-32), SC_(4.42248951544894130940528341232594713442514066697910501274604300048388534828291368248000655277014127617817653398762581638618471290886802883726483863468949945059593381263242533391933794414525027070259790107407224559765775467901539274939302993231312884256750489422970198786159487386816526747486926456510926612894986997421618922394129244673415939823811066890368994392267277208762239811855012666341819077599352572997378141194070253849874766309784441344604549424903684138514279694274951881061702927451533603e-32), SC_(9.99999999999999999999999999999999999999999999999999999999999999022079324287209415370398907373981182933279508453789790467938655245533487930528343294733428329788530035987276746814790251459059570475803121922243235079973116073514685919176080150643624530110566284954847483072464101496311828806947357045503519156870663380634223091627304382316385761985476332723633210730619607992350388299054957290493063137783934349241860638349612314464275086378115025201466548731296891098091234203131949150016181066415051698e-01) },
{ SC_(8.42781959567806922798262160232246372270599330117093160585906019832691526971757411956787109375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-32), SC_(8.42781959567806922798262160232246372270599330117093160585906018835004232676551216143003605835844772147804482341293060488809656855003982170735014827047357433688375956609359388189092785186417532268577724207998474793422062770690091917194630921025260130856747865767201476228381150045632490922495973100197965054663802088799118777412336195112563548331738071270545429477078683972801812259741537598080482468263547598192155653292206810106055756883930340550445588346208476969664176558588870371296008188404710029e-32), SC_(9.99999999999999999999999999999999999999999999999999999999999996448592843135237286091165040150796849379871624458670791989980554559338381716042829887191705426916341372304104795261882687098993621618405551393901151195570801163017101515947641613510338321872649883018859071285949307351409094849353881167676920664229923088157852833707315319923101074787754717513588395159959367332602241142957127421028949816954472640924253155665536273295336649713952163746432483241108913079712957120243617036879037622622538037e-01) },
{ SC_(1.89412859041783001573039493180153157286866659770869884826804963040558504872024059295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-31), SC_(1.89412859041783001573039493180153157286866659770869884826804961907957016457841277954170997663148947571036531047064431642805896330034930759416956199694978572815071058666731651254768105525868477310032596108285663712491486474491896466539021451298126209786462442787863272306809927492774070601577999434654525757637079097488311727900888155525874031426502421362589400618004106762210198078372938517086882765433014405633112910490353995497880955390232007103552263077517753158222400047231218622431738026725272418e-31), SC_(9.99999999999999999999999999999999999999999999999999999999999982061384414808821713576182666609878039644939897865544835638329686226491649739125933554321013717333433543099378073396608435514337600944379023047880002410158175418957761934774609458632133813775338538191876152234049430980809741103774734281423982888311235989789454329730656135971743728618766288067162172679182963181306945338676336790805660620388426574235413302344008441196805499833894731982742214073379793623068582638800144759140434822835913240e-01) },
{ SC_(3.46050866712583180197896586726244593923755962967554050679908073107071686536073684692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-31), SC_(3.46050866712583180197896586726244593923755962967554050679908066200403792541583724962851495560867343528889054708442883895437380069508042546263121005899818228653002696895607035375445728524805997740154069184308371395573413789830700635471324814652145015259054050169279264095836039055979403561200832628862682451061731921571819799737972148041901006837971648529611564412861696678853896181077926408637564058833153119920148214522871342104651385797073097865150211968077592727269349107621909741517960544590382880e-31), SC_(9.99999999999999999999999999999999999999999999999999999999999940124398823734995141596440434464974244751219327466265222844766372889104327611054096738756247812175767192010639298145667851662065738236651240834717361592738914549129079886068280561353392857420537536300576737568342768883135775136819101106849626431205672726699464031722219512428433261205505914094665663811986532588686230507896059311487599466477815387106085624087151762903302249300390003946296093093177327727085105725378839624124939177394646318e-01) },
{ SC_(7.12945223095754899355092259734822137087975601614812590223202448669326258823275566101074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-31), SC_(7.12945223095754899355092259734822137087975601614812590223202388272065795852880530528435299296317544556995760601773638283325379911939903571836900644291057434079192040898145963464340595581666825670240485504766212435730089156718952356796619997620039045659579302729635035567455305579146178793297109327080700792525691652378010535659270634655634013027160489309630069697235358853454120303144972828027427254757612960692804314735367184926239135471939473377997839560418095284241361294625201102079699096990572732e-31), SC_(9.99999999999999999999999999999999999999999999999999999999999745854554432472137421356692322531386578841747106553826521261980051976928390485982266924922342534221178591468128649396587806039752619666583832562943361036177992729075795731069740929600978682292406399805423201293360461699738011150346793081043613496064788228338205920715197760196407916778244101828803632524670630307241142534473468033170125491021690127096505836902793573414646811153356864292269712182133970687352333716996429072607598331767709150e-01) },
{ SC_(1.00660609334360197519983437147660781896478392508868099364249815153016243129968643188476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-30), SC_(1.00660609334360197519983437147660781896478392508868099364249798153858080936425448600591621973115560627855028065799333409897140200148885265679992467534852739850747222248848665862299107073399715300687099710849976158206422869350105977308451559506740322700159209742272248262592820712485642826574623775858899478336761127748047538148686933386140802062852176507997090596741478401266909560861459265729175839805366572371876499841116246530566431597941796152044187875578150097604630566317951712723436689304568110e-30), SC_(9.99999999999999999999999999999999999999999999999999999999999493372086421765833637980670400207365226394547668810490027357326776425074585947177784858615439332893124808170043124363608559227850238712400015608276209944227241371157871528353635158551830209899099887818354190139598879685295083420474600602830379027159206760470992231414350386011266309174227316415267053139521691420556930484870500945966743591236097202666761572417847833809770025888795274828592890925562550291716301144729756151134542208118283223e-01) },
{ SC_(2.69123732824149938499603597762300694489537414332350206969124428724171593785285949707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-30), SC_(2.69123732824149938499603597762300694489537414332350206969124103857810767495828489737054207251410808681122731739619467712601906527210049295464295960467277692977312706695955670199037202229435671253476370879184247206949097764210253125222013745966690247740273959101002078101052320702153894889859044028323293872207281921255575141740576311042337948417604760956103213467396410826888372613668017898457988437785165324322263668128076427321715842253774774380207618971473886124995752335661990322188081682637137051e-30), SC_(9.99999999999999999999999999999999999999999999999999999999996378620821539778048380463868513259194760492255182104854568796688266675419704926830251200252632342648903096548444973065272476104135551570767481529019631860487682694750175649684483265805174607079594632937085836760739509644610706339030789270993126743782828796190161346910749433340546847615059025085175720807259788804205543021767204242455348546537131091713872864499858332506952229596524693375212327814887803800604671074080458111672965192708371657e-01) },
{ SC_(5.30020735520228274850637769744228460379981918842995369800519256386905908584594726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-30), SC_(5.30020735520228274850637769744228460379981918842995369800516774812330799508872620617326099181025241896326476412624958350438975815287228970877366059626972050598486044218179842460188871993307555735477910166154701843990230147811148075605205091149734124143879074762687642121485251530463684000397680784373909121287180220939449768835664018563015958901955939555918594959423810252278527245000330437175671279082182637911185388106902742727326345838543927260707806207862430587227020039893101942369841931004649392e-30), SC_(9.99999999999999999999999999999999999999999999999999999999985953900995929811476056422508436791230644190302525234876496203862361441479979240671670817582863831522397601477746273094063148971169325819181895476334047231053156486905486717389993270360728698723956084136276022973880242228876164041350147859316688277903051550256604857765735403446100822161708518544520756766090021113367159495627025122118690418451701542634453971356787032615030419972024177419316747536463094706047989637284849247688069026501348549e-01) },
{ SC_(6.32867200109829532437439231857584752559277676327992301352765025512780994176864624023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-30), SC_(6.32867200109829532437439231857584752559277676327992301352760800903845619423737196357325304747879745252873925358692900533140087584092061056776880998418078436771366792172130615694441224553869516110696285113308449364458806503815478080022339617731335765279640230991043561567239417391539877766804593198543949855172745230422656638678997874589593384074934687600773210894288303473880880254886959958423405253748955161866378820004589056363559043842961556034121326086780978328676846776257244124423169029634234790e-30), SC_(9.99999999999999999999999999999999999999999999999999999999979973955351257249132297739506642628067608253815179906562758766893326508515403412089617957779132649053803366485188789846458854195389563078655816683639618659725133411639581407050701846126217909940232813138092643766517480225563453507972750436168378046481952469724013530977441367994976024552595817659400560646993221229292530320553163338423431159999401088147155330538375065693349415455291381281036874541221154864146711221686283124563061261693337961e-01) },
{ SC_(2.08902732172766892127202343465273188850850078629450834455383301246911287307739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-29), SC_(2.08902732172766892127202343465273188850850078629450834455368106932472518003442533444738013732972172524170504867713481295574699984488179497595556954982281159191426600611772457907280094472444446526906097767318461694106205023057515992153019190053074846913307319672878369674337703391926853006361756591941459322392837227726860734677796478409587068863467227336540796851320837042413120494689218187960655610792406908260360300781784460111226939154153768203634470611331753015040253727623101116831042856283118737e-29), SC_(9.99999999999999999999999999999999999999999999999999999999781798242453766122205539394256558981790035011916738210146764717850083017498869117986917334140105874547601883683652419246819349707324007233935785604229116661629866992858972496907635417802504686787088280017984569335880144104083641246079269870478846963689107325438580421100904625789353960763259740089364026058421956654839479843921798486264811522911491001083265611400386002109215984073917186677818137057726212767013088500337178286110333927786429660e-01) },
{ SC_(4.31842364003957104364921550167833797346950293859213498848248491412959992885589599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-29), SC_(4.31842364003957104364921550167833797346950293859213498848114269172593077298696397899384798838469892604707488011054598848283893536902678591236546102866040861584529410483678727842807847433276833855057760891318416503206022097303343679891225538057159244788369859928195264108640659876740964493397865972409304816791167231373348176915544777281551742557768615955019905703834857959520663077576140020595051789049976167763123526754999503968171424626064916365589309758779241063972711828380772013755486183258900870e-29), SC_(9.99999999999999999999999999999999999999999999999999999999067560863257369066964497297635006156021568522300783335967250349740344844534901319880357791301580333260447029645502188247052834316118747766647184283669573773641111448016551204104749489651931198788083105585218464325948673207669756192754134996490766498322067651248143532506188091467780057358394263396564140986264242252659898448085877812703282546394684396353711386913629178399462666156391453909336437084126881865332207056585053550245704827076211059e-01) },
{ SC_(5.86968798787057500194131613525764999377749863741782210269093411625362932682037353515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-29), SC_(5.86968798787057500194131613525764999377749863741782210268756362039026093347106681700963005204298316540799263712160813295023896788923210038131231729359910124024765152092781848816743835790982793322692254018995150489459244698543524531669960364412839353464649104249374340424306627305738083722440141133394562858285415561309401781003468538863799032963287355962286330816653282615903419003646871305120817164223024587131178361020150902537655163124117909209753651581353015255478297486067561986868484183383569950e-29), SC_(9.99999999999999999999999999999999999999999999999999999998277338146252394028444360458490634338533730868520104582523076964233154042946023028494376942979900160655182099281740037312428247080456080860951235873560774799992734471072154703739778110386566354490103567627438668795477210527514123549952245254446118613994019388628262616959375892007364702781185996020488769149346311118578328013836346363736051454653074172300840059947623326863459329086865473983250909431232338050346477348291583646141405082621767203e-01) },
{ SC_(1.65997635243685806687162489251543212019385665351167702397106040734797716140747070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-28), SC_(1.65997635243685806687162489251543212019385665351167702396343690649279406622208185685772371642042635555657583382378567496299367580435665007816699412063990899032379692904556199031912037097150817151154762330970404285436867965385550288164480644118405526519591867746797880459162436006007266307611893562468623609119099257581069356747154476895543024656480280895695912472010571599599251032231654652201571896290995321311302562791814134762167132281252046632937215018876055369435169910753443600501786404783549568e-28), SC_(9.99999999999999999999999999999999999999999999999999999986222392546752119877172455733144343422153617716843213233849865061714702604533008336989045404338076431604109019139656871515896458952331043568257115104563145716224299069433954165917783579195574952398453239275963477090613342763588712548617716508144008331395635254149169622982507056455120676580525624478841644805727152863309836112876912207670086636480279108601885879827013844946332071421481944537385339435290404473361071594632126459317753099739416686e-01) },
{ SC_(2.25979760396654073712664394284379480891595572134011860043756314553320407867431640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-28), SC_(2.25979760396654073712664394284379480891595572134011860041832968719355876869835044365217455203766587679052924363945885330138781175699004356886326461315878508574607801535429369621662329867639012659170124626841944542706693024456895004571467368859613474653967637621966840269279943579469768147537831957760369296897132611902967456488220425778743950737821192336748172296951691608578178031434568917471992763881726196647605940577327234678663760031433853057319001482300725159609161191240732209972248840097545236e-28), SC_(9.99999999999999999999999999999999999999999999999999999974466573945535407540722564122644653730270335778455508418466529045718513922718886100912534895818253373538618832955035269339985226660671223323808402289012470979235802920473617365901795722590739424739236939849121464098738027239360011902586924503160858852829389284193017042389742359089925155636590521137424815290123425666004266451656277708781560088189215777182758042202386192993769288859261071925760207238131324480206028779549590623894468388349431566e-01) },
{ SC_(5.88086945564520119649519587919781243555710122106194859270544839091598987579345703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-28), SC_(5.88086945564520119649519587919781243555710122106194859236646894415357551059141397023458417833062577359029564844162033204609590305835423056545498867121176126632793246793268385945281614118548944015360500160615375605964890179073630375449490595805026103275679829933163846946616206245364280259248011174962758311505159562522228739210437400034854052649377248021474372845818354013318994192752570529497471637831883781636591363767499659621054484652363632372161010655718223400880672351441357302327184778736180752e-28), SC_(9.99999999999999999999999999999999999999999999999999999827076872228296574784938072078042987632777779373212220013320421186320701890213115370714655904269996795936752835087158978849132030314481520851372148162220392252024392951130066198535869599322556283299011074244533964223971169725705069975036856966893929235747080621358676048032547928046779776545537078204166025672077226387013907373034921452470080143973339745452949777298353904218157467268717719840861266286404603250029803805345314117460010988128655782e-01) },
{ SC_(1.21036877729163561187004806421015787165206423897645393594757479149848222732543945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-27), SC_(1.21036877729163561187004806421015787165206423897645393565204457912911701264816571244794535317959218134225014169958552523736788409114122297436868181226815279034412881321169642223875674097709647855827604375031824358241944144366445573929416470439005395503117973503734219418534728301453626181057303958103351724877851168203264142250990894413861772049242226503921506225025537467821476224063452800660679037557087017705664155277109587372310479616565458246051267877346509591647754710506255296568393163396173146e-27), SC_(9.99999999999999999999999999999999999999999999999999999267503711478775496588677576535325086227779597221002886707252402490327884747951115784517104936932808165900808724915631123641727203222861050150147651933871354484108448566090657978758580039215062735042774308027967501555759664924302333070164047939619478223553520745268511199171340924464150362396855520866386718959618607407989478385259566952042271426836234189920618059223328393025465752381963814589296901671905473668692059934918608470334521245869322388e-01) },
{ SC_(2.86591780197233630096266787463117576092606550441921342553541762754321098327636718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-27), SC_(2.86591780197233630096266787463117576092606550441921342161222222068580800966682544137566943916529202244565026849165917689115339968634607993403360769926559200369755774662937525267563059791287293737522918628091563802893224163219102022651770299219230186791956803248299632691991093629314199684333347897102830548237298315010311044730195485193084923892424338781964874235326160341226843298953815233839005737913847063012077767968705624320802625055333001429140528531401876618817093286023128173313511518783122757e-27), SC_(9.99999999999999999999999999999999999999999999999999995893257576169026285539877760558795157391162603540944407935916752527193049445428999402129117183211740466656201917911860186104101449147091696064423853526679157666560883407610819215488170224094967395802687764835506335828313831539244774700666124123869631956899323558688233804969117908091547146856294231360568401947557943242277643217697037895388293183516766769220683181080990896035663431905961308406527737489186974575173159921544827293300371415469682081e-01) },
{ SC_(6.33227430861452581999484454611910693827255339205528628099273191764950752258300781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-27), SC_(6.33227430861452581999484454611910693827255339205528623867446152256841631469412291633417546931889160651496054333610986284102110667946485950432616582676312411355058576717839739682518159345923185634501417664843880718577905491906539705931182725375625919372975202996361570514461776634408433338966339797977448297118474782218211957190056184522273280748144857873967637259418048395430304299989325085162205248868175909572286327797137877060354856008237080835087356877357082257080856918051114008265455655019487099e-27), SC_(9.99999999999999999999999999999999999999999999999999979951151040230214506255192196435889986395782955668070169865274515021265153938340100074828753410630959573723255540421525879853083440370617587321442949822080689241095717596747689845651905140383728830851240780714315821784210013927509314368353073945711513577750238180546786612592987994333639727450312140879771130424423234759366739932350666350848077167008448715281548827725389679678867019894421671713832098020861648755429255119400453235121566672119643836e-01) },
{ SC_(1.01701488645048351742362491418610868671324604095573818085540551692247390747070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-26), SC_(1.01701488645048351742362491418610868671324604095573816332343711105452574091957492464881609874155310766863692744462832576724333201541154072346766765699382330455449328670000824693475330729476850648504622116357428393638924348684334202734614590150864624972747190059777114682884495479107547683836964389876682263545801218406797696755174002666675010845868456246670653754593640444430031302545894854186512936706715445970111851394306952403843392018334017630380881701135995898449745556206987272254860458827723014e-26), SC_(9.99999999999999999999999999999999999999999999999999948284036036905505878106539445707420537760789527302038597212359467142829365208706753583480314769727080472930841251769546963351409456940449361362239231140121358175313406601933249214221483709738384955034161941181642229311966635264585411192939606100913693988068970849472839854304825457917976633971331888622416264553414786998678093087237386348505398600997287141943187035373529035889477280544420651863692708964270806259470409468261873182906215372422322967e-01) },
{ SC_(1.73240757319454876321712945561046080415745773706248655798844993114471435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-26), SC_(1.73240757319454876321712945561046080415745773706248647133238368517372669601990330799556402527637951741269169384293128872046197615617540226667834356423933205107188427326680610133548185919626864593914565621395409502576131328917183920809007874826137124733497023570796764712055352074351571474372289601075075459499674205118343075830673541226595909902574436976139978649084117906201588021595106776245227150460713535970276671005189606139692578545494385608927634920188540193618266875767223076936884045301799348e-26), SC_(9.99999999999999999999999999999999999999999999999999849938200016908708476593647714441301333449917232983935589882430679475416544954876348553925397810778869587095531333583024361182841302517003625488202943023609471017988004115329958801794805283413883069329219120736694877350703706015755371121018859116819175362600531729848030448359027909259268091751758805481267322816409703379926304051989443909674842437962170262660244896591208386339631691590295468623127273625017019234604902092688257738783189975410798798e-01) },
{ SC_(4.85130351485873938948550752347723088770022059623698851282824762165546417236328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-26), SC_(4.85130351485873938948550752347723088770022059623698660989265579405845396658976637442438125095176181951006434441217066488647145239434103050209020997217669861406942499104808384488564017630082119257664238877191868992490954837514807928987158262879297403583333129860768534505794967430677313206771592868244951747851027162098997296373643704928156139018724130712676417846050295071919943533977576706542066029275753906933389163939680811922115873915597763149085735550761292088164447226954970021899306732669714194e-26), SC_(9.99999999999999999999999999999999999999999999999998823242710335962048381002602975450120082698125730821275809015238732858397978522600912421317625034506185283381041247245315231181192704687177080652677909957736806277323440788586701520356870644612503456121454600655994784709816767064317307696249210126595367499329958169688760532631401384290402120831004217069063591636817019515117344034470106663201743497588043798600260081810421172904526658043913027664092737590681657820960431067605822773898751239148465316e-01) },
{ SC_(8.19564111209312229576920614539122222344177948194499094825005158782005310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-26), SC_(8.19564111209312229576920614539122222344177948194498177343017748383200491809918243048394658985146309801342070172798129317060732100471869081924638003843624841659291147365005979573125412883269496938888583134207844882906967296703010454542313998295672651631067077118755715916679489586784469054418026434594124039687091670610435199200304712425457430048065297796755899235763622284756849628419660523825486359434729527454908615511257896148281635239454700199639016349821193759549082236859911041071907943324237564e-26), SC_(9.99999999999999999999999999999999999999999999999996641573338088450481234573457024398606724972860597787690528561595250368010475731147865565852358362282402377731027222818029922533458270416761219423731258201786579933778187649172980926082987949990044126602969665006020738715662221823288423516963711294782279533044098884502137714956876894483635745762291452505629096708868676483888239131082349750859024725134237454070937690955419743758388472674956943081664624739705487388292808532654231504313310874444108604e-01) },
{ SC_(1.86960971309704747834098596399691609741197662053480144095374271273612976074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-25), SC_(1.86960971309704747834098596399691609741197662053479054910462327167331615239418817962503081932931890340451634960464660216606441811761316234081177905303605337200742387367688910565800341036275956637563852160531953554325135475392833468257948608563494113749585234371551757071694130223915334283493584239200027621276364767514754042741892585251741381911793055254059951345608157552222810997419824596284086600442530807235414227929183812497937283829173203837683555094044436168127344942265592102254286969191292399e-25), SC_(9.99999999999999999999999999999999999999999999999982522797603465879073668264091885252923350791268663373238222024647977933941949502217305685050899028063005846531020583588854912080275336499194509169417049847433982967267356038709929706560291564375320329012735750986169796551989634393672397269192191279813362016633847875037003261985025832287816083936612617230687954205533933721331308570516151542799667874668414065625948662726592275792037922673887795272658210791962804009894010101881541472393674935408472853e-01) },
{ SC_(2.53078312700865749726688023205126403924331013328696826647501438856124877929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-25), SC_(2.53078312700865749726688023205126403924331013328694125094200048076230080016126218639853303928255377939259690268714396613122787433650320374366030227782619269823933735767013246863110450196910284239084879826785393682811763209776116521693720560912939421095526746825545988905306566110534284089078542855109778438346269505715388785102546321876470210562584375169773147320543891026884940507054819007154856530305963667169008200395231091814305437937091075813019418756767568761605780308796701014080661492368159784e-25), SC_(9.99999999999999999999999999999999999999999999999967975683820241406874948934166653533511172092156534116443975462625617239327288391590664122021589352522847665373016292962519418353924774489444379168931261935483162281553621603433472072728977349555072109712109824679883539871447602535796929172730022419399714416003150322948950527704596047738139301910101594105207474101086184045874651597158224030689372875979961705537903665460088130392611988152756381550782800594641836041649779034851910713684757134469554580e-01) },
{ SC_(4.20941306621815835944433538670569070264115829616002883994951844215393066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-25), SC_(4.20941306621815835944433538670569070264115829615990452785496578506081955278927818933546242324234408087507662277600473802576457412134611750078738527194410669419929668722322908268897559932584917418004310810500892339693081122324922113982951012729749899983238419472551739293314611185990890280330838588407393840465717473935700337993507898010621074737807869345998925750153486451144321089261659824774170196857387514016640452953177352954598344864951502174653356419210290498586955274100732171430477016287905719e-25), SC_(9.99999999999999999999999999999999999999999999999911404208189759211732740935886171809403395266911806078856652711466436054573598817523340373110699177394159623578955057382297355014218133635413780957701638933946157411062927243877093033139217823648280095519300316420682551404000074847744014121081615342707317521112431516941533674300297570189514239618931688209087596074231043314980205424667058883669569048269145955246279078436197081567963182117436875444286563920537464570946709214553473195719248157805826855e-01) },
{ SC_(1.44861407368038454520845469252141317524629204882558042299933731555938720703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-24), SC_(1.44861407368038454520845469252141317524629204882507377439558379548241143060497886024742974552920942134169066357766969543557906176014900674357628857983142696780673746415247742955494485041233510432503498990662670897583220950378641223845696741332846886381559562313740385981778631874554601554942505433775616570972824832253816067914468693529837886615045250367325077108821183878776735677428964476732317113820955012707665146207822278999507004827271272406590842128507252382490865908958483246235481037761488907e-24), SC_(9.99999999999999999999999999999999999999999999998950758632767560708027866249151335156844582811589392427860365058124782731991642089310632824187653159631590934407076009545286555100782968710117672092259681922314774131655526310297215642116091062577441465725300669936944717371937199769171206287422313565977915692312983930643989022024956769092957221565563347010333758283732976918733369635806586213023769317382137590042397624049523931052552394023183946141838267360143101307042809763499173544335923553929609545e-01) },
{ SC_(3.01299821836738389893191302236946692641450518124202062608674168586730957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-24), SC_(3.01299821836738389893191302236946692641450518123746188030755122968582984350853696020509762314198657323081151588680108336846788546232411715077963117750110231668656877141980560982390492028458072325781199487427547774731142002830348058895360123183367536673133622884929051386045183595019288409884649664003307670889826073917169193783491732886154383548786467650171746923041854625144214891691798636889671240986472559884025759608696658369677102207417841369481807012979833164166774827934061044684944062744673202e-24), SC_(9.99999999999999999999999999999999999999999999995460920868057485205128768495672594971913871863330321340890939584043333958542050402215331205051475347664198466408074500213177974669224638083289662049237142284601195838742716676332740373469330245058121848911657687577461695268645535074585543539333588005818218743916760513910839394682596564857909507975555965083387737997577009316309396894895609075395636625325378660457230047137085278175267168516376809105349281309907762284048847679978876273402954417505488514e-01) },
{ SC_(4.15276102030971139663869209978990740955717697602267435286194086074829101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-24), SC_(4.15276102030971139663869209978990740955717697601073833203741542064934510510526957950581204331883394005715948630901471997927439830104941785824048551884364735290037184153144384976775028148587726371183017979938291113875193364207150284386535169050781429892659177118027944006608871228821244248916843584207889779509611438747449459759079063415836045186956388107365399108205187418470142097577403806506074170019542654504392938836798968994724336717205552118408671854359307226530571092950101315722654561248196480e-24), SC_(9.99999999999999999999999999999999999999999999991377287954098122384541119849606577690137712663052237626484886226624201275179099557875928787292869332016691331690451970323191229894147818897508450900230579748333236740459401315242524613097017574548920324066573787146553420482969984795794990966084403222750515621558455241429579692068429292194601611839618597431386451583256294712361622373650212144590915969048413769735033165732778792781611903036592449421019558254266016509793355137641614746928246864257491767e-01) },
{ SC_(1.20493139018354050396364738592701673636220505159144522622227668762207031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-23), SC_(1.20493139018354050396364738592701673636220505156228870501377072546140795785448934637384040780928123818418711832097125695859823774786298584802644665761440524674007808622689693328364348533020413848466175206888319008516841831958103380116912523837504422147239730460369364452006526848629731486262997785608581521207131727962356854878661708837843815080362453410963071299076782169063239102687079062367604358347170690882963033237329507516340046341643171849692271577906500225569305343548250042626451511137175974e-23), SC_(9.99999999999999999999999999999999999999999999927407017247518023542093828750747845440983680844635722123270981180494686023648655779582416049950013567041075891205074926299102616026352240680612367089833234497949938042589987204061624971059683439238296677903567701771646424710727595867914797338473188745190462628716359293458300735139756066056975915457284798104540693807472391874216930264612444057558096322941234802484276390976287104651130487501202428300210798836385845155461653897798462137129023634158590048e-01) },
{ SC_(1.99311766155840730007938784094077312725179496055716299451887607574462890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-23), SC_(1.99311766155840730007938784094077312725179496042520139764883300439646816368720456092676944471103322025451567911795284173614337721246228874587063409912507756393062952430611259118958267626461375511088224904898160946614122052834853089132640900055314485320719145583388248429835054532103183976418847870032408144871456509905573547188366856627559148136421454622564586651099490169128108968885059694779125622376422565777874605339289879857280154803293613940677047193724163580178692359761986787333499982011811429e-23), SC_(9.99999999999999999999999999999999999999999999801374099359197308752453603576131047516452927368262379188764120720199355009182464606310796438364009611630012891309259500469404587018398076111559503245120051103061305045948094247341241375812558792771202649745420669737550570148968618631069359581952924771812453743995708795765361659351053384477330821156187950952631834801216235080165212423381265856687853670463014423100331979948561859656233260381056967971933208534465447750912285880093439696195128696304586474e-01) },
{ SC_(5.13533303169498441896371390810640406021647663692419882863759994506835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-23), SC_(5.13533303169498441896371390810640406021647663466707913784420626786848577539948342073166036025847669329695284322217298918716071238698651343415598538250431670607803501970517843218886621847266716883178140747653725502209568774513395235783269558998316168037717740076267726591747242174767979952117276381002699472649174616077021164949081299164057659469591297012095580504483012733964983651613576630595686881098039543282200671710571050264000758620846664833057717433853732634155777995430743343236699023074748072e-23), SC_(9.99999999999999999999999999999999999999999998681417732679120007652379550596591905492960756265988856401363474370065856842250691051795682600125230378048035765792891449165989441598706811070177528273711549839200259564336326789936789663320974251530646924695649992972236365657484978287531578871981209060244121480491480455181587957340654196842168225043432465945367410684908910349873995251736646698623346087505106038789446124069111779751785632824564972863033165113004579223400794734193596445597759923144733830e-01) },
{ SC_(8.99483690375495720736892890190099236757959033639053814113140106201171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-23), SC_(8.99483690375495720736892890190099236757959032426143668731447440639681167212721719527797171146780064711290139936822813266107297096694010903437273253094169778604003578411890116254167896394141888066597915323804162041623834369780877656788545758984751109328238605945538232424708584063182474390962559554571796521681751272081700883661854119875893085070506261886828332864936080100484756483393062273557319802835697341546617168723437273949322628005639380524256721160529017905511793830342834237004895799326242479e-23), SC_(9.99999999999999999999999999999999999999999995954645453742396734618715458511854104184495562420188515421533916537429226097460026264036467110741766607883632933956617708518701079643688565847361956144214137931960590472723950498992697567682863075293755919249786604882766977536693359519182877477328890563527188345220444160685396409938384931861947484586479429357220482338242240751400752299436874559164364125531924378724032958139179940023509176370945771016673914300929823722007356528898870479147557517389880506e-01) },
{ SC_(1.49571864649346833307485258625357804618261070572771131992340087890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-22), SC_(1.49571864649346833307485258625357804618261070015073920275828586139803697397329298876247049292767823930721928664646280396175986573307948574603167029053759708351340408089861830842252368692479328806151926456552410054517442049843084891325733155703329349183805644836512051216479326535756519496287734545419385841272613869470168116766771158038584407332321007611244158281808509334596772913678187565743057031292080255305715499421711913564786019743391589274653289046523695017001553101130979725615147741949041976e-22), SC_(9.99999999999999999999999999999999999999999988814128652658735548876489751653632066463267199996838874546485861024170068076642439321865577096911069193054009247807397756338385789586245178053759530459206338181619982472545153142325507508933237793989645350340818618149342431112261373507784681306094710396664115931177436350260577400393592421996537588766274656159350651739114480607092171421786422551162853697491835876809865771806493320077450117619067382134770625366483400794642466254424303591567538322745697378e-01) },
{ SC_(4.00414284431856607422728851794317683765456195033038966357707977294921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-22), SC_(4.00414284431856607422728851794317683765456184333195206973700974720833412827561349111534903317556817980656128133092602553419958729122900514959804969013869789265787235423095621762770597973981276641935386442897542439663060611413606555088682296544134840138357497567048333704772308885787535702653546815581320437704238908588978564235210861558437389754925738927476835434441948940351078398962913317672503714060148888943703109003041746013446735945490894076945108816272231149038872655535603285151831784811543159e-22), SC_(9.99999999999999999999999999999999999999999919834200411462117654908876795301697180266696942853917756660287008811612236377008009142526634798790119600335365087275113255748079314394274449251893378218614737201859271607325227251618933738225971941576528112220435253954268170625581637995387933236258130147349469103017765108522242360528131339039562505036202933980339528694872687238244385449943371413059087702123057738972040998513745694679298693657755065316883784332064415470726309308364222995539698254590438048e-01) },
{ SC_(6.02733756338251593561397041623819981204235318728024140000343322753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-22), SC_(6.02733756338251593561397041623819981204235282233702566913401486791426775103687110889263957618410039087048941273101200938463614468150120827800477838018770842674180469716485597405584815675135794066416744168771828736855620073291330239928662617195730049089107104830809640584583111672877743068233572354141431173358317923356008888890653111138300825081984365317849191686467019463412431488925669936662236278811783071074301446313585328727814832562767268810726343613563857416015442117253317601957010597175231649e-22), SC_(9.99999999999999999999999999999999999999999818356009485190578482546674221374375368594114174739562163693168458498108577433869958984955063014426674897062191529113188079524114052399013805667164356230849740333628262774905524309526854466619324671312571709022034295074629727972637948818437287458343367815594474164798876904156995774092308942455185318540096020442411397041128497181895394926057420958628716609903020544774920207736406633265904254545071924231990748168185969288263033548644250093223918969099078529e-01) },
{ SC_(1.65958441830993022957262063472871904679095678147859871387481689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-21), SC_(1.65958441830993022957262063472871904679095601966837716399153948392276724593103434089562172080458838515273187060992126227997153192115202457915692129454356735235073605400638134357917784912674110778169847461470040894546633501732110449696587200201476723266357619796046417510134449764621599988613996516194544816998146347299996219407734259110701663299055122630130899519332113285313562567033295883655605951290101055589376890732579582152046564923167765874119374947074868067671814401094675259499614273388721205e-21), SC_(9.99999999999999999999999999999999999999998622889779251445258286087621577479547730371095511636431074447800273010019756467107497424395835806730657399701787227830411590271458867465739237101448115269271934522847684554002785566502858274779864682062462477972492848515295469837308173201281626304797879259332255094869310728677490420013760396455577678362901935667125091682248666889454008184912936448873641174478629627505364119977753174642851612726858065476553313586172210586359118094844336594068254853430507605e-01) },
{ SC_(2.67824441797191267011934057325206470778766743023879826068878173828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-21), SC_(2.67824441797191267011934057325206470778766422840064870362843454282670987808803755436755298645156076250838104729082319930570856455235081015866539151471601249584165034579417886690930391378085994351144416093816921745155989539888869178642665734024688215770730792957971897714485926300053104010312217702497787762000600178131123822923068207178324331870556717556692047768757211314761404695899857873185399678411750902389980370316784652673933225122309449058964813115616837222131094170241529694767641836586628848e-21), SC_(9.99999999999999999999999999999999999999996413503418801145372469006266796825097449079547965742050312045236434812687615811480409477306286249752257313861368005502632923824453712494844206966792030996008614656490931107917279164562515860009828987762299164627454998237092918265924072060166259081213225845889343552482167314807271969366924784558616790588874124263514421653083849971429085957566186712099445800428991117097329072977627279324265465922751250506427025739354053214371066179711645306025175538222679648e-01) },
{ SC_(5.24216989034958268735996849210789783057862223358824849128723144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-21), SC_(5.24216989034958268735996849210789783057859822414858675259055095569448734151215398339726766096146349230311025214806431942041459877604214955154666281316195630230528893276830669442194807933628997209391753590753098673586783891123345377730826919565725420391992871094492091262542401201132150073945320046259477580799694273254959986871822615719799353804620716184323201856322354973907153381511764701918797819267745133531796918951528706196881213538080733436799921765950225419130205065909600439051039676665358438e-21), SC_(9.99999999999999999999999999999999999999986259827420356122112195185551672366624073250839599194457507453628742642408825539587574321988663070531346665091210332453377213607635910430558804237795524086420616498779687994004617113416213076016284649087888750760030455121073468191914791665942367281561547327106767288655797810569336941648083751909818487275941957413272284668887599357964225376383967099007378119631322072540336535338653135115635982689717806180965476057119726371592548750686453644217463638771365051e-01) },
{ SC_(7.84730091257718428828730593965756767715902242343872785568237304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-21), SC_(7.84730091257718428828730593965756767715894188380156124455910983891034423640868297767263887550182849297147132094175148945302076002226638259291036091716141789071639833073009348733004619542248113421569210924255758451199583877546268516634378160445786592474784984436341844165522203578314841448712063415108370957352428729953649018180131244898775199678867336912535166488038811707208498065945628369299057350240961931251506328297565689454548369226193613688346870644768191552015883873931768088354532679931063997e-21), SC_(9.99999999999999999999999999999999999999969209934193732645335964382330379290253067743257178776587771145954358465579435678655286836941465589087619806854778963332640469273241540043384000734386835119884823229777143085980583844451626007518535647962371164606341778086677564382803208102585069159214424081238283097552554678548608898040886644227817986624770310493880047109975878179083799382082128737216670025250465946842362679942603966581060757152365990866172573014876004863001409841826665676884523747998078108e-01) },
{ SC_(1.54312352729357272495300072712165473376444424502551555633544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-20), SC_(1.54312352729357272495300072712165473376438300281922995823465878950244844409842644794531288751261732596721610642491316018434358307548274540483643794160847070741795459748461895642004476272062795755403849847880564677825579599934784750161452649688717239208196143024661915646344740414093963827975105765370910223327211058618438109286320788031834316649009892069350043756814202077019809570433098648537089622715106088352747705828628681809819934794959540948429448184341283146097311426691570520373285761288995802e-20), SC_(9.99999999999999999999999999999999999999880938488975652115669643213631230248126799838296779591231609801204436699360836757494663576140036341768217196428279881453755452963024766965773560507122795822076000780692881366245754195533398857596255693285795829751852318699096142023830350334754364808624892439333710684341795169466561692893207551567117843822386554921700320723066779416814835120422295083102698726676136546837592879162164887645156563225574180182790368161855975114174502212139974273411738602866251571e-01) },
{ SC_(4.77518184435850312824695974855959690330564626492559909820556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-20), SC_(4.77518184435850312824695974855959690330383150786986950012496836930074878631240804035124319738780013645083375077544616898561908312065941430347802463107453041858495671583762741096029923257079257302968047790550769792307128713580082994690133797370824117510373959841609896448673241459037898046030086145115469025705353364577688588250562688270970666695785406307428035312168024680392843053488776735857595501213628466833516667726158422967395113793626911252805964855127321974455583739901636298003420464827010385e-20), SC_(9.99999999999999999999999999999999999998859881917665446220291365201399797968099921727881847815426248931197078614981311072035724421911759715979094472457981523507074663281668078107427532373671551387866380649320442592003200200431377322948753077746077574202454027025945646595207601239042527395341917368022264491271985293624469146381728776687435996883164233298131425702484520495446810290560085866721990974101137184112839486463835447743589853836128729569230456404847333286069284701906153131312047203315148300e-01) },
{ SC_(6.23033471350706135997738616127961108759336639195680618286132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-20), SC_(6.23033471350706135997738616127961108758933566957847999289308558170784132778968965056317879231412769917679771449539438348439187932432493322547267013194531309417671787810003677479319468323294595854503684255557491537731045988638721316770431599974491396281662487780560416719890123465165060033082902143555001286051776247690298863659447671949751100979523780429285085076607036433377399469725034990238965854157158763546494845113581705197635768323514084271939558504928218466777087816118281922669032194856920486e-20), SC_(9.99999999999999999999999999999999999998059146467883444182268334649298276434564976929585548792314224542993928933951083639699574277795394564312994424625369164959037371172773384747232025021592402636011483717441355967233675768383537538357257986806020531720706435789906784405523339574569102482506955066894177094965148419682062923055222829644783438538549051815255067258408435937976971922027519308509543595916785909437447704234765230356260327291111447155186396159452978437353554256394464351228571434927304711e-01) },
{ SC_(1.33373774787437629268591066100668740546097978949546813964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-19), SC_(1.33373774787437629268591066100668740545702557632514609637109354894670795671905012891418174238222956443457378985272098537652333132013350163148619347266169535428935790271959785854155452128955268040415297439974798617332131470285817296376813372025095563270334709839436920485315163295216999970532915024196623990234556546750213339892672121031667423931247372788485766146488884304258726675821256736326005518351249552597350782054581090216636090655004539684401347254213062238979175599528628149953908411989598459e-19), SC_(9.99999999999999999999999999999999999991105718099474933284806139857400813352589827517564927043682648978728764758259157548540521229982370103779386138188937766605887502378218907747175575340569525702100714564339935788891685749871866514578306868104810273210249836494289529105147374405359061719026715925340956119852852492996601324880989891212817101225911122299495377327270035416555776310547611050503379101499527525151298272309849046993736994837320252913021267626530928647167494021867650980452641151659034895e-01) },
{ SC_(2.72678641362033605222928850375652132242976222187280654907226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-19), SC_(2.72678641362033605222928850375652132239597113865233767282496812811434547903471145444426860140849165730840154443142045026389042524606225536996273431225195010565142182031866043832827369044609848704703782132802561090043295900410238999861579888039814092986414773412351284654281044246052360633441869568298727826155909328956857265054324941267888898815042029695822947856553640688900715106569954380462969592595043533559140576168918044774278564716729030098230376601726176338392887493576556803716314240985244825e-19), SC_(9.99999999999999999999999999999999999962823179272477727965947093384519089206611732778459619581048522840843983255738245207282856356470053984205037855894718532833271990791091133588186765379675456288234980220490650098675151780551707568969447539905274856216620993281787677779454733403694016219238223636757761450274748937793228503165450442613649588268034562597918498086592965280705305942919433851691464387890013808565426437488525566307607542416920601654752739157313437038398177564522256160039491363191017743e-01) },
{ SC_(7.84847163163788824526839738027206294646020978689193725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-19), SC_(7.84847163163788824526839738027206294565445289627706367397044516728216502661445392300478006248633939386640842420482995279705186836498615499704063686315382015944481417124956438069937893001716889658824383315836128859850145896671561869807159580264109008218390919771400485087005083932708363507903306384325767738641480522946290564444209005855639377332161802587036895543893713301102591999134123077217638518756971205307741607894644129433547698592923260994621866931698355071283092718360372159939763148236356081e-19), SC_(9.99999999999999999999999999999999999692007465236876521225591624733741973580413992094514864951948409477638354994860924045902686945655537440822272877755997184065488715073530826515341419594655069460256313924726013950095489865778611313502990595501567365333328403336978055022497339264912331540809314218388716961805500397317409139244048139568851551974274994613766476680949014369225330326153094075670488566570809659965208296833269543942839437306713455429886097267390826909886913799325068151515675401821307784e-01) },
{ SC_(1.59656777006820041215490180164238154247868806123733520507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-18), SC_(1.59656777006820041215490180164238154180040523146025537688153328547760359499813760904753192863253468773626712297698660124388326296138121710134471432406051440808915749048856231483953159574219728203962113030610855651177879388716588720129915042261664035793682631272244330593879603534062436307902756624026615456937074668685614020808807209201572426546153680945500170264414397099342062973442361578952380032313799737733204426677060914568817376985131352291265491571136049590994403151805024530900585006882465838e-18), SC_(9.99999999999999999999999999999999998725485677789726970050441887873791324802821873863599682065675369351546184000866507009103149360549935240237154588525165432757567980472696826283523224052289490749011903664848152710996398754070605570284221534583084155424171763973302026291361113216315086799683804698865388858367703071408534692832158042217078221374921429321228108536764324255608445406900297031772562838405852406675264021549234730524961286458631341099514706834735141229319185038708420515965497634457920545e-01) },
{ SC_(3.44953506024823770663434441274830533075146377086639404296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-18), SC_(3.44953506024823770663434441274830532391029287068934228996677746001591898296589668811859099135418230183368869090360366169316970324064915891904038980287950101288861517367153994714618453877419868135863495400888589151982726942060284747289611794798919706164618774056608179851652058360068165608781457601308274531931492985898183893679408914979686066252487633256264623427099975969033776016116820081774952167052659583745697715204840936711313869898247097390719918108455249924815936377403504970454933340960681185e-18), SC_(9.99999999999999999999999999999999994050353934059093527720023368612070391851891406718440574162266209027406523980686123351044050966467299673133404524778194021524254214740402040008906435126427498618501963733597360987556318089420367195395956628391426699039046618616479253844852188916292966502183910384510396500722228980724697185501358054419824202059485672658948142353306536149886006393532789623679836881982922548558194712986003534069955762666111663959634870672560092573427252698709721428977646938742506195e-01) },
{ SC_(4.35166485374347011307050170358934337855316698551177978515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-18), SC_(4.35166485374347011307050170358934336481859685873216140703808138876914884948876331316739925647147193023892864511114548238457128487754654556216343738493227753816508527036822424078877053377450262892442522287960679598399216373675467067420960306212074773556400362052082955699418548571551788254097519705082720856063393741663277035047125589079587783198416413169663797774698575716466933356398467157205064339327846149216696847465253262085226226554946659832296405255702874805050585475448565274780032487961906445e-18), SC_(9.99999999999999999999999999999999990531506500346911434918787920899098195107223890450668484205227829549023183287220398482022387187471783874651026967044131244719811336026254678190222733416033489289005400050123232478835262944811994584478096472240564710057918847691506763403668556132046747246126505680179175030370996427156273193469951062786344533187975157358909776771548110773203090274293899180349800394539287346096992143426016937645719411397808886142140406571702228451300533351648334028048315509115370507e-01) },
{ SC_(9.24571534386041068466488557220372968004085123538970947265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-18), SC_(9.24571534386041068466488557220372954831521512026783180405754354097886633909666420259426993221137091279535065321898200088264236523724424960040430570024492732801486261174800152674655450605909216450153664375989066460839592611461245370445914423958469134702623836585450775145273632179167068159633632516565206133697650089607101943944658893386809234746268745218644974101782367190994926519199092662771524309633358926212213660561746092502239714663634109325449891669735443584060620900381198034818129697477437067e-18), SC_(9.99999999999999999999999999999999957258373890152083906642579378593893901713675765098318926413104745110870584186071073407804185704163908348012520912780573078297733751798245590050762285702888909088013591367509411470242468260490885859347433147346225932292893244796521699179017915375269683211891843022671906243123097650437828622789131762134264796168556176234658033104766744814914904339713894114835117307900457700205766539066206181496361808280227525595233858167413695522317781531300493715242483817542972307e-01) },
{ SC_(2.51782594979259907296692544420579906727652996778488159179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-17), SC_(2.51782594979259907296692544420579880124943902261708085063966052958947147187189514241614449776830904431946870970159260360455691937092075466222889953840855771868704636118588224163624330062909301674972199987289150997146172863151668928438934140556411036253155163667282032912833405760303498275742772716593021336311752096063104868665845591806232654630920833411198402563942100933397822310625608203804916226388547452865994565194163622537436968388997541774348017060507709506033121197774674300740105857149675366e-17), SC_(9.99999999999999999999999999999999683027624327549818611642405259627277734545779576176956905635223388012474302610177483603851865686459231081769991335822870837867041940841659622753593655014713940872093638971093240790482102143812831175709620648245763558424105881217295782262911565235585052686966682126499325038194102297320702415146289036055973821432912093687266500152913802057369103672457993874673452831732722685075424587280286221673083152862430730343082806366094609467948165260813432090271885255078181302e-01) },
{ SC_(3.60775684432840075543946767311354051344096660614013671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-17), SC_(3.60775684432840075543946767311353973080369334858269134898134738756735710959677046218904765558906885492364334061087292000344970193513481403662883440148912074435103556813083982898635787234571361755716055018572586190298430906370378661560335191704015720371244055660846998368129007455709209071804971663274582300937117518716033394923135198118931181280814242888345084797455361388619932190727294536114690351832821038660288193236381399279391092707971406328888496938832156195246642052265826811660109189638402499e-17), SC_(9.99999999999999999999999999999999349204527610078975893456674652126360120817771889688340590968406061460125038582488754724017627375833001324771430239571028894899497567383218424464834879205022318861495316028975968435726716609929616209942133436466398134427112551311140669580095176152342696145945467540112296016461483911736978651291905258534879989907261687437286731511535258583610086316346495465395414349916862854388934045881989849797218994179829942041721541151900222125391260679662481266724801598694735986e-01) },
{ SC_(6.90295059018608417669704557795284927124157547950744628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-17), SC_(6.90295059018608417669704557795284378906469154946034628615057275758767580827917168872394030586141560531872074234809560204671436693044343425840391457010301504740137412171139792833213101802925834324490824649737298051601026361059699458213672597472671940024151452085874111882881940096147836064982443543053856840493763963733305482754535226167817708959873515901950734304015397820960143176206034587501435625778875628979453297551205219863495406983015780361797852016321617748926259009982380223123180180635317112e-17), SC_(9.99999999999999999999999999999997617463657472479607266215131600498895145019962619817073610305785121833967037170438681582573928284612137780747419863832305571281883014950124752373550795955181129976650681557447404026625564572824730218895963758905602539829994766072456089977592244417787627088492524928818145775370505461217658955536144756735086815718595245350443425602386634810449310841322556872457206827318110637949603603506259040330724057028251216694224515414944270384104053076948461167522911334233852695e-01) },
{ SC_(1.12525415366977613387811096856694348389282822608947753906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-16), SC_(1.12525415366977613387811096856694110923727366543178991248424063936367102797106855871236693745998067792183896492313740966698000926384509124609429426947250949336737827454663845525972326893699060730973692704401099534341951883068691454285910587103533107303005237227528372401263431557132330403274340519948918314428351859975268429373327658293293126940989855765542949901183195688709343608094809310090493938946747815402871007789220671491796635682024533321624753650618068739379453108842797651045201761667915069e-16), SC_(9.99999999999999999999999999999993669015448244579190490716020688404404988716129435608800138080386131101191985387656303059757501675622372081366205214275299789803844591657957023425966901002289779390222862063087950428709151159887731980350511804536405521204092863537711731089301980213111230626506493072162164721222427263528034471459447079943925573395807997966484588698625396806888099131723626070423844207983223693719453345905264650308583103241187401206619743563779615806788459652582739288156225108227298238e-01) },
{ SC_(4.28382572030007718194566379565912939142435789108276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-16), SC_(4.28382572030007718194566379565899836945234420371503713724232371619461518506013953070308907657022223120432356779587799651917208455464125023945619250322620734440739272636606036542794988782854081250549762246318356169949227702350611711099210997039015438674073645627935319092938030223129482110154686819363861357190498576723741502657507450107991097688652505486877417543163721810816380539353617200530000879082221365523977016071919655819686183525162967504230324883441039688604036630737533267004970821556250520e-16), SC_(9.99999999999999999999999999999908244185990477624499510226321205119721095058075021258431213944274724107301289007609545750918897774273978402826099822688602645967625721552721825145710869947821878494892043502042886386779524528742129041553615891060311231387090458943405060106557011131937219960743403970810197762094709961812604268256488146909044474591554749049806787202591299579515547894789910550353470898790744771998924472207450437412320226664359385981163518398216312240317301698499316137407872077789696500e-01) },
{ SC_(5.40562027377591153287639258451235946267843246459960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-16), SC_(5.40562027377591153287639258451209620238935816537673386849100638573507598699570776586306494386496157492458850686285616875867925541474335159799779780220955316889931213510702441069443159194380992809790714268610391273861815905903687389829176851624715712613059046143861758161875814504643502656660200767189812949905736607262048197843805032721613684327373616908312542190461280141634492118337843627241511563352346923911175072722072966072193177907657314017778251100684093567096339022512256463459212982758053313e-16), SC_(9.99999999999999999999999999999853896347278714196230278468886281830155045973395275720923575499461975468393288308375635985943289405969943879734175052611227437313547948709681018548507712575189908929527549469183969349762222426533435169077447468058380028005061025510296067919339408665667471629938407525632912450465661014944423084708195510683442318106580092132004438775938913243626094924308943984839739704805512183838281324880895887413435530914721449115971797745548216512359146565268873966691648325262937751e-01) },
{ SC_(1.19902638233177101512172413322332431562244892120361328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-15), SC_(1.19902638233177101512172413322303701605856504819416313943283595900895124055620076170199817791086158982821414571245272957941067225878881094777635192202973211099821708998113732307880722055342305354709198635269006039158481945297350819140843635049214167947460796264522687764348740281409248135258544749282489911854318186620606384911450658827884693894389423867972448049092242216854615433791135706385760735336705625212816403060778777341209622092144231524514644426177053425586224941858192290734691115813095637e-15), SC_(9.99999999999999999999999999999281167867236192838031095819701787916028865373804359002593710111142773221681390652606310884830906788286803616120473194438083063522759231894313363861617725958310805741867501842807266210988030666684760768277264807533625085500984705089723638296262863615123643927659844348026277776487148412530668062202507750370540981950803485371381729535175337385633187123449179301997596140088990341420027197666179279421047422739289730401845124093351489448033951720102033987005033127759823277e-01) },
{ SC_(3.38815974110446074818447925736109027639031410217285156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-15), SC_(3.38815974110446074818447925735460780837077250405121624908912811375492279012837756694433825794177369571316423181623747722330627012456802421253043560253125336775562990091975356520362422074333107111588703197523535255218079359281180279158607447962967751462269796380368108394244242041512896847324483778833671068785773032575465047510854277006905770126219090406640414242106898982323451003943735814733493683579617533872767857670925391333276393152162297673266479295833057475252401519711564655129713657767572827e-15), SC_(9.99999999999999999999999999994260186784379476757981152515209436341728036663980357387443440104175124376831511468547287382319416060748994665608544177190490182579191009837162920485796578048138194041887008869736016572866833834735218013371717851707589665383762610511843580510574079870970128972241540922984155443035750300251011010520308198519163161300610750853200215747579653236184803757849345278234749183060179873847789020021279061575836422283909676225842553638445293397586781889264388759259817414925829082e-01) },
{ SC_(4.25116010644745190294457870550104416906833648681640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-15), SC_(4.25116010644745190294457870548823941816346457251046944865032376488142333896402551791579276032444896639851938619033815895833657540967584273977907877502009276953580855032699870807772322822936877320097590315344887937786915492201615767133292963150490357076868487302662214735366771516923521663480453249471739343125382720393628673678394339909114917543444697211149317158220603255176901419974392387577177162511580101616906659855126508349098308950139220756875144978090282917331368796288438131844298023787069363e-15), SC_(9.99999999999999999999999999990963818874674844702748116475486084707856461295907339275469937291571802782088108504905557783890708671134426482936133958851489468696392146303515035649204741944920865406162487979478067491792560183921011153079063283495854040944848891001128521367934055151737110438100017484244794529588617295000506752734482974861081634028579480845943553032127333374137833767657979137594352600945447012794293469082855519756029637064798338827033317993968438364908937482910493816043402620465161846e-01) },
{ SC_(1.31341538664973833672178216147585771977901458740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-14), SC_(1.31341538664973833672178216143809571448147914551861945315022842811990408652297041461885743682766018864667058821901627898580410140220884869293241356915777926528623138687971777326704302793043310182526965205603774385653311969321173331212835547392587296845221807206335638843928749849510457947938612432868241044749076353621407488410073206207551248333799609881930000055823209165036193354244804208920991065276559411758752154294001775378226648844516156477334427467299485263229160154290869729898721568604402964e-14), SC_(9.99999999999999999999999999913747001105585917346448255468667731418020687259389117642182162355936270894492609327035751577975781905511260534442528906521602550843864551447652777416530770961671413078170413492886975664947160713180489434110163702311286988054098578657891174616776498835271527908985423746559334439292604676555187684744172862013311889242392247626156810700173294404002606146758360658265157997396113740487595634539444440222461918086708882309162207691177052462629678972670037494736536100439792893e-01) },
{ SC_(1.77789708411153768441437250658054836094379425048828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-14), SC_(1.77789708411153768441437250648688524478645580912315036422418839735129736561800912560835961982067194327873729369871016834742639611520196204396728785664128662482147177652003174719147456642995536688761494047602027150333731314226281909251891742919393899761767420368792123139583925661503462304784697391744091122115805322210363460646928593577702071795280277818846269272559540733486786538784857222816733384344097244591858184250197335472047542795560179495424920330227962994053357077457931707468603426251460959e-14), SC_(9.99999999999999999999999999841954097915384594811735454538004302545016037022517780490173741435795675944555929465406170133641921828986499358904005969797819484344239424979764763194041013420519497310559183944490160788417032999948756260634473243130077692082484694343666135596322405044585526223426948443120980873050098596571808877217666689185784054062839744405474537113202401718707617992954377641581966966545840927315700676622358215732909299904758018931589113524600079145027881524323334695454152651376769920e-01) },
{ SC_(5.55649412115402641099137781566241756081581115722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-14), SC_(5.55649412115402641099137781280317284473213695030346303590402303931988046396190338269482149660999168475038150256800723829505660449059395231364201161042275163348508537606449304494069682810716375693279805579082802414158216642122510822165563995802863552100344122494366921663968851214429922913820743999886335738338311045421972245807345175726774597818626362833446973328909358428881598965762081042586774106378896781546245534530618913971744589459335901893304147242918115216617276790851847223349497418927973733e-14), SC_(9.99999999999999999999999998456268654079037183233581732191235680025315867467018181588237226553648078402104412568966357460261758140705807969848157060264373212772583437857468570864009272459824286929152662453086520176402045732499654604160968831934723473454758968594200776188249690085254846050117019853832573195081897863789261857952979012801346898762681231872848791491800971643317036237879893584845809194076325524610955276649279179513732336594657763035295367706519084046186378639813891200730024664881194352e-01) },
{ SC_(9.18614956237767676938688055088277906179428100585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-14), SC_(9.18614956237767676938688053796317258083557235212189163208541269091999669666251862949510205364812241435932602713540901656517151026883360600451742706846201757354337788307438543330054149104803715768067518620042425775420550383928117557120515122638131395055608328341320860695875103112009754385279107344430056107313863250016820433118759295567727218114604325934665604906406791475823429379313212052101226211800542137836625027013187029262562420815009289990239523883555061206469585943421229829445523451696682896e-14), SC_(9.99999999999999999999999995780732810881420878824781237756494428642216774906860674262521495747901019476422529053067054804076342588867228309892313842590968737438559958533351462306136561566035343161310449667786137339299678900922238922396965259978293416064425654849017060386290453490593319953991014716853265314390480621748175217352424683886712175702607549061234175218581612412946946694618730133735506473462495392167916885413468468240891287057630611654063369552363308029777319668075166154464106813717530309e-01) },
{ SC_(2.02237261225785003304622478026431053876876831054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-13), SC_(2.02237261225785003304622476647850095873909180892287918519663670291105892549106786498699240038550543980803346111571520530796485649985741199932123859242106953735865135143891664110901496277566279720106785214896873432294102853816490874908943796259151346566606797734844804871424841376931757109413046850801530240143016207449719658356785167896334666388493819143310669816981411875825762085981881153178256115280842466820922870399927388430970328517846034743061348720046367396642901249562006592204193360151806314e-13), SC_(9.99999999999999999999999979550045085946798831307767615967815728269180214484619036252790909403641537946797064418773421399496826527484740300031970118682423523800911121951712600720523023938618836373759218286510508286981245064681398402091026119540125145271144222176557855414254314889883573284827385379124690381427040558491108917124358629047794540691235512374459271544852802999945917447080468309969091217719526175112209317700651086548969987910493118357567850475532204275002096398789155408595057632731154652e-01) },
{ SC_(3.34987029435018790479716699337586760520935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-13), SC_(3.34987029435018790479716693072418709836017910929437771667989352195765848457801327380537239173197201180176080218346985650892495774035295932905608250406042601982574423542358371694291944969185689340470978450488775476762384924785167574380484450959985723643696985669647726067536240145655995029501448315267496689967102955915125920689511406179578883297420325275705419734245616104771318170311735879077910111632963840985257248968295796101579049149898595541297275950413245232396232327962777768734503394067078556e-13), SC_(9.99999999999999999999999943891845055150927223405544616685223412194532018312352112927452321976910999098948049508814822499116849784098962082807247240354662341685818269245714571156296285694028218930934948908556886283919439083377260618552964932511197054219874122814829581002165311372499459672863965236873628437256914247926307351641680837638533400251705920788307072678111781083295027335002395879798438407459058176503673480726665421302397190962673216184108932938297777524721561087126288972933983518946155179e-01) },
{ SC_(9.03792015186088981693046662257984280586242675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-13), SC_(9.03792015186088981693046539215738321788986007042365699492396320316279543704656553385920212950890969400392613697102194394333089009302293356880420539828722393281429459440756798252690496493026357977966088511646078696519216849028481527689534601133226590775882871940037713146444153208116387342034744131483842449184313713683684639667347361681889679947544099071968736411359531118781695435946215982692488955315854459642225183570337034144595721581924901891009381696599056233108436380627927215964786584791618908e-13), SC_(9.99999999999999999999999591579996642934151749028718876204266336384518057312270158991179501722094007867269513312491970576830983231405458466598365896114293073967915021543855661308978854719200666851617736145918857326995797691540025815161748308738637322261149646675082385639820462296143823539613814818378533729566185263398193570914921475394320955027638215702854032556452121005120074292215838023871081463612153498469043881103912304300914513522689206406089987405856445764613561621916375162684097661929892747e-01) },
{ SC_(1.22932697008137914451708638807758688926696777343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-12), SC_(1.22932697008137914451708607844192184591614021773791940328070305907562272284382223300433745269608192105599620144790494124731585172304253064904889570512798966856390838847723038950322727570967216489506463988189696586088552862576676302458507583018378239538011152581276602465391085652348792218000095574348738110188831812197308238926987928796802995971775221419386158715740692175212354148929975079049190330152422027211799955068768549451248468523076997234543234379586454572701565848445729465086417448959545618e-12), SC_(9.99999999999999999999999244377600315267972846306889896038052955037247802621151442469870443181687549662547384392242168552551586198987635666377667288491218214785084557964246070182324401939504153389732646676456576169283311877256893335438670498971513103206528391739503987826941965462689634528631382329044690235509449552819606620554284030388025785016998747768833817596505441782759764113304742100788573487452340669666205903502531701419783346606301970952783643261289551845395097138033771960548299748561183193e-01) },
{ SC_(1.94194400143787859747135371435433626174926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-12), SC_(1.94194400143787859747135249379511403083044871897362511037050124806754061275336835830905725762621394550968235318798300478790638972487568362561464077501190661717588852425709719253847163292958680062291156470483595542128963560564633973633700109207198638475983195243424201811540606422066782547498014390464716148059784336885812875071003684709344804730966630672604654294265898013648377879784197004207883524124056780017570061779067586269124313028463274433436853556491404974636268026606448413073206266966668134e-12), SC_(9.99999999999999999999998114426747639720283878342644563204203169790716021521459251173383061511822722138542525896575482448295370211190274140784860421332669802522548665773047007513535501337737342769293246553594052155484863347990751330806127168505703238439677398058671991000759955784841064858343931841972679048717309792670368465654719670193574986504622561882465200813531019263380321051541831568937340898838311445737284611598359421546001386821750750668783594967103468706500099741033123754869005438685314915e-01) },
{ SC_(6.66051588882332623597903875634074211120605468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-12), SC_(6.66051588882332623597898951018257669190239027988790280537744366770877869050933103459259476608886777756579915690814859257345475034216099104871689275489156456302753285073620213598586781180228060589887702362312976118884573130740471011229159680210967244895704144448701015278817840314429220158019791909505966927759104498603516304729831106483512971261087799947245393962528955678079281745145306463990785840496109060362063486482136257417186274670623641839580128843624512912347189142131567768430005910784229570e-12), SC_(9.99999999999999999999977818764047366008251915524084203751590909615251086260955508748261875866517202782687029477624871890438384002334203109091463704378174221182722376822335534340374142555193102169681841196257200130319439394836735580276154595560504229580621565183026575699906092001065134615587575775622899658383438321484961911921543293368782124716382447335465893719947339645128446390223095375192808481543364390062737788287402811325613827202640885016945267219061070038152413660953412231060479866988215583e-01) },
{ SC_(1.30501373596381142760947113856673240661621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-11), SC_(1.30501373596381142760943409660333560692039710197239032057112513034203903698344616901524225376776673636415296454266367127536474789531939842197697151398931051954620168734015505409490467508115402882079987820789347094140079821190591257048602505229613017427675926583289549059019839863887788014562137726446278719219792278561923255388743792279408327291728896923250516571971257379108941833199023548584100079722864916841543005155359097839080114754493639235506419010170504574954807431988824330519664424575231670e-11), SC_(9.99999999999999999999914846957447288773605522779915678255591462117418280286605417598269089175755617808165165915602683165476414345458269433948306260363854177529036902285732309503596434344904848730286616536266179648232912749254260921122177909333891770273234400774813916276696399105771617638759781892253016980274639868069042438911086857998849593859350294868259456585846305237089203682687313371760123762847165326247352229463880572729131913191062641677831432439574962099265732575505785164506006988730385090e-01) },
{ SC_(2.30686234004018331233965000137686729431152343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-11), SC_(2.30686234004018331233944539753366059849572649087610511654342255381136041764843262848250444528344180274751100392168733968453303717207105441182806117417443233943716010264058015378484280588583802181389162890492955868058516684358307750210024654293194277914609668768527570567723841110762132081932253661492542191753298326334321162262780851843772980019848390872856649462749403323629021847818806351420968299819163556526351045832094245083900470441925991571680931787416162265425757570563755456357840904233300722e-11), SC_(9.99999999999999999999733919307205216483006651477197259401080960096043483966257192343615939983066359058015411234573217891951462139195543298683130104275658252397201222054956161090902681981646889634021219639651905330486172099952446497605963028200398919937976311851278164684080724300523198038402357061425303530776059374244813248811828979039869539865200596606550574563921484875225783175485587493630243707736284879141253824075634607287034007852277416184589479502402414449884296567587929029951662730558004216e-01) },
{ SC_(4.64061566951556869753403589129447937011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-11), SC_(4.64061566951556869753237027271728267095397991615419284758180707686003398529938108907558659049805544522166142089343687183618822183674180398802623140208567072402203228303956147191175622432634317287818984037751722759314830706093834121136985601634172326524194261532142165832914113607429591085129772083038510981278068584029585870749896926379359591566067146763734165664345664227381459809244090427239355076319156218271945168418909110785694512816165916715703898907302335334394861643407127627549255668241455228e-11), SC_(9.99999999999999999998923234310392328504314665821502918105582647737643019746695356200341919771774449617719049429392209231285890370146966327702937705005002184280017353077487902270647087318848825953575460945669274016393435239996905422988310852251085179190521532751217700605669335225363776810282826832168168254965685159520325099422292341939640480539562839299127143241281660562761636134317866645828326358737604399820142244271880315035259321648287816929497132547280897354649873459775364006169123128552913124e-01) },
{ SC_(9.02057872842476626829011365771293640136718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-11), SC_(9.02057872842476626827788012314974142790926916207393567000799536747528665852957940046104517610928340118743826314162253680048717597622179343740006335264696415656819212856065002452706323285773197002877181170513609645226653106034257353908933673379666374178326643605624295953803936894098093825390857002684872623073784374057517550449125474465431745573184934610421148035203590941470464984042723048840309084189771384579997243914014773511588312133450507254488274889474764456105591061347125528289764395734121383e-11), SC_(9.99999999999999999995931457970214531344382763500560740979521450298825780214945541896202189854474216844275983986675930662009739900611201068149959653449557497416940647881320682912193115325791819947936258729341672087252057416024263812703049224805890246943526656060900271910628931812153202546207245286088184201636723675366258575793036560652857802740273426903311938076552797325985907156430651556662087903430650963838535614862310585721428952766908680195035699158214593729978819602348438663666578546511487638e-01) },
{ SC_(2.01724303927619530441006645560264587402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-10), SC_(2.01724303927619530439638527971518402895378308593167368933938083097895914105097853220949809226355195616763949665976607147482734150177406396672952859214765226945452347977564327048328471633932359706066181475253090365189727333367351575060582769461913412620214498488588122674367266769995222789306232098144726082974899810430205404009158930892774244308055687571333194471156431420346649010206696858212297365763691018084631483817683537177298301222874090599257812256350856270478846129594126378216518526591643988e-10), SC_(9.99999999999999999979653652602458691842430650820260993559156474358290259195311093915253527357327361693441729958969689754741626190671808226283208321176357071049612666759270261537258301510936970338807161008051696492329011151441024206711798673439297093922746120664076403362950701801472249600616977394476695828826008527819050665336968791102783867687569984985171685557174424584367761174767539614359167513379500439820659122737961073226213712482343940968286210986638068482869101288889181592269909589057079909e-01) },
{ SC_(4.46381376306703714362811297178268432617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-10), SC_(4.46381376306703714347987244476099027009902224539880005072561623010099356540803184148103036001396078252044944026422080138240224768254417146931017323334565624451815099945627590607391027983942120417773378104950239985323999117684804060836017845745179632044457016676450796401932538561014818518845565777874909934983679133832686623486576188630071071148938083208938499085183977246795190669480369085393999940011770378838807632321077683437611646390289967229138020819814603314833128646684632972758168720689991635e-10), SC_(9.99999999999999999900371833443266485913038040997156521730870275068640693475214820902318135015361433760915624397597203846840940746657939286081364605200713758595178692424520434822206960393490736772166491137163017541233795275517139247267410699507649970089369444931075965017855747225029199138401668188234063259525010428970267417033114000305412910864715637928080786514254241357289574781729733996541742322741084600110673688819799600144608849647324443184768061684805422295932405956450624750023427143250924393e-01) },
{ SC_(7.89404319689879230281803756952285766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-10), SC_(7.89404319689879230199816332201782739529240876597684471272919980002777979484632363432465884931581298754425539385458462115986883181108643392276139302735348983421293058202757716484062137411039264846920281186219775313627007944254474745735092011358327265824752737392551192886602710943611890515757652974814780630277463419954569206290620286570655977415225582763091478596449757175244395774820571912306590264730883843056758929601320981726777511322879727946707924970966013671019646025854312852174453387563435502e-10), SC_(9.99999999999999999688420410027479475305362157778906332143894166082169936942731331015607326922677730904125008992719151667796893832292596525226080125485663687387254462074817179973188165868637583981505405306392273710095595133094657390308796486677320683162477145982344545246447461503948259405992813915821707874476148435145178882368552160954920286669801651923953245324424846942116744922945358896352588428998382245435357510599957693421002169153027160299186706875542049015760799819878960550724185779068785498e-01) },
{ SC_(1.19753096328167885076254606246948242187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-09), SC_(1.19753096328167885047632011372988366839572495166042379119878396866921535579541590222533938771802127489633885286823687436829092513169438926309539112468485901612826556554647131355737095301585331266627432715950786269002497531271856275268976492286772142534422181109956360070777230825864534228868599188286080749992690194349465150189374099100496968514528603190277672577719059890396520617292399022494599881257249461553031630617968764612470212007400625184399122708879017220672145741500373239998829273594129387e-09), SC_(9.99999999999999999282959795990827170135614551023194240930093260762829569325129878206690247961179210344290146583519020530140477449064663472153477122196148449723990947674581478397862389652720572814459349933259175702680962896596786112183582392780523594102607808197088334429511356009699288389060708476939825983150618719140382258928526048553918913632413879435283278548406386086586092090685080850137974728621832392962549756584863779090254093942057791784312747925080865351451451980136949655068387207234963197e-01) },
{ SC_(3.12890779952113007311709225177764892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-09), SC_(3.12890779952113006801172430787239899843014121180020028987887830642136016563460269227648455367884353405820594949780478791250435270727158941605153451515613224900471744038506348092656973671581305148881839609084002562834453936791618968140360445438617378508144751389050414302328039146499148686500822713769253502370230875150664323494512343222329717689617673865658363215948765288460608585507671188522539091504719171739787225791322428333826762895704700179325887091436326383419834154611514564672051705672679729e-09), SC_(9.99999999999999995104967991047919853288257931434502650824735772704901382256708715021400393451254864039132676058501649583756462483532603552799348051856624202071636323687874357588478927990651820778386282265459606160788426873464937091160667643766602768082383907777101778047612835332747498483430187110019957772023312922681975084585702702709221851139804864228687947667854639696398886738326057666662346670866634585482424442770349811280971220063596816378250127941112472200556139543776950887869805152051636464e-01) },
{ SC_(6.54608101058329339139163494110107421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-09), SC_(6.54608101058329334464042270717554606519400676020573764995976115778693340979388130080022974423866935284325224591960497690969536588939452672365750379157106213853159115223232557801762788904356215610406895778680268668011973801486872457234995334787076786196667120204171752334345220791146072452816721140739938381457912498306668372885313541251070938296534995649585503668002513271906453156430650046287837268495454161895286850464882200938396384912569859073295724940016743865987946354209215048147814054560547411e-09), SC_(9.99999999999999978574411701440404233691911105547524791228756909319836684728278557912715521020318385009945375240636666743026580394412900791259090936132285225037596739865993433693958701211417830265319761760818827268301975142733786084305836633688005769082569801814452087685765102517906826744994947215969543741061484041836019692751063794459856496528591823807106900483324218512086593607216213529777612655991996245466300172132394213898662211942653694107956279418132602626108011683019257953461179914335417569e-01) },
{ SC_(1.03735935397253342671319842338562011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-08), SC_(1.03735935397253340810790893751025841403787815856505363100476894912737720704301244348578436008313475030686333192772334627176325130192577834575419942038167479241334017482987492858923177101199753404916939468489116939860242362829280075273559017235394780006839615093480333418803996300935520495415063145607760188117015493031522213277247229248056357387542181122622768572015076371502931740140691049999730628263261329673265670764049208272952521834722647922384989326854349198917760704695926154462049679427169055e-08), SC_(9.99999999999999946194278536284405354610570430372345844458835181493008418475677210409811435500978199000936738380347156217172881551605742010246289295475642679026543821035644853655390677531816640177832243794051207478874195355431282643488079197260679386719149446309958513855351476668434360361836809340787797843883968024921763591812095900362002068091186310802402564913000326899027361620529514471492425167201427430668102330868055716754719034039207556779437459710875339678788681820457468797439539816776604272e-01) },
{ SC_(2.61325965311698382720351219177246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-08), SC_(2.61325965311698352976552085794674873948977136797189716587867829599558705866806962643405885733038039478988642364563704357082502093947827944797367772608225883166215523823555298418758318630457963482420232556107317667605517036573551347481182888243640081567986906925549623281756915886475451174605904832849770710597096935848251100601457675358153761388535145261895383377176682130933568074601365026003928958385110319127880786379945331696265445429638709206271414191927076865306342505962011449784687607233615452e-08), SC_(9.99999999999999658543699269545087412937067564529648844277884576114957046482837719543260440895585699908131861178001643432695184748185712205336322075891023812779806400255307285635209660964682222600661763324276256706481766722094270367164876479959205752956664985241064867292918583916329838581852654001919326649998662347558813007474950774388834590480461253782550965790984460939938335780491393830813803651547817812540355485622875414796710271358731969408980506856043610689479845560715880583092274528220974819e-01) },
{ SC_(4.65380338710019714199006557464599609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-08), SC_(4.65380338710019546213101449129115033161848051306517504163852496999266647986927435990977890722124470233716535035990445228653000823387146271818720426084568211949650343484184758290087581824628001771507825912267378927562049889381022044816039337591261522072635747352493136871116429720337851950673898424910098529686862263347207701376800524528418048828250587804897579251153864192781131793938839620359474075175276829198081705127544868279759961683164164202368688955879018962498808663268299079979752869609245111e-08), SC_(9.99999999999998917105701710736827116732862038891301894759899293767055928392225272595948117206501678573317153059878167175491018649556936748464550872544907856954522933464150470681110854065542390219844974968670264625826027885525059842104573562044746263899791837945122572103192121273049517060613765582028914775681100285591918055756290567968423433583223448698871995491519052440989343536966227231794085271655176660154985346506937216237832680674055765810058625222813752209386455645318051700424429635825604558e-01) },
{ SC_(8.22809624878573231399059295654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-08), SC_(8.22809624878572302974031454935391361372051682957068440610320436801540761922332609590542871910636824146618989600960676006105552258407007206307536028311773758371384227498119341523374370443380937572494475012853690439239638281798715153078626511309309040418220071090995999456749591226290293812387279580872835304139321819307678449632135824464227576504967749390956982614137103459123505807303434260206228565147222591135435434070689816927846520472271632967415936426640676428703540971888279567964898575910715123e-08), SC_(9.99999999999996614921606035909924093917868987200475849137228921444966119154931547433131311747286721713859993964713899333566061563563544320069396737088155497880063790400169176996226259767364154679636076351504706293403513289841547482443607379100708634166577212868961703960806666990381162806668658969679112306754390205132297815473144631413825060452445785272573811906319333663841292964458685149139890735787210705223580744560561707667329507023265309675234477115176492742999823352033168878910390869069602146e-01) },
{ SC_(1.44012915370694827288389205932617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-07), SC_(1.44012915370694329490470632120488821960831420625097208452760967773899621810591454782318687404722250729109496920322278038980055717492831906815698784428939225099587980269878692724152957317801702412412993718131255597355895454512166790913978083465076143342113847865164382371389644607523752931911069238459892398036303216120203753683695430935556070669486987607684338788351666960681655650102436765917243152996502890151550049144015760341535686810061218536126158179008438752649028139652964238696677459061310317e-07), SC_(9.99999999999989630140103216562700402577129540528603374109265955230536308597494067119686820392828740053320454263283957034972289792638690212984598029233291446961997991969126997116029008314129347403292717442507305281117023966514614990281472312184568218292849743703025193325667661349717298061440359197461007084458252138139784938458360221184396180949292384861603688190523134947836462720740001267066751287510670926330528553505087996619339798329208819107563086094981065297536727314006650691009272319462255730e-01) },
{ SC_(3.73797774955164641141891479492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-07), SC_(3.73797774955155936340127351088274306966945499304687351262224327036485003195399876134404030898541569452698698785128297775253846740013651700738117739570712980936632597600460893639731587793211760397741272305599435232590671004667375647855341661506518793260072662904540036197343969280257117154710542629945909475065608111305917119485608749363342549197465035729619138390679809197242810869893983371298887552954017963591067229750619536979210184968032123026629350132118672624718293514388725210602289794113281992e-07), SC_(9.99999999999930137611719284858340365115221610379236961291415554500435872388131334398788410009604492364643595965830967680631112341724704163694720399722612295634691371226329624623908442837416395690299608196223118613825405185261111911951537848971636572392818714982018974612977857238412841244788826676293170497835913653497769763927232690492490945784008368787039023716182343873542256800681402456564241935627923628431291698833219433246493125751712345703002417251750058512609170411880034738680935556902505563e-01) },
{ SC_(7.28307441022479906678199768066406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-07), SC_(7.28307441022415520449044890666796158134075453197296260624638167119898104724468797620569591993934165154251894245847724657348679804318367468423664871917651373448389334331503882422006453094389677135962962131469634391849918422883493755583387914729253820958027791152034299949176207111497843039802381391080335874944849745658182004855872129588827842894857367834326716640912301040886396931562001152712265979590735678629914058813142332537079465290202671615290625230647393466634240383500876112800156132201974042e-07), SC_(9.99999999999734784135675655199435477062371271904158802490932787360232684194206055502603613593047275332698707464520011088631566295631082659933586705030333526358496612387620984644750063897599725203398934908527060541521854556685436158796714198252960674419809228990516232542677961431420440764986615825562613851043943570711111775961182791307437967727617534370632679575032475835782635221622680183128935771393540477464095097827358860337546655974513824038524754934769834274209792801776761029464963487681454638e-01) },
{ SC_(1.02601461549056693911552429199218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-06), SC_(1.02601461549038692382672664367980909129797678870667768849146921712212318648724429914717031817788290760089726336692234200973914773135228261464696094871714327427696538664377177507837044850603843659343822132883729646354999890909512098529406876550302701462857600464801392168260146985374253754203891556843366488152159129130730566352444244537417884234639163162077937574407637561014227372724382633431402179130482335521222619551445219770431699554800298663104276019009351056140042392344367285483613919360270842e-06), SC_(9.99999999999473647004399918212790658478585875953442964686116107604076344236801122474185649272934613995743945730939569552300021365101719323998149781972994755931612189643480767690316499261003148488594493744111104485195102515931162213304165502158643932709516860360378708209085284952295320543183629161025237715099530969074626286839526867763366850481056477689318071063989591265436161763207215219865838561800778868728374531420305187030797150900783726793452464152222676753653006247167516863553168502906926078e-01) },
{ SC_(2.67831455857958644628524780273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-06), SC_(2.67831455857638435657005412213610982128276604639866069595480496471537739536401609653955476091173984298018333992862711537987312713316036415483747683882706275541677384782394839207289648307083009870715553463423558163889818178051780340013240706740963214040859738404485649136995119403224901763227367017966025598531866420695841491386351905041601360740252046371060654593691975685823280716565708139718098769413838914699445951082858703077317900076440435161320338733864823055555572257326477201841180943482872309e-06), SC_(9.99999999996413315562652461552002296120358356472133278078314440392542844209646953698240203500798998633549867504425862619825808196127841261566653158765476564276301681397741407108125586006528685692276874904550104105313883720338983664992978010697540996668822432388675633251819366000519391363331431034508455570735042351871115290237627556585117202107938696024469549112905592522041283932404634914222293377504740759899590438485366489707037641986399526791217155900620551904585509940641934181648230634413259265e-01) },
{ SC_(4.02049954573158174753189086914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-06), SC_(4.02049954572075024260087118468826429814663153315077991718901582426759064739078052407110165549578932460376560288440104449973094159762702982705468081682224630114850462597062111224598235409091240576849433101102274161969329875425199265191158999339698045252297020474662563333717095860445116915074136815808082848855273281504987601523720992152761270084812423792786748728905718724925236891423461782473311868144673066624924040595777536217052283197112160037036137391999739146035325998017752148720000605119897683e-06), SC_(9.99999999991917791701396959419313813401265180623673059179911547500949908302190117148933168329908690893202837285420822052885466203283802841353637437714044074266653743183772093591630593925853924527974309329870487833794885494542924974682749486064402670967310507687630404555758440772082780068787018846191231498609660679588396035862441583962343363796596673788481921721284934251655364564300464315956781078329012607834367762424242617511122928763782421412214474185216401731965589463411912546191521776651138922e-01) },
{ SC_(1.03207567008212208747863769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-05), SC_(1.03207567006379964486059135317923765178884637901450818590057242469689597001143337677447826397179538167736031048422475631735874873560436656704544669504022530773567828579863580427738546306049255238803108540550172893695386461067609240342223514481537877261996343209535310475116468606103856887738630617770362994732691906313027170715951153121602930976853364057496740031527741044543252742005164654126014924982764255443579086080334090651228364872564641844143122049086203141303222959691381228360964775537428520e-05), SC_(9.99999999946740990561699687835096311656569291167275749312185252030381383219899994380821659170492794982620386768812474172028293398252431135066349066538792647839668698102255251061620041845986018822889924627257362980746160722257168566939728109073250489334405824801674286788645760845367307942971073221727371765467748461807566364605758791097966471498518756887318016848413147180370466183250281458021428954703658743849818753824375557456108425203304608071735244045207645448919381735548782239335207831536854561e-01) },
{ SC_(2.33581158681772649288177490234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-05), SC_(2.33581158660532274536503743158240337737646213456952132594369654562065216097877971320195527157730193358300929564031798828711595676076842939009562163723943297244285734194006007223556382374047257979318721500414262285245856557018249968979311552508909534303598154907496279169019026232123477133854368562792522099489668676299693279861365831493384781972611843978211229882541656295508764994514877851663096566718391379871772045083068385054238623504509574501724078123943242318442223144503041840263886374089552234e-05), SC_(9.99999999727199211556806106904766880124422922887658969070618357584897186718873889930706733533737414920883255973805088255784903870503201137916841892176156804261940743581740668610287436174400116137484876377141991877409180757654824575875337907433838981829262228635400536890633592785954176621124567961998085107372061003574500599157091043708082332975297815142693186921586918415547768897948908381471877202194378061551462589503407388052810183783734976447440624694286163063940147901602691211823597158892680245e-01) },
{ SC_(4.86091157654300332069396972656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-05), SC_(4.86091157462873896531559848284582637784557632474682176085172337595134155904033586070379315035888134734726032766408540784812958598806994566663326780124710770377187107108833873767030923227727011909837793256232391518542423335743456454652126193064084872761224599187295590933776831599753105253666406548766772599334972756691975278667198025557000529670435088027588227931051871991509667076507311250562204649129417687068848055773179752252762878812337264258619348030050901842648799759954611402159498056590639155e-05), SC_(9.99999998818576932484137442598201473525328287104259159863210153066825931991341897043829111475228349045483285498413995323186917285933143000076937430579794115233182095826446006806557434845683429950622114857801966123846319338055787024498273217621081374284059134966187810875651505392521771289854146929405808060886179474334346367549605047691775074583245613018760263934687689325536147399232974306541392134063454728398424522096828357018128412581868706236434263323391431032449702295638869342133483754974197517e-01) },
{ SC_(1.08591746538877487182617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-04), SC_(1.08591746325455478104821136819967057961442551278838752348343355566286218686113929505011769085392722880098614840019465066786627028957464813242084556927966028282629178723699648064575453887218658547931264605554358563986502073409516676818032454066518754329792331835726580758311211146649657048162622184720605255283044527192625257797088007777099678809069788187552437063489110706836509997536602585770349259033122327371763031488856712166353836833237805897511019879417937250092100019381559125979139968316714978e-04), SC_(9.99999994103916297612061821589739247612479612887786329210914478898502255396074979076847380789538147269506577481185329419865050666328661434508868431416044477700542172646387026146164224487845332693392736684598893846596257736456069469932831303309379700235636614876092375485047676007220108087938935195867325054226395462569755020081184471649585143960785879580745133870280816789767884448864548351682712557998756420520254199770987894208326002729195396286471764230750762925411446123482196587212878858449600175e-01) },
{ SC_(1.65569479577243328094482421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-04), SC_(1.65569478820777002278499230035423603846508955528717361183138764363130759934146907994995145252564658286590588043330672733736568088625032438281790665274851888610402105671884799890946873289097350132844056442855760778504889546783747804632166360961473335056677009872583516249083776988899488413878415770540869751761917785545042821020637486175722597418790478332983352386892602088522806462238312763565226884340025562855038735507337739183687799030444108160429127483514013497187305409079224093423840656368500111e-04), SC_(9.99999986293373747572336229637016911015215548939030428628815886701051084032403634304387592163823574064764141161745510371323667165490842320379672149455810787341804779685538532337126177529898307424160287639638228578303059367219675887486179384440818508994233187183235425117869203130395479376427352212373583179094983956677855049181936352501675476518166852524409114024864211976654505328129329141275749256228504839199221229471272083720991903424231132100498001886103604278094475959343911266474062340673953856e-01) },
{ SC_(4.72170533612370491027832031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-04), SC_(4.72170516067693075676085308284046548368287941901283849283802268407085001323603380117712993012887418320098470197820438430800375400461013742422252145872788157889745624950674378630308331446848389037105550082483516085665582028196070194038315998455738351257405359430069565974850464666742859881265494476240853811215470922001980390784076319007787055901806119150667756505054118980239535903669464580996153901994796184051966736242100731906816925205360327063389707705971734665764585696567561507749437887229461456e-04), SC_(9.99999888527495665124586181695612446896055759076554914046210391986508076349569320784929587149658215798725165235431650500548420438784030227751958358265628970993501643962381317805243477469130674237304889359122911251912706271419560285910770631706849781369467753261971106878784188494585647101027739471383693003980737319512703901979613054654768752954440845304999284188711132746818638758530113359491822833435683803246988867483208003823651051032814261010407735099449745359158953284399378090005712210474581903e-01) },
{ SC_(9.59456199780106544494628906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-04), SC_(9.59456052574554543206855339368821738303292144129224643533250613815319054198172995757500293034201494560266361040990132903799826087882524386271334883058570222574369362764548554621322985293459036681036350936792370263478263637436635785459960302052069887902457445187820098082690964284699226936748715963376583385063569355193783639233905746245528110402738779975078022638401708272956028719655548309901166652903956254394607665326795020988537856449664481578241990439621439369798643363472829333476806722444683316e-04), SC_(9.99999539721935661078558358877631095592475113333838978294776138905920499993032330139337421241902110329995510935282225042250995091483713765893804389358404607462625442239227727503856365590616276283533013690912228413610654893588156280765066256573917595651391760595965856427674956693283638835311400506664007482874607000520400464981164369338168028152504872866005567199753620315631853218147483048084578609267463623678894563773075053269450532221366890374338890064467167184494935898119563677811132238676494558e-01) },
{ SC_(1.10342400148510932922363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-03), SC_(1.10342377757381395572780813465347362173848474850723949280118058196604746697019572341413318215944145126695958128785386403768383539056318668913049580511267222668786396512987355606357832079330824071633509714763000228154703805420380841226809762285320859255338411857700840437097392670248917342530077492683819354527846578272478059817224126037006797924447420234585794971684867137695895352065956771102354676254811894365161560870498206118533861539197244201894588423238917868029352924008553204725898125797159845e-03), SC_(9.99999391227798240570355499022960361310528390499881018197266455182809171966708398936554453665968911045993870299118374953720723952637206472112388139335340004035264857609225769117609578581537811200358127352219484431189085457465511011367152198078790212367556345107155050267755673291854354611601028709748042046865897310493248610005403267618655965229352763040418269822894976453122559521873062039563482824923611739885583070016982058054313658269935174171343198190502958661221270818484040408653750173203230643e-01) },
{ SC_(2.25476175546646118164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-03), SC_(2.25475984495072670616699492058592318073731947935815704559772827343957028999833639178303301437534887758577187984590048560049309194362578427803068644654064353829312571273881404656974876959933956881749270257978577085791157039068158591410681018436713818579999705850717033396103629973591002115994971570790017014579064418272908019539035645369810874787478707942360991938657434252507502080409901856172541073238790283858388760869397761626405870660463300506949260102988070042807416992646493834806872323726803835e-03), SC_(9.99997458025789982445234678521350046147570566747269097297006799068277234530960383891126934577579240030196329864154371255579971284092149965664359210957736971529173205042093081250449736372699216695844500361817207467277119512515305472466332827851429424250625947451636368646391696099091010507514309786281538269045925530297104928415277439273287729077747597056412777599320325937253062039121168242112708605401359148662225387594303232749296186979313529662443155110087020374951036032548173900426505478925101146e-01) },
{ SC_(4.22764755785465240478515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-03), SC_(4.22763496440571037285398946467322152879438013077166851167820322096781411803101602967274080802806089831791310107085441630457942728083218628874481058836415036218079015608106582663616413342942237592877795451725218582690701538322377534768805672823178514496056562910114186529938444688600571794798707451517027196106959482213808413198379234771333495250671145504358644814838320906361026604251041524455314777424351345824775387198748093231006179859065418633089177670013556478508726004901466555382091322541680881e-03), SC_(9.99991063511373452677789560050715373145149428952096904697886367712876086292035745304311300137665075775273598372499767812075771242786145874855260095826032408084979781582498496550763382567267778984462635680866130352737905116567138144457106898289831285799702043487961078500270822380587722117890745799126097012166609016750935133471076497871995927122341989914848865983119754151725078374043588790005160728009669720033867672541115407013710341252692207454447790955386571269789604798208580025842831790721417345e-01) },
{ SC_(6.12821616232395172119140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-03), SC_(6.12817780483560382808213557329119466062200876361634502126654101855994873417503462171920965026316613028274177950775049233440669665302666581845868636766440489877186411773482813665253370273946003944605695383754736936873840106381068326241720149322296111362109427697762615253610223173961747328543942833277670703533635146996505994275092106592137357930186405512884836781314222643145720639318114729066271317143669053008940304917313235596240875802807154598766141454795653291599739378818168929230008696171347580e-03), SC_(9.99981222542099697541143847070072546971828712330332098329770865072257185985031260314852113919032198468189307863786664906732595418738355515847783722029517753608046646105120123876154838707339506523033413632583032210663688541682592679914200175407756374745025341137154609317405534874067938923193059980542578882066469704789720739170867326643959200096981737568594315302314431892923592597361251855561253029981966969356407795627317125366633329796621808980454701786643444907402366202716161170312320402120775433e-01) },
{ SC_(7.17522576451301574707031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-03), SC_(7.17516419661267582836034142174681465204546939240119108133248205295339734270417930084308859916380512773163931881507840068416345388390221086830455795381118700976633134766870842626243909834567744533155267945294716455117405920717282899684428800209181185252677870139843050740709460388726089385203283189938165953927393351322007154426959879457092338736053974861861644896156794783787260212117683134116318158048696031746003526637450133982920320145132406951950929463951376414554776872928379361757042284269550869e-03), SC_(9.99974258178055125266307198014100123003566845596771527056984119690792340007476181043717952620624133322304853462699177805133923671700194459571450679112952110115183754067736732754526085407259235156594925752725123490577463983114254313088597337232878237130488068840714630832409931261169972643381940574573574251462173875076615043890492664417739484346470106699266972677891219384324959207370519061992691189768840015505197742750976116894509011762334997906198598219245703947633571105806140038697463949630336210e-01) },
{ SC_(1.08977183699607849121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(1.08975026685868225082099747945941996671381818418315536870193669678296106532928807799250909718485024339364885037800450270269491539718476844275823176938926046293973622562776303659992189903112282273804688777592450861967790592563558839055840320743745743517124801776837401121113421270015723410236272602511202037511553596347924893762020894206394739312687863922968952922066268886484510171475010251450006622524798965971270954932230608474913019167203244840780765530916268329460323782785258474769888609110757044e-02), SC_(9.99940620454828879176449810090714022793966325036551863037524364956170680998552985230627257441664425512623325862947910848780903454899838812983927846862074783892122375682062446356128198011466542914409856704675107268613669808806223468999915731471549560119508428919853126572110247471699299141816274992236135198359087865880841983233018975591367702314503088337980462078592624863043456548876665098346359209814481626968880920471651405777824085084498961422127406379393002743019949466056574181916058099651689932e-01) },
{ SC_(1.78531035780906677246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(1.78521551967464525812118193536998457864178736944932839508966062490920983977913731452860386330129428988643959146499238519533510439272212211988348296443064807083049612254960715004778700987731749155310876701221314643204230414499688327215921624508990886906725847368865040147551794223030969339112865851425188756335235867433293871733996891222497034543953097408857990064751695677356390131257556267672627210868961098841308101435582396237613538685321484883810914108667403775738742025077232461429195116913304281e-02), SC_(9.99840637579225061689220616432075985634795177684838328799799378097519517291013941215385055849958064136044025335614398935312278776881615250387809724005390098759965632553311813973103549298175120350139482524465729389908312417807587194665842630539253758936784938132701160252206934489824287775250794380842975790174460246991944385024354743401221003796973051809502576452212229636093005330964395681987883595479541881975506947710338355137649374464671012035562176747997429673069797136234426619034789230719427497e-01) },
{ SC_(2.03086882829666137695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(2.03072922829785412764841050885782924234816249136965856784583938017611790081018736188223687999876856101493286192891127224653907316634100288250902277997512484886751200221909624555006302408389544784101560093067868425111920727574110886210515003659002049664300850730141800851166512616080332122075080697842576939296258415122768607418798187858959383049671689481354903539156410201084805224067944662577370176530609953627594786848538340329423858423683103538089020644057268289846646276221970072536489769025643200e-02), SC_(9.99793785677893519174812779480838655924731734932423234294294069992449425216385970005461481038863544081690554334303539704684132073109604649614262579053784312170241598442533216766228590091484634176673005320023682039710851136366207849186480817732574508774099889801516500622987309336021622394250832627784750051628496869920836260929136480639941940830972794464084948098223215601031017843124234960140768044637617707391949948127367933673498635487224027515795724693469515440840875190922863554670250380512890187e-01) },
{ SC_(2.29592248797416687011718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(2.29572078654806901956773962128873725317258199243322324833026864813543563298791582759067345370927013211131751436485373135926303545824205672100408388119836608013942723742698253158825504611525346094396821412403622255927493921481889928668837905973603383651805682086702397751093728776912507758571185200632272001319729003355651579071960733495090546994746963852360611508210301194267977533797137231602723726016493487285942976883227358425348490878104264990630653588736390691329691673892319586298997892103355891e-02), SC_(9.99736448573833438551901374069916160082285485161657935970098520489678155282193702973150207036885608526804424111064981121646464459825539846765219169457812958666384096707176259278198827616355298087054529952352895771688201169993256457977842748577431116383131563229150919282988665267307314378159810855110884585840543438664714574577985254814341262596212481955968518620628040275972941893015178582124863257398330562940280357682968567499337875321971067674002549590662525412105546099814520291879786638677849755e-01) },
{ SC_(2.66608446836471557617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(2.66576863716550940523643834663602903343412691027273852843135941288217001883358922665531133518750112173938256664285346400960504583060978937807117359041113160326475215921376215686647943718380783767854304202922439633733916721749843129015530644519528290494433930248285283911310398738720138221726525289062335677459212027783675235985721420722586719469315045658602049763170408429747316938170763162477214635052925244540302524248462164057897716244401861039283114010655031575267508920532761222634789689538511757e-02), SC_(9.99644620731442977071074952503756513594379179610965927674853010103238383122624249337790075531392503903192894317965358160816337306507873045677143717869693639520801697528499751699845748033476777032067833843164251267038735509848519717356813147914406232186302906853746387101025616449658340377064049192334098838427810354558514702289969721445128620523303760656579431646500448912155533543139906061180895870794100250533118584128980041772272673997087854201826597188558589194919728518908452007643217258987134441e-01) },
{ SC_(4.33529913425445556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(4.33394124252182473430409877221967910797867622226492251867897610304826237176234205087236591492775301187860990482272397390755639330607447336901965105997233088160319014424029346223644238916843456763981709289162131537218519445453237404967311695686259903340466092692225153320582089587252645635191955910645798631988546760161387767229889141907691633440411944042639714942724664881391497750867101083989306287989019965318777179382753475304491095052075043277502755738012378861349287761686817900063465721264064751e-02), SC_(9.99060406247108182433110591563949184008590550285525910681138166422995597546698572115332083802970332128616627121897628062691197069398078335651999531708939350394021171461022811848765537950565221073815507985663387023414130658678517161835653671716651889105148592561400980999844972491569135768885981972484556339777089910598305278254049157000511662638183390385938716919090639856781430202246719809307852115859635342924078122187579416517698884917122716280159598299212052892821404132658413827277993111120708503e-01) },
{ SC_(4.77492660284042358398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(4.77311234361182370553346707381159993522127668228423471698794041916914462592971898735317849465740734845328633088053944012173225744522673856105790002415848172408214069917931220805129043473864993265296014536251765599619235474270638309161980840862577294567887230574710596674786583672806261330613179024636609581486126381444805459823476722923620864804227936605524668224800326195728143182612430137862837785368173385669325151174313653767933525960762817591648188359244076692216655226984222876231471974326328940e-02), SC_(9.98860220378970765416666292064830637521544621232664286948273469114279815643994118299261220464425608197046745838168231112925313418673671418209258128341850371322883422387259027817868426171842847565005445057442801891309920668960507045036275491752451469501935202560886734381086026356191953555384486093207040581077635167409982151341587820821452812951152750188497181793364081579598815492232851725904672864062658468093007372919440011978305101459486087741869001923855853317522336571059851757312553762759660218e-01) },
{ SC_(5.16691207885742187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(5.16461336987755230869002002933674117113628450460422043485783336784426247557022356731909397461110296707780131841951583578912090434140144989808173826842170096882942749374641049049281256365429658426702580621050221660498897060467282826111146984504858071976776010862044802440626983001384950620260121297069950332695775013404688865827055306077429454209895399918940351395258935654650406962823095146186230791842645841873960270123869669412376104542452754845295352322884283271557570532941474399861951518394012477e-02), SC_(9.98665447922360135213521266796851531835766163012102217203454689231482046185392838489821970734399552125784174598237931177178099063321027279880123829101090102291996800001170395479384503634523326119052750469669124649924813326825830131301210568512199084926242430541410903632134473488254399271424441248952830602871668311874043567869499006057808372210726562783173297018290349493718182960580142111841000744070620479569810216657779987098922352077088309252329258306000595216296566049509627139117579193448663272e-01) },
{ SC_(5.35675138235092163085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(5.35418990269726278953677792861679455376590654675816169848288105945573655682296899898869189937986681565688296738399075385825415191313522118358129631489596746430113341211856136081029311923254306994352803590375421622780891367234256434768007178556481730242780532291413026293701001237059312098409866323782729969789632460239666058895869272654313586973220036641750017933187081733418154997011863506155998863196409535077692811025064845163939795073047119520932989194866829270668217258257742446996467296239119175e-02), SC_(9.98565603778031935652835648513686708834550710265717769750310667576425570795156384080269125053377701778322103408050072703031273382230423580101177233233637046691140883620617512339519592385040904452381281257315749593686899133043996685159638851121619705365155446292409398769831758909586549766267584554212254610789481269394405823437544863448131217831503558412097043985486772933184380606483570614071708902118307606358672960875898690760212848810279332764698105509738345245083749332937066279013972721999860951e-01) },
{ SC_(5.46618700027465820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(5.46346531864185652266299265989588209830477972038596340046745896270965748111117915407412844957783278731133588174240048037524044875999928967753425125705682555219277190276660395984393739754427791927609984222737114058002449717593767347380412781416718720139763763560831069900217749569616097183501956486846275878732672863046892658675036070608869773474008125672567991097462136933844468402615456658577751136172272644508197808001817946107058777720287520148449437408040153565904831296703427837337651292795982606e-02), SC_(9.98506411932942854108042459383510836576611626853085805857841828589727024599578729102555269651786073170459620653723435360146680969297857326420874817490649789865110476564950683767869711247167921681531780596807917980825034133974022054580775539485597880316923766328630105414714347920762036457437458978017894386560496656019128174531675104091105815589303265933653087805554087457116460752142693192884431966173438902253445039424420104100800153312932924952674504484086634204703161803242375829959949079328371875e-01) },
{ SC_(6.32438659667968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(6.32017140698571553308044713212277127305580363675994643659056175266603461157186436972772935697186775584447574120250300482955852737095239398524047402605320085802360502734438527396117034710342713540059428441862943107393468247351552313105817924671750521572193181871359324500531838441102862859431500100485751200567575889152186067903542912689055820492041485586215746117964026201886764474679347399259605259899390116183549116857291416283292113855783627598795204602258349944011558929310877634929059670251343108e-02), SC_(9.98000773215447974930857087008764150802722713855075131190757826889154050945553921220661121452365560389264145143901439511281161342450172975749282079997770447047962785911737177061850743521158087304394889557567640376240963884213622716828950326306607973087843641309155595671290107453886169528964221217684412490926872530448945494986971864760658616100419196710271977256795134280916032136610315122731856424655612669204766978915937480231411079284123625076175877311308405119710061909174916588652383642106075950e-01) },
{ SC_(6.92570805549621582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(6.92017280684475612902603902770438207229823809705471271479828689022445623726238799386938809349344091646528512687247043332181204378221893753409890952132644020057841217740487449401462724977326326240588555873845938412452043950543296812754149801196579464929877851745061494558924117827686964993369769544684901144441194229164891237169979061294758072061727145767674440485650023105765507606408329089425013899299577165073264823196330995405816916856144211104913426885632286552108251986044868955272626643196292768e-02), SC_(9.97602686861027172603564582943332105673127986071266218353266069809274511253146184206845366224173756081058509215281054336469951237433524652820574411529939841191369181516825328759338555257162658220329035742673409660923162322070338772130378093565233782382859190969874936467078560818088676989913102487523016799437156795510688393525166046823170397107091522702108912971248346576465497475646757504529354235293789719140147756309348702788375506713736572756372750138970931785579136687784786155541123581503410624e-01) },
{ SC_(7.68246352672576904296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(7.67490874173009135069880523412697822508457585502890722795865696772047729876064075442195819127967415252174730960637180479582147474309291939932982065599344583920928985188488533311881202528894182053880415621488280876401150191961474589923356376146456592619669462859281190965749024420664637455818648545745030269593390316639260811403394610404759688632573916754271685582926522678938892974475043221360555516845248432643113640807434458674577935765032643325568519227175900369858636214019202303533964419422257850e-02), SC_(9.97050438834772040838901364158313289434451716031250064153596345308272018821197676129084180229236664005399614878677876975471250325523150960303590418697802419593875967006452331656192889917521490087559820130552413382203751563210591862975073872269071197791671987098499838808586255207819747398217977453730543524500812800441363575651210847109655415586570890200280733024493168949243199540216485504542435209304533986390812843525686313059881265579087409955174014924808295795997240217218146624971087121410183716e-01) },
{ SC_(8.09251666069030761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-02), SC_(8.08368672891704041856401399565977462633145541207784105195635281766371350041715608644123439493672541993789745715282339750465069529433973679063356554636481676969838531641729712415794020457592886899793165051838868222012601738089693486666663383926935917522627219438621364751646584726391558914371888319525238524046669167174017862265555593626706190460862728323563184295785235714399851325267663766041999660466314577095673142555868764898118503537742829338293948772872287161730013924554420829079124806859650838e-02), SC_(9.96727345309073504356335470880926838901535446591427240450997135536600995694562006339829380366181693066021072124078607773475760189943037842585673090508596377006890419990768006320611612165829317461737791908612725831462207730332953868156044465579321433828199753603772645372217436238602125419724170481393494192174338226617942337887718845813995926557696166708043078610521363485223670975974379541202944258805434600100105554638957533334813937130562560651036711336483875166644356875980418013651512472303074208e-01) },
{ SC_(1.01393043994903564453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.01219403908943933199608683876827266822331896657015119348435515995873251362892581898523969110413473057175484874945707988194700827394492484991666081694502360714551805379172398977994444953795788193400170674845605172617176911610981540681123148867173832535769953275410424339906182339005138130601396483778642126418902955006537169862336104812922619101165500080507365921158621143838037659291114217732698524358330821295373816025579728381376436689358518738815604135961883722908286779990249376227775979659081520e-01), SC_(9.94864127543212840320288377821634845647085414624812202931183041261168843158195990345771004501686363057363117868426992237675460528773854521201920483305361363360248147058939179651726098593741851629897985101915713322985077003831521906997798395547116734574812939319828244003602124162864904183647670159780723265956499501655186584470976880921550426566136335393136640881134844219644797108944868300338025473599742848702293332135126250466031987636207455199516403656090507615110967455528204674521869347233184283e-01) },
{ SC_(1.13781422376632690429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.13536074842449533573056314560680541888587073396780471734416954452266370815229214023167805970244196892487614906848712576035545051060440640696937578458753351149286198659859230491031913382949861842131574007393962925506301352740569195139817573460190730933124402796432541139111274714968331991159010328143533636587905459810458085734253711085152213069238726912858320015971192029698392132381284060402446909062105834221574702578371713280266538027801135387833807187710401803421253961741020954081638053867325880e-01), SC_(9.93533874464967449063569644542184589167411915145555830925800925048382916374957718228156373711609029097586917146755989532376282173266030804470640098835579196241275798250895989878704696330453367858309552789068201155211873250074943597130122033727796915843325644852705268264420421834017375881556371386266487723607694010828247880528072888290694751350895959530491979302529696561595066224369723425657904124135240815273639834011392138971431371570459667652548016159381399021194622625664031635527048346353172978e-01) },
{ SC_(1.45697653293609619140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.45182726545119910896301503065513554089811635181347002919360968238106525239849127106083723447884661619491476318996100888058149769236740617553657423543246126224805640578506008942954719919879771041763841262575849284095401812024452055715104953842593111698915775744793562621776046814833194051220589433393977077573901754840253776854446283075046240949980380729523982026872467677407277506741271915544833128497503377061431926327294908631808827940530456038838245220782204713528747800140098835534702697426926175e-01), SC_(9.89404859454877012674104360255215697445250382526116686234430435111636180480363210039694164084560087713657579140601666008513347848135681345012895495404482313374018887800206381904740118067209223511554356762905416336552796599320637752873442358116522801991236920325855007630644300246736916456519031036406469453087853685796047621522776532546594623313211992046640425909727951781150478344661351442954782469918430949839815203310019596602225454055470344982907764565783793045739939149621215477845195650414185624e-01) },
{ SC_(1.46310567855834960937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.45789119883467940942452666599838103341359960449718828761719210957523413508589636439490441998945000690046439423719795496860975068959608833118482126752973685992497281683536728240268587587996557081304567902946969692888006023433259944486597453738216622984795412987238720174132836036097378879575428714062852373236946181672074574586946077158989655378857849435203064073233248254743027223599966958610307889622372063348070359540031851175872778387328989367308344217063459104308008467995496716837575470375139856e-01), SC_(9.89315689011148661602733208421699488607704021068618550402008672427204988986372856602489837286757458629350642286967590178573609349566514100296374300421069016400647354574847125419309106253968630534855968665549713372062563646883184246277672032915339186942154941352874559377354486407977863425325175458300408087571803444300804433696034967764795880754888144181773120850915128858590327910126025450201565492100046247582395277159945474527040466390117883445528272059409080559643218070128411416452778883832850860e-01) },
{ SC_(1.64792597293853759765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.64047741622927076939215271236654594127897011750093105907421204884321017294953058710221397042344470958585047103860977693513220373332344673343758494866765737962583701512149928490660206619098121564968746371244119245299480844406136712899775942646822323057929571303890179803170552756084664071910161392856844372737036778217074263519383318878308282686738767677049481400503597999505931480065837516222420967161921750298185638735643161192547265245244900149693758408851479162365892639074870266742575198789041130e-01), SC_(9.86452400508213756079085881807272936135605003947860908459482770413651759106178422243846316436626721487369742516524557342814943387245800871775776486342542756619267901007984402634148564481396767251299084570255625415724967480494452602327750220935561537677562719487800489429908078112186638391572916817894043484848106365987479384651955220754065637423636048081167989226482466763849124771027198972951029669062947310139511886934376746339774134623284767012226001205043028480105389214119654265467805704996894917e-01) },
{ SC_(1.68696761131286621093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.67897753381640777196490976482953588467508831683372714558795951689672127553712898036662970055721497467147460442678821010944786665039665291723031055582489572136347698523359833632507727947120936709230382289481829907710145607418756967621108259349346466686730159813704577895106354119168392929747217498250651261920149217884008242721599405476228265647737002662434987399937591531877704904771111015714073021213635766515555210055971877789318074905744443808130938693092802702033774758042610910893914411986093307e-01), SC_(9.85804414886339273471656447974713083827165382741323834224259676470752447152375593455603668369541005720264056620625978392433528478869903852378131490186154661428713627385705999552117875818397456421062795844691099250197140896284553382461330648118896559620824983015387112024605313724313404676635578899408594831199173075967069948429971307857666478428419348687818365697811430472301400125955439683148729027958378246677795263283167676059509815153284641866483046913274472527809361657130996884935738437688390849e-01) },
{ SC_(1.78496479988098144531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.77550142947830555217390492492207436163564856376397691603471700758805620505094698945847003802998214813652148033430104346445883849635826609851792442417372917393077225504169766027761171289816204119015355122870296588370885941402084021320650235068717288615664162092993878080601955739098755934530077051921941503847930336545118455807353704448177612457787143073152152474912906128361372592953146702018572591695826734837888565690378918416926761365428056068697441293452285112838098535915209651376327087033569747e-01), SC_(9.84111755208322331601783376284031457134510436574988472806865188081776835817350548686113681409314838853209555871734190921300414611852299784524298797341600773458233613284112776255935237880953315784741791795731746499567321404790697016686075710158398361815849761549871491374222001546515259044955559094074496617496483018774261036037936237441724292540322806453448653765063482075390934100259487001653040960036047517057244093701162162170265301510994152643519555751491036603128207767303628421845067766132528336e-01) },
{ SC_(1.87774121761322021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.86672607070509018200769158467157136756113545054809133514599006798341838147428337915964255447040875993446601094948338007788867131495492683573549252266794504395930828257199806193163317944026329930030276018177467799947302689747186012618665496659752413411604967342391934340345214204527433151759729624702175254292451837535550647514340490554770316288949909792125071156560813410066946473274599946447062966296654108025847480349640941090560137303957768362702065204305022159912119527935408421499721086175643635e-01), SC_(9.82422178989002337815610061337143809470232196191426172141227152440284416089850158360549098995569868789283179124826053849882848723627305374894506652402723568360198439729964565008020548646418669353974087094974102981683934246429517284904279436821871136249465341395739281782779316039327149652772606504080824861909307024955484203942865858838215635646193223373227875069545714813048165491415661891289071426040111977674591777031031991473152177396063672370564663369651796710946807883420881870357844328037459019e-01) },
{ SC_(1.88844919204711914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.87724475007002131192192907909575574869468107940416726140262504902012686677137623390390440018094087947975695782954301767385993337096992265831822959983588134109865279453818899378809773125976208984682808324883167608808274828949288633727230553400197642565185759119997079741072491457720275500904428836491322659017614746144708698514497655273321270625201156908314994126688002285337649091106243420898018671107461537753842230681275281559140984628635324537359567946033168059091609203607550845641421309987051017e-01), SC_(9.82221727250698436817021350854404602400242591298039572591014001362833626919487015527681343503737629906656769473041944230032084140575629753880323082381394405508949229495961813072980287617641885223163912931175425781095733566247409734381851802008224421103956525409424631620202344202770947172844441311566015165775590081462279294150426616367490190370747077080364066702877391332809076163131938938563303607706965846945894566447961844220594229365249133061197350601224127232615735975265049548774049804588028913e-01) },
{ SC_(1.90480232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.89330463273083171501356047975738454519834711328775668799269418262542693675230211169484065483867752411796711944188561819164685584819239151595903268311841262796101414713826819050365386774822672846563612883606074822171787843588864652239834264812845660497544748008612180548384351041957557898905180261997435462673216754339482806193427627037707093816679505008419641782078097220844921334245843967537368455528797062366592333764784686568744055047958612982535677498760226067950696358916937565635392744576096899e-01), SC_(9.81913425754429586682013889768017532600113847811291666387725000947456131091217295251884688576304598996117091444449076993919438338637549621415126694566727540442457041137575867954992620512786069817600004167654500318167894032291062929699694909648414253182150669496148723694315542902771679739586190635289986724110105904070094436041592234600515389991658872221604551947008209955001901499595025153606756488036807775907625811360112539768038550121486610887551305042579936830908885733477436299200628358975660870e-01) },
{ SC_(1.94859266281127929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(1.93628466557083175937744864244790830668053598910620087560855663628326397918747917496701804712300389916375529322287795071844972897988282823779113733963560377794242008202198109920596762933935555585424489154825370240638238205749913867006539156012553835311920193678258151553765976847035445513869442729110946964494746309715218534610352446566786039322618340026036341364523438132919833221181717413668583176811261681042404934548226514142822649044118616453915688888690801607706237459440680955231700292236811361e-01), SC_(9.81074929319240387502184662874193366494892376995268422080911994896932188938843218100678702648454595788195800459189480677724548072115284301366906218387046613476243458332542611925311671611202355995756808329738252593319348185404315688233584739120945457255900313939696248899018740177998528759646883140416866189013968416544572880129678451134992718322404596854003353515915190671579319691512530656126775340885106148417889476553076706646054806482802741567572180944742654675167468422482141054087377709351667607e-01) },
{ SC_(2.03215479850769042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.01819682646920095923757718257761476769301989665491185429289158205603248364522455384939136294409419950738281505041126361431633176654744047644395695093833382944676718163092824428861071634027022690056323106012491255936447757470753147279575163352864381221318443333004723142721489343022119668959646121865064655890154871570932168528973909882911830449156165155241550354768340210585682803959840545783404416670702497182916990422425025622036736615873006366902267886516071073081904058012469598959221005905865613e-01), SC_(9.79422695109877704279630115016162779341438729197653622653511871860857427665621496308005256225301647590150890183023870213973551366446778827045639583831856224791984674969152761667061884727276778725391290362457018194029231238622882731367668907983050807609897703313170541946017503082428616641673224025500577727237921678771503953427745799384234510120079570656146847344758019012266371807613472779375992191550902090841424078371482339253787081150785495461758875501897023881237849778458350386303488036080606616e-01) },
{ SC_(2.07936644554138183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.06441432111765598898622696628034638008185695872547628186034653306091137842792921910271809676733557669103553974294053328911326243602782740588214297154717533970165522331160663449357525617459935928199881831844976092566068029955259730825952855266608700751730681501576772094736417834693837749663027914778438343298984135440812456259434671197055417724040905908168521650742559047974895842842429141632802570279876313914803674312694054572490044105458254539298356949176720439807787731898038453066126598813031210e-01), SC_(9.78458959337407914880017857366240707691566796770579819059463425270298886098360523692900979968885125117268896174792597043925346271994102038730825752617956702096517615173232766171688879761539440408643776852196199211523030996935750277368506862219703970756235309064425023141236695239770048877371573690168695503939188151919945120866996252845385595169432390250574335809999951819900409720087947226987798251572790175287245792567131272039006656437435690023152451503423135850418689659516050248598574324279754693e-01) },
{ SC_(2.12829470634460449218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.11226371452014391278874870071073310255372702463777968786843878133124112097140473459644588680440461706449482294123265808698739331752009084647828193442025974033968649542432348123746207023993629961625392580147265129400199313735837841793972839204732752322634442996742998985161049855446603805134233954899877102074734231966641527718799921704505666685238290172987528235112149856899544215597311460808399136987719564373629445617240952996587119331927421670252293311525292408359167374526921754803210077087692532e-01), SC_(9.77437169337863700915956028138184587880119521309718402773143822868653160875229416631075342793838257456807094385135358010247340775654046653152968486378214625824585383995774198214703672411773216530432708000905914410924076763688720643025445894500247986983994857940703526076436401941590579776244250215552581924626810062975652107309232328773982583693249830181955081354965661172527831758216391460026530511489630646442106088711356971367646510599128382728363593410702655779358342814182142737020940630712872361e-01) },
{ SC_(2.15869307518005371093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.14196640505365112786980685694428344657244963366876302714289501728318645735513153812127852740864750088035328907097365685728621293352830777003662293698178407244178434333281299242679553774479025546337174728441787336469271585023342163534779593199490313523522509388806059835583629329411911994168179200754968369466465053277189853243691400027013334899114643882547886884557705155995062509092370819402521209651344335312028605152197178040025081548811752240491682214361328002239129021416396548559625427548307079e-01), SC_(9.76790560558513680337105210359946000639131660265038803465419549929502333210272302004423538883524995851695890751897479645727458798428416719156047191385293536035128459622583740134790612138039228883962636358032372726838818091247096202590945439186853892215507835182481988301876992478308045540062442385616914635141454198946321492170688154415464432037046812112157612157921692137918708124553009612313024458692547550071702227895302886545623596270022503303566442880581687999337288455147084218206433678719726348e-01) },
{ SC_(2.23670959472656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.21810624597241132842120335214517834339392143595694143128274453434000897522756707261372395934316603499717542829693748282161138714986831310993664331890086521601864106048610503690287656926479843414514538641298186870853247769165125831749677090898816822399854510209571926905148166670105459035975836926248520839912108203719166947500998176906261366299289408429302405966781907431722890616467807693626704698773283853361405226169691717078175076647095721409493977986059074455050738153382636134995510720710671481e-01), SC_(9.75089763465795884741527131038743144799709001486249188041326805783918794629379695544082151093155092077802612594232019135110813148686802535895584065956564082709443629066755383612577269625034627767644996066171592038545406563485710108199711112941937879356362448421804832671387840559048718713150354052800343295008040554106973215286388458315674666252648980563396332758055989177687609577120292484105909678934546857037299176307632935036447727717180599996592072426254255769122423991437040773975082976170615027e-01) },
{ SC_(2.23940968513488769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.22073899560262365694286717947505519111283644170664206771039359926910630331073658742969412774825969687561966895608228668933631484783875397376737627105822734327244074926245206170293122854697640440913645377376408795641981619695565686182046225697863421164239415487132576368407789678491873903413263920057530744320682668616303876581465600307577735903297039997271274233170932990376623624909612289532920770987498809066596075937444420611813712211792472789626062389304386432536592499629126767217589494642390982e-01), SC_(9.75029837048127723940822139588475843177309010241646824834890251549637760943126873479985410594784222688808386101184513250743227375486680081269879083496987587993892050541293998127521838902835032687085618894862339570796558908797414825586693093266928416593647501074052462459315194898583715110932923738805350182790175717405384839937757189467422189694843791570712808954321923019264560496148035150316447485360041658090233265738607692675797783748168822650033028609970920677845305526624179703136420672529771980e-01) },
{ SC_(2.31657624244689941406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.29591182609749077127085238730170106706857736813427802366752664527336057726814890516348780149683921473939966330426614880926920513363391834821219987707185070310628905127220506682979261182544755412644963119149140529134513151273713405482176072789374585351910363421231659904446435482736921672058606578269611158940183557290963996010971436645314363561578915471036636427166369046120643121839806076708837377175313829976908135486291158992783623234671513494993196428199914265882626510236826919461730552972391764e-01), SC_(9.73287156428079478716002235261840740084659684284952238317074702351111144046965256073574026272435872923902375480127932863055570218099850498058845991144115236244780808787578236004823706045777816872726031536853820091469953621293211418659119493664242846692836341723477399946935585891718727826727210269898806213165073098754356297556028189303673469342497995341189516686033293401960600894424313593735029754214488412768090121108833953441556711975775178389200877887553119192408194268363451687882704343063502236e-01) },
{ SC_(2.36419618129730224609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.34223349413056397535012002649904436414830305844190028305435023159273725915625176126070536513473503773761443813896860179566226215030054698884364739340175429059896502302795731430829268126913758185127914230290081466116918621292797533041072984612393204017063572807293439427376418097279461665464082135412905032217137478665683141093696829006176517072236564399362165513731516388562375669839784466484294380256956425812467551879325915966779927314593002321921021618774333412509953834406188378943630420645257043e-01), SC_(9.72182813358541786002433931175590541460042986543364086630592342885383343147001536864805980731828619596937794265961718654901510514211526139141566031421543677149169475559185660751374091780739745412205256535077926002018568915189369879576144325949910721880001449576228384354311343808510925877039105192748773741470732514283534463934140640280674768143828127412493203855945797591134707019619827976778153234830092252653180994683559102578078078112922678991500372142077874616293332485901302909710329044805275133e-01) },
{ SC_(2.37086355686187744140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.34871488097739499325182931413505351694220593578761046285919402900396314038981468317698513784728753707678904087823880679901353228605506493220315256494105744645692747607812240920726257071852161205469905087486866758169738695197038438740564489385546672183892154520431462186791739263484418481646858664838898624946550338296059888986041536124862767319780937491163906732148464236988371556330822489239660766950561247285175680759472814930515821542521752960722919969604212826825858521092183886310338748881065702e-01), SC_(9.72026431779894251196781770060370781942232099197921106135120661810632188271447767998922653780711101087245102808499149689925215265153567962454784863549632555036609694179109787570991771070663299652723230727682947164732542496676768999691153749799756038153217247976912922241000804288378011338863184388596886818250778639888527560620930279032479989201300352288270935683655631157863204440552655928070032781156882878658304467502917435388924019356549251639438049985256013104098155541508692246870574344519742925e-01) },
{ SC_(2.43917584419250488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.41506091145277088258055644639441358569817962482007100168326311125875063836098620622959651436734701882471449140478713900715909279878500129381183514118262024999806448408272050800309873272930533810785473686208836539208518972638810893445205260384153052201544122370711332024875386229654633135116430009940820660271175620311240007363471390893208722112919297060548435968682520385755428340093566044201493651538792843899162713805017257089805610227242722362452752755712664407437715881745250028492688314820749267e-01), SC_(9.70399303348744740629281777996064222428263418261615513535874548301569309382617106182778792029170310698906217117798672892846704087363302115493606289878448928850470701791100588123422811681772912832747047311027507693577117550759576184158586663998125715627678041983984746242143715742993728038685477261982457848406983044715860265386172457355491196156817728778006847646901469415351803533371713662907224869572879545133363858740762107694657156648981963196682114252505711326234507610327782656200028589799542508e-01) },
{ SC_(2.56780028343200683593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.53967476197974948300470152348630856437778853649046907694498691134499701923143127504469744324018390842560373525607438987081112551226067812998235100935619020567790557343921036803399849329868217689750950833215794053798842332077966448743655775706289028308203291243933883217329742193753836170798816464800183920334186820141625424226651537454752528987557134635465607564214599658805078608562467124353038044016403220286947830566599498009540891072458280195284478680372582276803344509618865939427433243186835188e-01), SC_(9.67212758928267564909913781023042850649210074113110150779555204117688346768013381733678013082194846590955208239649965969631661476988930023126634900965028238708450802408191612909963009729559467638514828430744779946263855525266081909443245556093474249189026431060834809707402911975224217225893793806041927048869332697822498929087665975883008669509854597503249122523872773752290855879726093009296214739100119212703964980457607123946633959558534528977914687915954938045274688207897907901409739771736928444e-01) },
{ SC_(2.60797739028930664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.57851397011684381653215493513429137796568027542563688065682683181925805410498887334830107315497716941069126625883444139803709878524172956770808697806028611481752384474693564304778209137714825262189628252311617579879431939465205565896109133223548776955538905705145912571038082487099819804976109268792901846106723571853632186612320550153956924085148492263001817363502564890939924812502952221465569860263998509729178129210248318839719688265189638258894020460309734694369100144115339691339084345644936187e-01), SC_(9.66184587467178925054039264094455111955839447116830926670726695111056480734643576588829589093151750938173095092013885475613504226596420519468505671990665350017874837095070411073494200828261854901406233203038856164661310773504995966871525893796073964171780940959271419513681242667294030646037129134794487249645323271597514346135643239350470405850128978217907312787357546601749225176561132483998559247022954834588628902720040609501476406971711684162585915398239747400812327533943923544201497396858592127e-01) },
{ SC_(2.80308842658996582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.76652450296482007185109133379664986610558754140681586207688902695753779035115936420467935545647816866342460857251769261384109822160070822065813412470021999090276003650217199311308412474031531959235881402933414328774518297808848844446010593758203002690435296417019422446348869688663492867691085846932064019691350818883217102844458071500953410615967446227001405852516815294644032584384232982816378360038056258865349197065218045342401352567566701966410085468889024864179205506936222190409656968011900042e-01), SC_(9.60970042064242787586616146107116426197837340865418091095527345944895322898303059643272818932380762260288437483034417861243469274929582394086567541874872298007787708205027386061888638647875009556202948648007162736259944552779661019144892638210622883831588324760346381909877348578780965122436104866880945115333116909739647331839907523858068914185740875256136194033491002352245919072705583433053970894735852186581105174794397321295820740029624593397555262163670489560045281417159094407435052568544583826e-01) },
{ SC_(2.82572865486145019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.78827397517083501471330268973793982020956043056485002311128625203480909125454608266708548153980451085052473210601286247173130026031229525696322745955073475919151565202896009717230846962853493839247625955407998823036775750704244213916449208714368364119934116691972792082838205032077422066968600200507619855517581347340368705484048290481249715689825146802325327892978911844770343056488391346810580610465544218157636626264496716159139173077724718154881144994010887526795536631047147615072038166218903597e-01), SC_(9.60341232267911267381183747437916412664206145164440808035842262775205190353599826199664529625608027776265256698881777090330134881882621301243080560629047040706379584629760415449833531862131285447677178430450969795503445162404785990634547384830535281646944622238215968178098765324782398030728384865653375265992828298473324897027995908029167111445460569023719561109308443466971207024803868610011124698023157985663134329675540970828039088533857954500329172829898440732546662708726879160639308567661975472e-01) },
{ SC_(2.94892787933349609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(2.90637267717841491949561104535364579480516629619465233961662088429726507862432828707755088894634084811614033440036389382302935785798227412292625877543660982096842193549591017682122950990682866966335040743620085528472443575918955519317567547115188821596525197289422532447233271171624471539630699450236545660114361779939258247443407627749697559018581819196742844858102033694745403183397812269091094587500437089812851864223611210570999251990567044704396204865960223230481030875348590845729075010947570529e-01), SC_(9.56833307642197273737587591887788902883665572636978591492719689000054294005116111584930889939634837715671167147624840625565369350659889484795889431524480465624414463011497751732807591607039510326250228891745651691444695736686228212611256519708123525260472804829095732402311433573156680016224942389308080982389958686607782516409251583788265789714265801240259587125208043655617146669163064294419760829759381222936837853395161186480505868322168426789639562818842156041662627171754918917363217994882867932e-01) },
{ SC_(3.12102079391479492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.07059841753405999831874709749253165600072848512992844635835215773540826519074442226231634868055680476383181767927905664549163235763421873187566026682056186067295416245364237011824046633465852367385333102571562124547765118946951955979688673963059577571404554960876833646916051947025162143308838685134878667283759479195753638922242852116176090313158946224342073520204197762440935994303058357749693323128948419047343584057635944717911926030922197584857079144392533616441138045686008248146167555714269123e-01), SC_(9.51690208829729037576840431988604462673713730884139839166679534444816195557573539853339641864393360660504275727368557568823262838299991557009265270390565138215230359107809334255713836733104929918340210504480125985259471413876980637442771471105254330498206205878359629897338212290265053486914375204242144872790154864198319326981914100262103960665203670552921064019141135434898985176613523157296876279526400987298715110843171312881802185002847789634535539274790806820388986630862009819666177780928476240e-01) },
{ SC_(3.15313577651977539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.10114604486452371602244148218816881223891635019324529166287448596151639111642932716934998031321887758081822105206398127173805917178421889838267708823608322091462547482629887325714398579152373118391661733631956935670424908070096598288890186299966082187457854379359428008012221981487666435201267688526933831111640545952633383495730237567915622726814523104107288235805511234197870540243163367745558344313156824938835437324606528773827062481267605862954451462115351447898439272364530965442052891672758788e-01), SC_(9.50699180647701628487396566148787086923240127099513645066330648238578006503678248562865690654153023205128969226084861843000896121071452674247004201594177477295365880682146363659658132961000098514414933707666096881539616427931595066196727129449358218571438918172767600483899976768586022179968871687915301710377855566927304861652670623702239418492743070118830570825034432808087497781397107161393707647233534139257467088129639462402890402094063987132136815195270053434040240225055479367979728606616266096e-01) },
{ SC_(3.17886471748352050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.12559623651764165322212807870515013629324029147733283136368157446606778188930564445609204886499961778113105740877974322135198114141812803765994002806460822966254911867494481580789265715208254959317709157241611034313201797819867973863308003889863252875768021308953698342014871650514004286660121299147145333979151295417317040523136489794647687655750518369731036588972462596472475088750359571516960658510285090228124769299218077291363452482650542774467825115316859673619565065980798986374309452485170930e-01), SC_(9.49898142783039421065638698949823517999068885390741197315225792223882369515799723390096969334365360799651944990990126008736260456275912352502979942152551441391703277100848388597129862238754948539625430194167651244865488557343514835741689946133613892883144839999896471282632969671310466844604095590514416359901407768042119424637583642405348701870119240322957130956609821641725423853445963795969550741785845954269196961410704228281960935161638393923018793106680802489022846850256426254909441722034633798e-01) },
{ SC_(3.25856685638427734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.20120507353269781855753495379878039066037854006666100431875056421838413804434799538536796131401377586084756848199762002155463765917890690463278250414769080484724898769887576443647712277040855636736860793283673505250629213435263243010952510656350940830571318488977600380399190797841811306256449264920800681050590486560731400712511724653545521079473607389857426102523810827917591200372568412968363871519210398075893782835325802414254408155013444580413932023311974315726620968068870995641605931014140420e-01), SC_(9.47376831451922908762838282957157442145992857786296235784212495393301704460104847354739924979541258506937517027115869803548217365292294994683305525441088520786504133711569381042592814747227046691642156766413306928961886122517550515083018577582754286916121647946117367658688563677805002026853118734799467123603953437571908546773590375255669559554195262563484850221119526769206964645745371200283122087981568125996313543979605856609804588391661451911736704107832279674007979966459328784100364931584175637e-01) },
{ SC_(3.31551074981689453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.25510020620429986937042364685995969898965460442426061833759213271618775572332502534089976614218129638667760054701539234024827232341487900744015042229086883340942475886670748218967768455382802470563754576394285926348980977435867907849404743916110773490924826531389495227209664054616287863263783122017536567084703743906774484377495915058868396046672143731061243453772643054096975342187985727367782927328631174431309715560975124132906098483254874892901622307738985680021770864791926680949697814898232436e-01), SC_(9.45538590685587641765146475422348939326429323171424621391898923841241370861109699620118035342769801759409482544912117998047100210926071569675065306266069361724656534365587037037868110606988888827981568032856808887256355100408672863943230307292336810456098125754092279702826073831888005340499510809313153503087612891627341062875052751636176617417058464678078249954552097871951771955835877730404553836456812938118844431736505209097446001441186653820938292010753906907384093172264239077979415805009120406e-01) },
{ SC_(3.34280610084533691406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.28089685607080709228217073013829244980086878681949079724399520487633027638394190434541814538400934905081532180164816420388055285420665732864262317815475564039316355408118701761716444027112107825164951281390900576158191601679471853089452996750018086395127843764080783337257824990676149886920563849748965785244823891473305743274155685943018629644086807243531846369123999673290765390381103557636778684428308305943242684044162534423213607060046023289485555906833555493391103695531498716169793021646257608e-01), SC_(9.44646578461091414178776104696863057321576035366318900946928701896304565272753568134499944857053310401296727371998536245581622116253817033069387105765921559789265574277799055105587127575674744417653448482768341621979927800216571038767329703960510700455029704060654386415669464439544055800082527669571331791333036873476255791772619645842425077726695598719804374966376814363540378984520539528376950546852227736557661595457652530058530010384807128844351046874339155347485472200170675059489215428103783219e-01) },
{ SC_(3.35717916488647460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.29447092824512814936909857333978391523033617107845224299960052310075505573523247423806894791454173014988340319577201412086373605467361183369713001711732687942338004705092653189077698811297143742952310132467187968195376507525259359760053099658177296477700127870263226898313059209834688876407522087440889041166353266203804392232463726842268818252672072718758696114963418808736803405270840450891988650029268928068267593406313414900302848492608154325818062755380535403696499569100684167144016534622448204e-01), SC_(9.44174037468451489365267088035088591308914231862690972249200442949837785950407535409027599648599285502776226478256147933109443887177193380043180048082903797204441059665700123928027068350881895026828260257751054653259489839515100869333027571748111448461762198635703731207762633225551171516871297042884419072089644553053235367393558819799679458992088965895165907796551275946174973771996164630689803536114225907566862466732519042785081005181299097377872608409782965170572073375788770099631685964443078209e-01) },
{ SC_(3.45234036445617675781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.38416913937733709520966757813075385353964521900390094265192777781629180976759543154906543836722578297225206900391344879893757491801180228412619362904008080592164773731715770901812124465081132683256968992983463490691796826575296603858671986156353981116073706044250214430461363924565609842848686311030235843992906274408601427805012593167720487267919576241994420803073155263941036332062580595356544207542092603981843801789150431453028466293952942033458196009466273835759200514863565639305138731359336054e-01), SC_(9.40996276486182773958200681776617930878019625164650782459989674721685786733581681932601940668534891638624819666126614999639608538389019139033792924807887873658144072477439537153459888339322514858220157931802931480799204440924867456798681215615902875232401509200568538258491816834661886375031648651053695695008518747665629066305896997139102057691144830863318193139443798505854893484971824361515308653303166230586156475304484860728890612192233269198727803441963654040189339709235023467037077230210136452e-01) },
{ SC_(3.65287423133850097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.57217768507894662568204947843255675807937935600700729302012587696524783357810607397048811065814498967938226837184635262008597624722131769201971396723630579715381213329596400181363335657577351531699109052437321287680445033826034637398775827065362847680483693681794005685257771393744322277497734213843627872895529910124192773346772853342732564856818563872653596038077001555882493740980096900501269614510507341673697089464726073205061497129282810973902529861673474624188173849172105673056093274773828338e-01), SC_(9.34021127096298705697968078480829135151809558383637730911362229182562918575674304188846684078772850195185983871489264274885680433213531999184880930953027049908681630726745658816468630368765358193438388444550380824018487174292352049577694523697545985202828138906216082567906790013271192556165028307746636921068023709736571214708295379075646659675734920359518901568485358630990354123359427090885536764271109786114632830747506518916681775364286220930917538283026948726952104248202947677212055723332125159e-01) },
{ SC_(3.76625776290893554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.67784841593578700750674588555290009506833785198348319721510313441501546058321463219147968315752577898440423256713691448443581574192691647704995440505255700751654076648229558941889912601977821037648184590226948590561121481406700523514552066740175676313066736046455083685677333444270219582696300014573394994875787124404609023528711412221065511192883282687720036086778754443433513428817391919934679127030005160315851412786694335867458231606781752083185163741537531916116786797423415811680704425913470479e-01), SC_(9.29910915246178956526127762996390085290835200613356307328386220167870557042453483854688920463534735704848107614579700250713670021607230520617663103835363172580954471811001208312362172610537525644872697074572921104882182234857955896468720884006442649267334904910635015379373768510723551974327520256221002373202064028482209593021722744220780901469462072704535345501354165333323228964404508546659907713114416707717373662856960688517308985925955799243302609395864738074576882921050328851524967663617819963e-01) },
{ SC_(3.81423234939575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.72241801255514780141645255986938706876112807774978209509387148729169318290725606760700653681913332402962543956038634844559249660919958569216458990534120382717908857425855493941999728044814288058920926074711487206514766810508241197785036696492456712063744278868653038662478625419883184188761197478075666687066372036201467246772272514710952851151273578267666562536774184425760572090907481461965187195084739783731922123489291901533461093513997345050166140627717868911685869010459883198045391385926459228e-01), SC_(9.28135788232546194521132038364809995469390110444963627733003823836878564741627652253894760903734146992929661240763368047921077487071511504258052886480661022417869838293793674031109329225882528098987875042539736745335504700923216449394354443076336899632696517389138146947845556614246814361499391989253510866187677919616513098995303183374067848140596880185394397200828384737411722734422037179383107166780417945465829318245357854600550219827881612091297993125943808294920703332405152597090926176383075193e-01) },
{ SC_(3.82642626762390136718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.73373285419486584743972658295685803190680477862822134739166666187839123230941197490101744569617457178315335266166130750832991878909867576156780303116056310420466140082721299101200920702587341679821454021314334846514284242173605432831549954909671972671604204676424139437229520093260765713230589032508436314799966796028238874135487653755383689513250270278030424284694964092242438945526030368678720080221231287652171512279965394603632848669343837316862349798845015377578075793534194003618831109022953953e-01), SC_(9.27681189706387550241935391516788441140986263214363275884321094395171137913622380067740793234692019438631673928581985674669506916341156375623168665333737228363700115091027793798720619125927596016451913658533598902824347300282112219023964174055808582619361609375580562926630694475951148344747973622432995121921328491332370352018238045259859104891643718529474561294212242144058064169023705465099799598255743376952428127753351863671878368910927582778614322123906693275823239648107835571442216049845322932e-01) },
{ SC_(3.86262297630310058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(3.76728732695111995209787047749548789524801202873801147414647946480127764915716334061985047622063956465372047461169513840471796315532115359173336743873445306005316281253589057706496674703637936040009863228061656133466646243287601606843215898479726999791238624900548309438738434809614670759249615353685532441359840957459574816765343647633245421595235656600614508712872485696566736853933569217131361140361224346898137318046381744922966597856864444242287465346902114484239349231535780595166779044827033795e-01), SC_(9.26323627012684403552362441816766844353860232235455582510490392971499945546238943437785773235217661433283894687038938985447511929341894290408129096863458949295692036268832967955731447440343561805616333244588222790288419597665737236923593354868829890705441309176814435749719667609906194049295915307431333453326042332981889559360874887602964847967422924588792838807113367272643542930126342757662817756798637736653902160534644351581798443570915292325167093110317648605200947026727695940938373926472433313e-01) },
{ SC_(4.14037585258483886718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.02309022358804334757455041997461333566140505078691743879158537946197564687528817873499495932056914664975872822876541937159526309012964625414972273125477031300099908935396987856592915608056201697241267655473404418171750547283488188116580865118519309071287054397095416522184857129278271466239596660565476766442047439665102232580947339905130546605943299522702167491665865861076373670504643374092808500589913972673958794539143899968006744027676954924675483526113359150297838140830328866816034327650573685e-01), SC_(9.15503932557748805795905106327040154624309109701469277166353323330495047580465013025792659440882401238426239102234866148304120914512259428508256188143971352721134308110915372071940331370587398302755815933308805154767044792918730422938424084182623711157576329336501323833302695423872291003776628955935696475315999936581807634223263656320757954433352571965156768392318835020186996543923793469596505462054756265809715842422711159634535912628317197753269865492968844280778333139750719502353805594952751573e-01) },
{ SC_(4.15384411811828613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.03541682109578222980709967440528517225985048739181053234151269824226530297613648513864625533998909524118788668236538749776089110757004324146429534716651136448541877388486900985147623171694083216557078569832275804610942289353672351183249955641829618726108926348664457812212186737762600307260074435150664091951860119867223657528500247305269729397446717578634530181642697357377164502826308277017576726140565738798396384850379134564652651902037517959442379535178746452390200652275134723487656738588814040e-01), SC_(9.14961261912312938531757251963975606171056514942473409705633306647449354976379445925883627419334645798319079684226691906378008685660573351264008078882588903388240223429432390727582752229567332000937331874060395961329538558312773141574847698110453487234957120645662388905771842480604587202066148916563834063955601294103619888302125700623333672970104702059659671918785799250960251049309415162312990259195375210720989849071824171027512824769600511128542169208024958188843927510126581850114332992578859756e-01) },
{ SC_(4.17747259140014648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.05702467375339262830292961509995901497692400867284402738762532834250477363835078085965934594517062125768598757766526851922833631754674647828222320869834909184759233249381727184636148778919865878136269359838089231384756518279665084042168764638527443222169694429102756136038221869866520348923978295435720362171281132579960723316488821997782812137875635001430867252792096344762654563157443481314180207819454673446288993477360064344949498458150462068431701395898113402567554058677908621209917529511274949e-01), SC_(9.14005201279271594646377346252649494298094855187886202187175311561295118776486501235354805261697066551835374680825865131418933539899994837700018314030655871117929178075445220795873239047434025597938694394502337464256413558388215077611141956094182176309111001038031202569691323194114312105868329503689334322876507456971856138524924216804206474505999929378281865606690640041390901257392444895055519693226371911181192458524126880247545501940273866502248870119369368065587202123602049180417713932024067610e-01) },
{ SC_(4.28758502006530761718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.15742002299706000420350747592552687972223045741113120302870426713056348785134333968622790831264865107728759354826226457922147645004178978906890466302133894988997910046095558992072339508109922275893059300684403843403469208547491053713557851579495826754053336803498111074934352037413097450601064007516266973130955034354985639275464069104775602331875698543320889524438624926558219777388682431329523910340231167389669640360911599413959164117296479251134912579386628245181559149830695067791965265989825212e-01), SC_(9.09482593304473997538693396104501021330804905259321616290965777176758565932026915430359578499551755453855018104008343574872469655100484191283971052910960684234579468489756593689367139584789587966575411667359624750619523168195322985712252979133849950930553365725100676073949846542207245503600835471380015446062680593988976586976478740651122179506841813035927991211507985430856749772714779898018916484970646645074598872686609284387685242249795194138385627188402736027247052002783295346662465818309068700e-01) },
{ SC_(4.45544123649597167968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.30948948363146300723121092898082664509638352166588140034727822877235815161424352108919540042044112538762724321500621101449739714554194593913009804814082214319683236683235378672131292239439017243450275920171408813452754685876072458057289815611669924772864816375713651966864094479591019632462077369132936038735863542405984367874267619758481899414566965131924850013983459072412954571431179625787390548119791714022129981306939522139524756766141242804301974521747526987847195165237002774828120929063067044e-01), SC_(9.02376309476649693441524341643113425775341759303426903412911273366445409015974195367557714002958404562092936423592261308595113855232080165919809274780820143580092975184546098062572003695941781094812237267584142325544572854177059090387904225847548546592604087162701961190008072455837295803252923772102729014511396836934627011018807054959294568326023254994571985005643935955842579796563403396030474028550374274698865457770359922325670148823411893173811002205405063320700662280071632096466284915759116824e-01) },
{ SC_(4.49747562408447265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.34738213556773642926680214435395136165212079597736426483577114464574954760942735244406621691382502626047930455107796986703456539799434205636585457310894775674965419564259809763663316804513179985632601467299117182000653051524824513608156808552962216189357948272785772516989094473515847766720617268987918246630121096935720033107216651369640459371086215249538380063034041248614589579006572327908496498138487884900261661990149804231843631572049720496487316635858861663215229112020031694962813171109404925e-01), SC_(9.00556875312972708386219971645514750726407028236990166826545850690241517101112402708386772819738278247821223039253372151806624483240868170703439164500972016802825899173423975206096499267656188494467490343061966750639625116172486836412318757879291167804312026689814805881985161435878128369258978791474612039898718575491126104848948833513149233754819803905446108254996077234113802957319405644663301288887608570332657255734673102012379728597740044611750650505636559769166038774171113885058050685760522703e-01) },
{ SC_(4.52869653701782226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.37547710974994897584705187753064697109279998870352465729791285811775949783450984369414186976030231997903936542730772259184602150876951845237393810162537878680147493102334921792973422725128642580343784196916482216571759314951546223891751601357730521264862292717459596414748032496113998107987677978514908760965351653539082846202141162068066229715005699057270713171635519654203034142538854077714450937335807216193587516840434812114463380335247298814001603054089595274484793803913196348729067932487448869e-01), SC_(8.99195196061757399361053971564480269499531017554558188806333532790012165395566350778235469914291403214368025663247285422108383319133726403092839105467674583216419489996730319770017782834530964004420191763527478616501382056309331494135424274941738292844744198027230566152257675219107464838859525235403944781216731525975237957756110906785551166391061485422062979524846055589057024469448090864935182011774817757038151966849853878680226230008627334013666482561987510034815801678655762497740517344098508436e-01) },
{ SC_(4.62250471115112304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.45963521312847654864328865321710153834950250932578074080324986865345001347757477980380037307625324316996140869018244797349374314464797111971273640399940359453625448104401592160237931091521134609576373756124867133666878568292268216685175056070883653017465501384214652347965224862323686499134477315926437827890962697836714416129583317366024114625719308608134932258724707861838402087026685949036796896658072984061548484922337651296656540856877253462004253362254138979753923381025363013468060276015659293e-01), SC_(8.95051136895677751924617384872825864034823165128075186190186597441499402594610028026215446231506707482496405049193560314497720776949998204342602626498576594729080138214268311850150450912069884690009285781631057732878261831293268241590115039762894904299669089563069911684151632786373315966907384512964784420116764033039210775638548338742350110429036452439780448368390817796260243838052068698870453925512851854018094826029153391333450112576463179849305395825697902104526169507205246156780703291651512347e-01) },
{ SC_(4.74825620651245117187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.57183365940682599975989520970592586820486164181686091846497267559877931718112664415849754810563402264421555205308368211389019514311727090114799160111233458181110518886927325494153150458455801368383321159237832190181397017179788788565348034671792474074784951689636545848238112091715561617887192620879235113630727198916655136944495368600608371090443370159079467076296209058342329613809933283306711620704002298838140270847129213918736992399234035900728679054869995037571067012754502573122858410648385207e-01), SC_(8.89372458482467232515984882706268766316392175186312413450500984156418092064222973341734033663013416063605391090026250094816551319611263513570756366575940855133970988017874843537293831076015304335361026846863787886532344841888477575519000815281674674387373130886802697452616125647564031430432280728588072646726366057290517226076579554292387459886530913543780265990513411010099135364163024190628978406074455036483606737916437326240976630201256303072037744603889453782870568782425202552340165074002154219e-01) },
{ SC_(4.75649237632751464843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.57915713053557019712710571041157624420787445280707553767877608145773274376823349750814872550223275249292408134487143378104524868096954725883300351468974464179235940736798953299937073264153740357562860979284897004173565825491677916037847354653853155697330499983418051656375578206854603319061745926619692052275536816848374432279273225818616759602890929640567133790022595885478921907728424755506810023816964299739366390511572287460730643931920759167017258310322725947076324143381556431536551482912904556e-01), SC_(8.88995612890554386936750536483695852513476134588276854940621936209484798254166731221556577381797747107009996077607638797281282169756881823806605504914655485098662478733008167757208013537007605205995390767969085354280041451305854109862952210025061158261775701522354478989910552534967567504369494925409880197034305655329641794883644933639429106847302092581964216122603833735671572473609141321663618765145993837213168005923374608817688486956543652958560596935007260687185222881835947991213367235624530633e-01) },
{ SC_(4.98672366142272949218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.78260008103898513541770539979545252964823085593186147977805482371936090051789194883298976044663165847231099537581272151268640403450342975211569193068993143884689281956002319593954584670463486438521537593822985913643621122287101931914945599854160679995190456369532992685427878582889478807139605978076391142750636244370938945332122662246707951249901241678461593975209892588164366223696745448816630911122129541960760185263002196493023080164412082738356264476994025730867735243022611054082301179912362960e-01), SC_(8.78218289862183938423134673320051739785499965734206019255453944263680156104999722243484431478559982894433211165939525740927677802481620209787987469668196432753183348602917650360351196761705324639570894678343806174504972464616029398441977168964174542305616645585564890203491919072688843982057716214127237367286250524167686496351943954136209482432227787458499924910595283308987464828136067964950498523525151712485885751332694062133562868735135666502557385948862113323459244344865735722400659905954097980e-01) },
{ SC_(5.05683898925781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.84405858017577105986267760267483916585338576749856882759172895626687414023600023273330690992932111166705419294046737645663748536483800337813273369788242501381982115588238995601497093664158009612529499219498997691419631936695751958404275519240089912385757776444311694253366794224413925157246424719597851079869724407808712512352837701427411197808439056422135011271874004431323584925233546760901701318303123610840709380726059202286895071249175118205548698394421602866816959285749061736352965182903328770e-01), SC_(8.74843394395965551309879575006994293780170209819355112069780111612973176064466490116143405110208953320912424509429632141945615508727433835671823209591595840027117758435836418746698473625487160353463202211263804287657238763845717958427514637781076681465849283293563449319792496466343071382848353682561994442500049737084819031517295595081500622131788600851578430131514229865791059536905654539814085000247420280886316611742047606970990845403989012375369636742595073827358323462326594252382348796306577237e-01) },
{ SC_(5.10578632354736328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(4.88682163339641268740830993903499713333103251236996499716006988777878015736524923456957058032463916399381796036990599132100356276535658883546305343337696754464061676188567185777127466524069532800341427586153710719912664955598618474630711138614946373765273877760472582085430071576921952645961698653272413608503453153197806113172393198844347178330076429745969698136022573102889522545090495121172637471356210616480434202516259895560003549541729134784090264648450886179847814571572888679828103974661136166e-01), SC_(8.72461886407474060714407841408344103310566393107946054900278740601639720374550511441120502252902388979754468889400577378186176037091714805093039021955101337802634805647926475922612749821549415482888476878706213592331467661841014901258491776322643364592301082694865914465905995266182295642416483243655610737136004298484481805105164211720159011364859704660695558074043648664464886946042750820472298682202778339382014672269839699188939702066594156121240103071280379589772983226226437628463900506596443992e-01) },
{ SC_(5.24975538253784179687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.01191837189188332694214140970173583272072418982091171099990217528322355908701601074843574220620926568587427100106185208424141794463468318550749865198918222933452753894983168862879395093972863777587162854161341623838683267634514499273793634809539888243351153777357711863648802112720860674910650236088326557687244625352269331347752591187431084268052625047310691014416304761150712344502076944589767381122718623738029559779248541968413215734845216817629335238040083726559240958493572045375949676422640901e-01), SC_(8.65336201909365476282264952965879813708728978060751127967654913609217370202756737977950828334691199199976926417238532043794926355532947481142954461407252044813719568757784382743516894146761032400992386509481533113010581110801833850543938490300413179047145173264679839208757360189966101065499739619788796308134610685979722462447024950122740160145465326704016943161732826708923981690332630029591524534742203726563441280505345615124076805639821503843825847147963259968095571638786355692009671769162227729e-01) },
{ SC_(5.27489185333251953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.03365401345449383408860333424913780207988550100204590028868870029082008815431504758423586705415291104049317650359215675999850793031199068663273702222642153320423789127546017526321083163725048619710917303499008938706160379552195898338647888596408687619633428569339435377627846917599043895430679468876428984172711517157785079613456068832181981407178101377847554189494406405298668146314781890996229730542960457346820729615088234861697107177030173183731100838582070578677194620296888474892159954565273594e-01), SC_(8.64073650060187094044260451547211688700438767712561600570577794828378726394909204189762941771991578220730402396676955636744871614391751352329593543084586941879928932358923438955814670349084472219097888970353931097795949207204991643980011491931912057515838687636408011057380021854018301724623343646746214428802010107396186526576456932281434816548797579780532292096032569488952258398391121041148784934172900458255768654111061811230940022903378642763134546338073627936701731193377581008095280554682508859e-01) },
{ SC_(5.29143571853637695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.04794223638559654714052859357090717999622260784855409808634989078887486144940014927685708982597532834080469457507632961361574662347134140277434796217695714501665325492161428047990334644102887653883512211880498181056340765678114100867222775547658592234983367280978413240569780775952453371822485892673013027626427801396787248830744260539502204944014104375516044504428492436280713415468738598119114927622247476993647376152875728729101947432829638976206820212333445472631237675433182564095978329615664320e-01), SC_(8.63239707022993597136893322506765820034361346112663538463972414791073370154305164478378003111211836597802305631320518420581136473884404652772091008668276365589888289444996661499277415993805087615581532633652799512767943967396863329599519961592029296231874682822172954305207266939493791501493068017981697650940168348078699710912960970725464127937645010065872291814436415764998136905354545811245853507327765948785155015610075015341632933686909091119377821270677144528894661672118438512863633219124320223e-01) },
{ SC_(5.34517526626586914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.09425923396651827601926822928735155064088252856426082786526190845964204988316925419044872254542709621420571540784006603826411811003448639408384047769534128208911369114785800703498443321159790230667967132978923969686304217145245447891299325303801607122440580539861470662063751394859981212814864251307909808543755875881980444282277876104151040347175759486733148808186549450553664854348136500863053904875153607921232269445247407180353728071225524914373935912046274984168277951004602019741469779806341241e-01), SC_(8.60514513864506892008571077192207221249060554026029914290576312340240258880637028036909369321348861974704776026746365068619441047096898112000033846266863807610452759734582914614646277049293267980030326298443752183971203489738755455196461434851228175258681960086135023742465121275230985955002403734817537433921953870100053610664908725632388126059875337258857523149249629888488047691276578125376557074285503537637244758876151932277452200896536592707368519003989964434924497304420869045947916636586185059e-01) },
{ SC_(5.41940927505493164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.15799772553089175322429546804626528729984402971095986838191671437559838091400764456186303627799843763884537162041166087814106014538813389286133552707573620685136964249044596156941771605153568829089706663067154626220611610688573741181955647188194844164474728375527074823727245043102213030247601723739382886465900641274005163769190452602531242975852118536822257500909949021778880648088059230266333056383840262532179419129696109838728004168475695024970146221363032255275220888680046617773531409243514538e-01), SC_(8.56709165723223411014335237353370281255069331993132041369453793661319800459427331933541840549977376297771348346737288581359391451133900500291090244022962821184927791851021143294497495159928725343129789287753994061178720219940683024896165695812422117725701849685285221767838000418978261631909106043845565174640775546510270806417747477826212960857379830622034161031711153431645404985440073536073344356127003444050336984235043061917702296234719814367574435512053911951724834398066173178051050112431061131e-01) },
{ SC_(5.70668697357177734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.40194904999217521625501804690859171039067247880710746234208426075198607183471611383408202308291614394771378315161022120939361683341863245328239311080525400231914759172133604894627749585360351572238809861901598552562064229601453100001108907323135635709408318063048590299037584475217997696082682643246277303267205386540634807765892444596945715402510723540439660292036601740905303050564714747573350134003426478908063404417845734148975182487931433252466861406507785899684486691296993422451783426280298401e-01), SC_(8.41539936433730016393560004906422624915938938115325194490676417499454277363257513351717803741102759502698131899495817149812454909175331973883700436174253569027354446001310497645728117157402769598212946681008744824515769796806799794169428154993163962915010793856563617839979899789147308534322116774551895925642603030657985033808960856990336366381026392080924808370232298262132280338670172394908359719237017432710995566031980474531261480441546418187451593636619852940900815738161505085936768543613021562e-01) },
{ SC_(5.72337627410888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.41598623328850393437633038062021323062155738168341351833436028051969259019802500119843827650904770820919729374704351821359078594634887244323485747368770264507358749265565856367907429518697764687039946840362229092312343189528022703643914914433562134342001022778527431759309937446852858562197449128236170264433346711673981647198294649587638318617209546521551647034779793514294203444340604570797513762817006497651085453358051967836529579122058034836273502520814068448980054745761558457956910656478888369e-01), SC_(8.40637217358530962617166869970573153775954370007516064477940281451417234267504782461385855075871355157179288974185941910150256426691364101853486231269256472771425076245123147503280465557373884684173386719681462663766345749724735744081185615292127240794974750109376937292899249194855048353532646675177599991950894912833572228079283360178968590319455475444665383695538491207634412121327239846638502720531644839511030834497680853242745850920233520996468882127230891627624467473374628176256541247234848953e-01) },
{ SC_(5.80943822860717773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.48813165155509844192454069897378255222059800318848971214181522712559752371392694439688950488008279295033778330851407407538523566795739799654146239460178355402348023334155625459433534500603056681526233824629667872588475660174360717409290346777163781004021237411856260793132118482661903922892916677044810015653072554145111411250594554349346047088432220346892733029194947849380035748205871877674526988365095539652382297318895709019317770178368606577779278083479508492404153089849803687769215965281310732e-01), SC_(8.35945039911112263677095616391004433124413495567336752167508906438259743069245990282913973214554571969177304385557106963604907643376708364394277256629360667941308687198759712832908130207745510426514303099747739695715739450579154667857648740171678725754478281782329679391568802376848420455165726573253805090116019404447208067037349934527135867262568590898932612843028746601037322593214456836565075844042126797907841397369397266754100931894716926234857663254549747660361282112980225408873527817007427990e-01) },
{ SC_(5.82854509353637695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.50409391298168491596150482570353186473225165074869249579230018842157715680613771764649128192314700378992368535474742002485011421875906957385285657324300726277958078036298364933603213485725269218826700648644800418611737606433714230535321683504247685363594238155126069310747013818822879985570627906886508978408394982831547956257956536544590409045853086713179410800861138484380067373798502293727454801649155059590149624917718627938217373033323795237305120621762948047394416264859542618264254192433551073e-01), SC_(8.34894904745968397122337143288036538697236885805361244093975311074767740052020907304944995451086032530150791095893934644176994383991691599271559032684425891447484026866957350929544470806453316870804998160772266105931932446680136021999620883072198820874483568703347245846148122134149561292328463469229261516928882818387894901878049370770830895114699946795594153739461667478785018799954247645045229378473876480527746725169467194980012963031723208736422455186147677872207396000474362366949139854735598959e-01) },
{ SC_(5.88340520858764648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.54981328748038594389409222118296493361406722204316601039080045097561746367256420457135064548526427768164560764497538972461049133429788803032011714631332435608878919210217380233636379382769112156998945046969620193348706178392702708810399735183425378496361615421991110404840318568945206401436743158511187018101434033771663853525624649878863128943966755740362299129646209442115612058642089207004232090022736843462658328519333427718454217482740286302870932210190437836952038240934544486327443980179039611e-01), SC_(8.31862804037457555573106159931804242284656404384485071335994653733473005054884858296577229285204654906976630312250918448628259671755231029989458048999183555644405516193443670517849772686240891945946039525999988429248534398424025093271276531490728880513255793488192330389893779683789326076963100529203447817457355637888154612527551686629330928079288557304750909983330349509528372839396456227835571961111453638045659531283279746393377633392525795321762710545335320001100575629727024680780347585595575401e-01) },
{ SC_(5.88480710983276367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.55097942244132061495531571165679871262724499795417513173083413485055019772427361468552500656487265250806213156009035760042477803381019482502820928713219477595502474314187126251062789023921328177960662028807827415938348104614614375028942563055067804906294650682269671995277955728374031283398921302129002652523268955506602620674798387968196126816730022488639662515652349431661679239799288485652945302886443757790689209020541656411027584022229840977377299248051528161147723320595369228691342415811208773e-01), SC_(8.31784992961720983534359232391305188584063751853626211735857810341353297240324549055333935647771867957433112311280525051166735373970035761464744610858062803351708601490642216194702218471579830292132620536272778346971800827572537398578189594660242145927783320871528142664463408523731435595615813644112256518861511592562839704037855278536568685836654817502765844816585425626008475692953552493348690999667725721103065091643783290643380737951921116821247273152701349225223838419791660101143482872112798004e-01) },
{ SC_(5.92362165451049804687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.58322288253439051744557534267506286885060444861732597553964794301319966217038367928168951903535702321312327402000330303180259309249997384870049569392286402372655538202926605727312480426025714746316833966374166956030639926161547076571832803358539092894342194537261846646241645995470185118744157796984447771024032092880613250533078792521101538396462947988540549649727418090597597042369359700302976217046151525960360893745433255209441737159975029418199167071462611499945258530939279452145306487229413816e-01), SC_(8.29624145284745020516215455724407888077213673743160788252677680220684699002053633204757665277322687553558235918282689862240807444306321340921280927942735138774702365689856787083484164468516551522355741319231716986119476001913931681490030833762017164619862117967111307933862130716575515431340977126892141889221627007181268431489962360421173167336434798315226930647680073783873124528566080722281638117951478967706088693998991575443387902213162302286315711337900394259691186938803878903789406657834635069e-01) },
{ SC_(5.98107814788818359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.63079775669406341164390113803457426876218890714643705918420902570219293533895083351987901536166942345184372663706747350140651014744113421153546396462631796031006217208526759117477953688062277202759268233614725401418898666007993416469703642358102740447434080477006785791875740627440576182794001744019355766499403487919514669225812073408286318205970784355082471973998831868467854363704446997087804272211009212208588585247986200104642732141375695026387981342821975523123173641969953803066131974996648408e-01), SC_(8.26402544909011658241432585065175399903821756918495896750301886981808712362149771940549292790542650045147545087131705570423534902313068039653779493898450768666898915232115053623498506902881479053281044503339148499487375815668198415204385288141684801981955764702648853853788870503645633524763713779262558003952462666882738272366662792158419831973039867973436791725975558771042770624392035686827655124184929447826740277132618212118727354263466185605275377022580858818482725012031583671742511286356968707e-01) },
{ SC_(6.06312751770019531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.69841326954622286372776223794751375442564387527024987387600763171257473846563231383256042951126744237939173335621133174126564140203783722168940160693903369738874220238990420957962570709306595253925042184973848951481282707435821990405340612615847714760791702548764815132941836944307996329168183043964971707047310773157459458933734373488265390996753682505088988425040804909331792833393036337801209481443096681293307113983919326697774171463311972401915096644602844245006893698721334381447170355033646130e-01), SC_(8.21754745708593558893877997210453421259931832482362161541788802678473040052084610746608123448789164569464037819997816728512707321503932270814997135283224942751431111955279774528079707816282945989997447671912075562165513682745655357171785464101630243159881468499507267100858619865385365378153126523299388132186668506319523531631609433771914896664530437720612542897542396620962675976882751729608935582973299418407696895956465945687660264361883010261463103102557157947538917975921761520492381028453930485e-01) },
{ SC_(6.13096714019775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.75402924758358231334650295925458267187997174384331476102790740464035059881669019648945917495330357832199117443396061757906648148143864565486655997217444390326266423656372581729412495134230605632775775658476278080199106041530764431654018917606633061332458253725936672170985855414138958779244233609811429392906129724813200490019305469102882138282187987758848707647084287856167057475384628960636610699989646566839615230658291641180186325980960769949839830931757500819770067681359981531260310739391528533e-01), SC_(8.17870083925024815995359911687699926394910179663053145399361592982175638714351229731592822367031107979190069836208751007928500526343506812250399499321292994038539333622880839450312630804560038815300432575283087889439566134289676657146439855404820384685674238529876396699346001212546362146669165127918149018730694797820327381382869648762338833184522726914408835689355455865656334360248829227226282107950259754120637101606226726958719637090515583876970735442819938536217801085805639066391598625734381401e-01) },
{ SC_(6.18999719619750976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.80220763340469067252319354348809525508566786663639706547474531609835093810520638777589378050103692705699084463851477753313324811311532142563670009162918655521549754866820982915345992530355351938172236029963335866781105855187839277567473661203089423531017328580776713279646844758775417526897324987212907470655814963274474648397065129785999643316638914124658962640072449392408594369804885547288085537425585383679063570894092676237315239702551170852776102535717628402664327422929792503986746762679984372e-01), SC_(8.14459247469511753057400936713432968553335008699570079517618820900093799983757685955255000345600952230461680637343901677229590811516546365848604073614715769779803264305390559219038249596549722583488785915653953746125687426557192475272851289635121215421678870884842323812552055139391315679645514791432234634867654564749569105902510236521494312939601544245500760676880839934466297825827186225790770259383958886091365471907625416746368992933084207679548025720343035493993024080822460847793935966129878775e-01) },
{ SC_(6.32641792297363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.91277340467781572501372257135126124830312635097266844526637989610697084071956468123140510670966119034398211587971327145083152065850053928352251643344115891560584207422020080491324364553802811726723984253955887539864120462372467968010685410707352060877347028135620212231883891826722468377361823617389583423755792541719634023245230960594991594343071526963547302594773264903765030123757196797987522666861964544622436149688806334825780946673830774577772569410218147060834770459214518300816091633699325159e-01), SC_(8.06468292401720597243607373643076850834340099346187496135107605436527121943597944556982323079565414212179242634055279668924865287777492580167307947076770033365812533884726110826320880591592785941005328200888816051713221955488838557889813329320366811437654737145172121579310229169878585583506116077567673630546054503550524440060601659762352169904975997908131574019740393377568381882944867982968248139190044503341642391989065718049393007583854820241850044293966116050194422903385301862216349966179580820e-01) },
{ SC_(6.33131504058837890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.91672206560683861698540323502801662910962736425356518288149873999685630240964750179568794247108357160690946288481169713940570547424947615546778155106801267043363321492217167599527333952918788752215773564356918443371916686724984099928777803084887684542012414845624911080183652414153605252840275567461856370803877535932898839635003969989430608143290403589515438067716518748385434785173915278527980007671148142994730359776314173753830353587565828451836432010916756952104014001139911897290974597936505947e-01), SC_(8.06178640242726505993242967926694062895717233265734674638169215030194480752243897660577492537544366232156759749837560312908253286224387082540538400275543585442286943985552382663607758918581064299617916349453746809306887843201069591375384341794492842128432850981297373891467581358275207844126709085873133207125511792634497429296621277890733121173684425000350842660734392317571807218231702881414377327633225177841877645449690103409480881383280862010633511049174847649468719070167967064564429876144436423e-01) },
{ SC_(6.34747505187988281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(5.92974219022706010108992855867183734966583628307882658321095701243900911417197558520889489349140573836663955174824380113169379533261839946161834656524007580200253067087554456971500650127473047120600495452949972788383451786221139777272831295410107709155445038220377172969485227970155197636388634511381949187072449999444268403796704613250710106085854068057822684526341487684193917169435620792297081433473836123012367408071501519994617388901764025552905992036717787425425258583171549106370962485524713660e-01), SC_(8.05221445053726746419815971651888518671645149916391855552948789936704566336934637270876559849890401158717510479582527189926061647034445841426220869339477187180352878239905783188709671871951560328539881083404045467288507567247387366383779542043359249431790499020266939594575410939230015987101843244838403909034273579593668568094414648076559519075205679025774159395184845727898759689983721106347949365458892435974166757049922971026861665764014954983365451676686431477740484946958024140265760598858990745e-01) },
{ SC_(6.58116579055786132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.11627877491971613071587044772912068167383316357396771437061427662844502897427620466609259658621123319126645682492753359863400100008935248827153601001426080169982697412239718329624276398900680993889862668591190467393604988686920649867296487377076766197467386553383366994250727747880545993652542366387060248701021839633518153831885758282009991740386520264990613788985281594829350408970333117550653195156920397388678526234922066237547328598780847807509003389905942436432182574100702994762454278779126657e-01), SC_(7.91145586775699434706682325152449132619505292885241407040398261444638165675241801795441015121394868129782183647525514379878310240059764779307080503506048518850465060777594888337287672252521112896981531471145120562580244467829046974149957705801022065945453350900334077892966242546656406133204748800658419775649709440059128375286344767464588124626908555642921898233852706827999777042876474714967504251148166304922393615026590743022270142067866633081636388432547812265438968963733102573956969507972985056e-01) },
{ SC_(6.68379306793212890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.19714837588306842543058718138740246054926714910382239485238502970856970097538661113589982165067187132619066720539640268281160439445562932670528298393556312197693972629332318849922700175319101493247268865659591171932951208250809708474317514861424683826798638953226526386055915255029526789214936438984393136364358891272530680010418976217414151997197701807740467294311501247213013330492290365626594001647614860954112844174704251515352162101891298939671842185917196856654362819933010462684597327427126850e-01), SC_(7.84827063799980379211779203074982361728059891779214152842305280398556004966511746571802372837688959219310907474890329036726089422113991718114500383303663007778344198446438007989934781619010896796633674747003624402106368817595803358545678907629281002244851037896204259330272863561367660123874616721196035359424902912316359766328561961112087692177004024520170858826342186686483560937099248883139544325049777616232022358653962294978208855164667855551374367419008803669675437191041878513041619215093977207e-01) },
{ SC_(6.84049129486083984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.31936353372929666377534172858021669016330116548927716436870689842767426969839532417161302597045406330054939921641169232029932391615578373403572026279946125317776120510795978090743324577846359989163695367113214738203419801342136118452677670008707025764333970967546198963531058683258802446493328460499592380459692702978891403432765465115433277962954729226399518070155783579346510048953263158414792673476160659020329400278821557190918419587562973276289817258986258653326467450495799750000672275655561574e-01), SC_(7.75020287015587588914578411771195074192222224624281637676262362599907293785961779059986129977211025177830784348442168786682183450667953136365155001785832551965132555642589664593887400121769662552071171946634504133253856348488980396076654712434606013146460571880041761226638371907081882080141542409394003245437988920143100898825137908543687996968163501342562315851663970885479616359018385950082689104218686603061204210645171977533827915317644911647373597167897649132335989478522271207287702127764972518e-01) },
{ SC_(6.86983585357666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.34207892130906185138217995521070060980771134595814223028401424268550028414802642147887935516716437745780743991663524914640101336980226910760315195318804657377246841453310597941350572874724965315733117460066200156678788109903386746756862845060984064517563908979315608178603088957964531685560982456412273287353648076897631728915407427856053044019768395890995445141933769258230908993320288843265454369317690853165669480148178407097303779349415564481663937376368058473755523881122097622561160134717532533e-01), SC_(7.73162563474766841048483415887815113128270668467243021121425122543440004967601932517340170925412923140648469189427391493032322424298025129846960002538396012061927491269154650119691626990617439396114342524616971770389759352447109606952151184472001811010660213708603024649577978842970502993544673075017954455152924365371723225635025754836264482382777266251590714034776765873194178131181718759634161918136432931648140234489835301481526824895759034614583345030384106065853342198571446960029902288705166826e-01) },
{ SC_(6.94284915924072265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.39836052877330415849557324484442485246960415097675587817729130947796598088679398211918418430782716761499904608212690457611529828373751516280960985062072450410659960845465774665370459640245023079149008857282599337994588698772961300102932470670455964033692741822804798894372704901582184812003971294366565124048223850858405484483918946765658340154449257921292765659570238517273545585244602216656601192100295568929395484656008714082018969371732663016880302660592574145128291454881820236795996282547497677e-01), SC_(7.68511434813014370464071069339832221311083583138535155987163342906384134901657393354802549369389890372582861852791541558171094773595275468892230556500115368424467831259833594084903054252311484213541678484269411902594249145222403876708128400697928924522816288182254355192372916075954493920965124086228091558841373752049897442849725930050350651938100137683579995803849252482883931876266606935457585636549131596716992112380751040967416114021919373289953352841490346808526597399414353552864896082644783968e-01) },
{ SC_(7.04085826873779296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.47337314034375267311253727881438908324914118655596903539009237679025823609807063414519572776218793579216891876342705736585205189677473150287545285885407465163607235072015934997648155039523284701130740438070319174804288419720689962870453835500841745307067839463534671761104917869376632808602691603261461941161338330182919616033742212613058331738146514456978322077962906477328825044854350200058603333916688049190257182038575346210285536253744404448592449041637901255073270427164340439531631907267607749e-01), SC_(7.62203648547263658124556003919108631375059729455752347315416115221615289769809363766341996100406708571842804474615990281624544657474722340968058460824215775408209176056732637981834602157220055699450856816394920036523737063558780069515171775820548685613535497845720729171156701201157483359755580485996949045344633845078270826538922382725667656783623857614425595386019791584646719482830027977561461206521773127678313382573998766556014080907045322829632444997663307108065388896464215295338370168272490364e-01) },
{ SC_(7.09933280944824218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.51783172382929841429151101014983203627578328333573592510980632952108143767795039762068083754176504537476052511691864448014303053397482545651822053832287705058499414996079783090399120862253899390521463138924593245394562793681032248632866266766895509930032123199410475544972713589449479893108999097158598859942660268342636814309052963446861245270616519908709276995009050713056849385235425190399279180745720917292866069759567084841827333335964523406079209272268782749630319370918462231083124713647708027e-01), SC_(7.58405364035911841501543520471024032415280607540389078760632519463303840329020571045544960761585578507657880881719158444633178745177097217632381274410178922552576393958541137449644629859679438925409830143968442835575512375287556654397959631087638498982572638282648212386560157945725763904932732228614132924703510889158885743657357850286206983294111169997088528262884477065796101760395290581798087463364077999452179153508035671219845061724275612416469431248397257676448236556699979541960793793234354297e-01) },
{ SC_(7.12137937545776367187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.53453610421558887191770037954012677520047542608253781911414475633135762082648944605151127271372005391447599439490226146358614114988444338767607370529972443432762056723355412014818413359758533894010829816380996931409136716572396990538773275750459085751647799299686743029739389324120791907775424334541966372901562358441229790779983815872877577111708548355032397661700832814240256454741065353652618317355244351437327924856434997949990497272086397007826557763113495785992334434996013212106563351821012639e-01), SC_(7.56966564008628816064935109195378426911911472438595933112354357748505074207024354053911829385588364448207071677852917245130645012968655730226513657764473316710014319131523151887741595944009634322876870833038475238389767311902965604104789419520464629484339752652742222247350707958785496125375295437037990398818672449792045553554805101541785038921513194543317116169605636216403146997656048107702306109440921721516258305004378318430714899908536008728011634964756998246216104383496283612208246712707809890e-01) },
{ SC_(7.28063344955444335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.65425239549281551387975096958780375858851892612581018364517691550986625053067200927521434055711311934858303843505620795647699094991167962072952782940273782031412754829044154523685627551088516306144183410064210956927323855949328679639013060157012524469106990066776143600831038975143469374685791501211129515334810687858924199124184919832544720039523738772834549979678896244138923880641120598453180075472233453229563256798121518710091633983273444804638251096554147694798885058914196854535864381045701914e-01), SC_(7.46464500542913469550304482427483604981998295473097001834850867024888391361681154549551085476420379252215393733043723887519290343750467446615492574133174914266424284911131646002469252866740075071221424899571812395871594617919523849326962762794240599720695713605778048623064419305383185861913597186339664175665315128235844322682700305036708590451177189730578210863235483538381358838871934839801769986818109659779590737181465381969746699020808152545779451579969426999507214595377575535319512818498620621e-01) },
{ SC_(7.31353282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.67877455849328415313685511252407361475290664944847974694748374470430525820546311711633036068027917655119375109669456363780879204022992271472046839476884364877059886387610485425570541910060468422158698050147164337450261912118083547208431050535457571356039548539993621937778735874494935537604478209586817246415426357876117341987602497257974902619453111772426625634362317200865655014604545340689911403283456936384775676107431194675840774229025714882598541659398348276336357516196404102890789080014278310e-01), SC_(7.44271256981101194346209628134504606702099618005331278155702255569736794611306017252420167649556829316737944208883220062940525982827062319833178706198085721874692819642620284994022263051778498810953118700480764998742939090561601606284588646002048877898161498445470978169991315741359253391616577330147012226863384211221768778133768652882840183361127105099183092604737447476797351760900482923533200976293883182732697626771002910636171758241902951875407238841238780899997688911332446119841029304425479636e-01) },
{ SC_(7.34646558761596679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.70324920178083436441069471678009876567531608055824879276071736344347039103770036213432254310241283901574175309710833116509980678094724076935940860412925232677469144438445914009770303026253831951547428328761003164748593055572657816784981748333393830149829036752582048673452037841744030077018127966629362072622320459806895246918774521500257936723572715328716560257228806009962495784185008529474473181791809299845667764302386566655812206124328554962989512463916225593807471830263098536186790040787445839e-01), SC_(7.42067720217128208561458295260588188538883703614529506403332866542499686401570844168065379119686678412121172275197281466837025752106843152727749804130330019398565607006458973651927655708121078756327411774608433581084836662172963084466807457891491110306028947765023619026441420363688723939400112648843886687616294780578466440795163986186190618677996846555348224767261142760875403983928512707788875476531712495126954048108942578212434188855740383855884084742323564540464861291379994368969288540451950217e-01) },
{ SC_(7.35883474349975585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.71242282289650784432824894888486151838207425243821064872578816539245485349169907081030400639140122480003746277774671981965140905966502055045096267484016861019863714535857263392580875083896637853022773890639463141139601546619280185776793076302947369731239294025987092087696578758868930952282914246773195675160183965633100755161279046846470580227563479309239991478236819173709358267985579481202693451305809572478116921859856167569426408004912947211637308584527298655605280783744732163905380489214924919e-01), SC_(7.41238017418548742413842257768684553615834706641899661393734845623817313321543239084972374770481917354445618824230060053347683515049801885699977994522189688560444826046327608254570779006944178830055126966799122232990289767677705366215827296184520130230453169104436487644749130788789590578134797523361818202371818815713878405573658388136437453814494911814556871777282812555049415325042882677170454923162907543967764711047796723580024692887761925274834178826463996678615559173056991061779677528918102368e-01) },
{ SC_(7.47545957565307617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.79841113768607340695944112185623754809736842484299646727916304809581417691228956969140207251779386697691577741546714860663854566118219588035062264502499883762054739905424569936729908546433662571248273931646831354089850605147738721655208493575116647047591590318581469421315162634504195730838974528986962257992624940001258430180986204021942332453689279121755873712801504797017002558955812865200707831055953451811123671205439221790845442267042379316447624253844858919397067431005597259087018747582178424e-01), SC_(7.33359434404344109336395962586828145328170625700473318543788063807067543247262286190805164830755305055267618419943813198649946951834556772016494519206476727461835185579311139486423232373044374013136769637717868251379282837922690752383578796965266903327115596677790452452974648347092046946474286910607295726282964624682284028852420742519914706578260046372907466723896662431770421690941601880002968886771614517398489952077636798547497165680848712519474408905758365283290126582236138958173021236321161885e-01) },
{ SC_(7.55493879318237304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.85648263319370343052834907809005875626191651889287119446755435146659758692147853953563788614131230147518332897413407029130680747659427336204146141672902830333767903465293143774579343702237822978154183397763786037274035612370601549591566046393421688340945541811271244446471992893685816844422290107339474582031600707672053506093570991627232277511247616242319229764885571613405065990151195420213966833530643133441081048453151568306471387731353145348084761549276605935431818127669747470731171948853979945e-01), SC_(7.27933004477150623008809972442600651954692477743538333356621001503195937504667719700541942845670031454624830343728389907907347912403665447373766506340758222717919268080026986771138260024517905388101442952981872598882504479570588596424852623521866672390156090453185231458894061499369931924249576747238446542346316663662331729519738390267757834504744290361928534954604379267936758410254241823802609817231482104502777287124391370444319867894433306323868979969521772048460043626033860564960537038095938656e-01) },
{ SC_(7.58935451507568359375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(6.88149431809074292039011479636345409272821159878239199063155901100467548853254258110502008140002376113188676528706129709315448525290898431272202561536901596271344648580137727722677193046008709171376549247548169720757097475212932378765873167576807240071876899865667566027161620638408264083007728986171521870542890063333655118712811809103286225117916161550631677504773924185458526354318750799710662777478042439728309044909159664046364148985809812258610769136628334650773734441115032126818377546249320163e-01), SC_(7.25568990173124895338125876594655020996196799336506719347548207108773241573013361988843912380042967173319980848965347758554096264013024360802944654983722000331612085095493975827321189492026812256223514482673900792147489176478762598983238564011300475061164502341735461598546965603251492600505243119182301013494029540587474258886399189520179110749622455444080841081454890362686228212962087454598613627230870475322625762519069603723940374929932243553431361246951367793348636809564558449766920116867744525e-01) },
{ SC_(7.91057109832763671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.11096917179776834302812515833728935272468647127939295351299971149188833687056624942448454512139136992529960373902017326874914774749603887673330321423898880605971457130146157359406951110300162856514767402201313562337065970349644312236506562094236677034639384877728912352270003473603967918428645637947206690444105732593825279836711281992638418344858231107764502007142454975430695021477350271536707626622731305396784131486382334375539297869210070416933438023276579520520390765443097807298713622715115891e-01), SC_(7.03094001096167514247452987566287284250780249387962704875473628545617541774686956469062454651828607591249279271245274397135059565688145447752251614500578532608639894834789582982265370817785925338408376851087909205953300730678570975044663837957505742441580929432734796231676920571015992517126640510826168319087313544058187812809896079863947088018101287123002496421080180476087162715986713471824224540590420685566491565864250397615116860667256579933004489120091376491629218063464801507664268777067724241e-01) },
{ SC_(7.96196222305297851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.14700790241734210718720054373475547331770418031912502525123458538003032746062328257741114689875158887248192521669534885392619195512740041442251588903822310441251190280244808295176115039576094740370089122366345937461478223639891454003139173543796840935464808976223093898587054390970330087960689894004259716945839339645236791663447552549659390532864608528110443354882079183588236749335885717305759587003809538258581826336560351673467159629498055049188564719726195933822175304136939283243967908242494550e-01), SC_(6.99430325642119007199077599804338282359678696992845283199385067785523316357497003279755601846574384248393159269985358143471633926612287125404225155548044445499184262453697237728665071432512161845503412031823157453310693426644414151689312780774754757744034146765706240859362206302826721474463009388112171549014346332567224941063583183938496276118915668883695302262651276382992275711085438741067375802053372839441984732848254301369814425503989712195275586467060144295441465488922768796892003329447608649e-01) },
{ SC_(8.20322275161743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.31365654704142739846905019584696358036047306428180059429371468748059482991110982535801827867051266821311376439714397817455993576620879096008137068230869436717130513368495882562650856370559340685959779025910012852712707473599834793447097591460733637138441028399795427998853135945798003850175043219913393539806928792759611776050133706181971114194824150248235517135756254418435225438771834830422404958975726823719539265915396582983003903333187901189190376044100155608302909472752013179273050165726134671e-01), SC_(6.81985541722975717095534445767819481908864976076961739056180221697736132141265585566999326647245602003551277294117508416627907538030876733016883885497005656713622185232867964646776021117768267034928283519921750560161271484197621123938042103057877171133153181306536200901947837955079582005567762647046471690332827928980954613232524604877387625737395340351244820721198289997787185454105134445968462217536369610202581676650929417732788588715743220458135214003687206783391270487189498386364945123860360356e-01) },
{ SC_(8.20823192596435546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.31707181381410700775852413944623256358279362863429082318176094644074345198934818511604497924306255057761372148290611474872724768056233841633053057759269625564484451756172360890862732976965251435126007770329830159323039601468508914547084883261046412490538012690073602709905862777673769760539824714203891758844099506177024515786538294725856183082907027976942601097128886158840072184464238575694374237570771730277620705978363177030311651969394642265696664888395046181793221822925825553797830022216861812e-01), SC_(6.81619102369403480554305225830589669749496286393568170235405441280278381355502071404131720011170133029142899451867504224912313601433029599167624590909710073729960213379239331488260793038841494500357027141640185106376120026704091104273895547141376917874461252188333037699289790582218493452933614232800683564196166644334061074582102278060215612103232488660156166325779181387963741004387571863137929241835769518810981154518776634995901657416266901576969346164884723744461577404233270130572283559282001269e-01) },
{ SC_(8.20830821990966796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.31712381701167181235940405073972015213017639680082667356112029205671139034521852374354906548574117997188054771119114790417352101300580820315150401962599864229711663045499725615624769701732815805881838686006938070145575222297658526345767913189362679305898973467899416346980968752255458435026841646196804679932576337820885098573186877489399993520726005939470747793237899520526853009339508138223853067623106893392596935713790281374384104322060460403415407546619022310768214665068143293181570925173506030e-01), SC_(6.81613519866797700233561078830285348868909728015824467996873436863083948946792713662365645207291667275891590707518243675662095426503292274413226380893079787669115620493220926707096054723242308983595288942728615386528125187163599085233693989737313878754308845546547871603235046915011224509231019712012001921675566002620394997684099906522793791517970792998530561520243658709327233522695971109704887254996024093751518624146215852953903992457981183041783974253387011361571840065767392160436127405910006494e-01) },
{ SC_(8.24585437774658203125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.34266415048580601601171614328189945485523348339167684552882817358872463794947236136970813327323639342718055615553899792751868468349220589184493975245756465487196821811241807511777442736289719722639891858859935335651084759033715948897509352669673287794523647621937969176476233408092160097961004199695909264152719287052279829589065558997590492898837638209347034503953069034794972138475844603380815379547139569854568998577295466205187088165937309792617517840630419328308859176681506271893863528789248027e-01), SC_(6.78861423069322423142287792579947877264054945218311760117309756513802596452752265941644672458371639416650177013219274176072434763072510338862834134080437379766218972620884833863128184168443684900967637836984797742269511801017789421153124594757787251028286436667001509092732247658107436228355788096082272539774666132684178084465292359871687041227303291674144130444761955366487836773097705032915931079300488532047764679474318554807323227573756378123678236220609152577882604414124351048800037673338910072e-01) },
{ SC_(8.42336177825927734375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.46200398377393459649680826081175427868749016777479391656946615357401168769244488163885501440054564764625884632208092536154327477843944291217071640186792695307439200754180218113370133302122271947648219228033925537331803886856486078614193043394452297264214446820642087443784861194790324615980733184632898468451644948907519394191384802169154937632223335637190099490677170800235666162943855162453645700761176168292376053760435303585758309036258034104340588553649940846104238991034056185825466741067882072e-01), SC_(6.65721387264536737199053622485047036959155178470601890364581116448749188037417941827507890537685995449185191055999932249913339748939836149314270084339122677529396816057499007557737481859203418779490782222223935147785268990135438875913775527887167257753754804880001533585490387945085868364708189831954961379748257097179336872008456812624559823103794451262576155877557164818892518890148246723174790434123610728214709486034014405859537649796728092585200795147670242992510582392423063209695060045435639049e-01) },
{ SC_(8.51732254028320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.52422535846828634329763573162467783775835226181279002075499246862952798511615086223852170067031422097672291727362551514602515232858650334266117329374278299553738913137263989569552544670658051509333142548737955765721640897185016235302271826229961834507496959699946522065996334471687240277709484606165787709519654824887215013969427685512023892851687430587576049452204426229183023498749375591705872255297982552737172334378319347460973591687233240652609574815157682893428262843430032255662299652114089879e-01), SC_(6.58680747820845207658025673099654398208410800146063243277102180468596975359125822183693199476973064425685212001483520724112988866317082004563755687487431948863912142895176713746527538414153195153195902886992468372105263034943619928953111637060748803014031715925157205650185348194095196433146735511127968345957898334184182275252020868195423853786179773905957452209444524740405316126300170571443431668967442839329584782366429851699443487772336859741150158436052721645009323345331192414931319025563193732e-01) },
{ SC_(8.53235483169555664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.53411833445184158836140163572064590294752166376711614137854911687483379705773538984310687352928737777394594541765815710911439334046554940997735934546678121569321606032983208295786707007964249587180529897328468589036869105558173786011112106628817264554495698575451649354701607098355116981968314044614012968784188544167980927924327829203173902544581781617093304811705073341251715042320605762563751570423820183200736572716105436344306462925279390306546438823958050135189736037104122213194340265159200889e-01), SC_(6.57548940554819907573257528419300834282085959566971485261554488964967201945618235849231884529358874985523899727532768461452843522892545956567443976145556104320240537755297697336571583884606812992554738345823881726286988930443989691129940518355496639636521178039189177831792417756204567633195849709348605779519669211602867459041809898937701383112387501471360860974137298579481666185065773825441102462503880766351019703882097283156754140486193325603364399157977161246057275078823715656758124740769286135e-01) },
{ SC_(8.60631942749023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.58254714672202734054245631300777236683159096097036356652865208302350109743073684152410962467600654933745740571894780398991815718735737674465828290725494858194989836534553160399551271476918168363229478652799066322950631488733954033725999111904414202705936578537002784526606704859598219316245631357166193113310254529311587598217265788825906764456617882297267525625811076294767454761426589134159107671204802876644719093564206549129870218372256457669807937656025972129347553750818546756113960841751027002e-01), SC_(6.51958424807423145724681352366893044913213138350124776252984208258289594390333618059154128345089870962156493775277533940863780236374174323722886635230257339343144735789204877774178934520266472338942566719658189212879424410842064912899039411532389426668819500380572357870722896319650296336689216304697183340394099481481510010815179251484525103064808750250346301956674840478464617935466799014788108180458727627901714888446114618457583761783239371051182986228026484951181476347027474567524391889783918188e-01) },
{ SC_(8.71434926986694335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.65253428839936597894596123688310569090389685861623807747906998309584979498111611756491021760688758158177280261057414612992774369589196951533402853137262845408946611167107061628964817744786033131644642061511740789926408393663344035662239704331526547276660565514311115240209165188348550085117827815853949524900086802577414033834083707418722164713516489527969642212160278115195142344168107122012981297994117386544179420772588506796664759651956790125837907264670178332084628624287193563546028447376088112e-01), SC_(6.43729127544124799494617385424141789231958756626700658813041071428586618072421618554123624352683471102337219690582915815457570760436788158308993420812005608224926825196281977060682929608339080881610829922835036163838266204844465833776530324738412004194818792577411893967126443956831812385983415880848530409188330707192180880606478355189200581927593129330039998521115777958744436380095343335367391348225109459340647897714560715485246371205710624833126032500096010272581171199733945341054993950174852275e-01) },
{ SC_(8.77896070480346679687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.69396652942502806680163137716408274193626505179261027990589455104514099654445891686820536957953425257143644049015207376709302919117653628962899300992652165756263697434031175190503438476983170969534318764637916846678576909260931266642525950222240920446950471376533409258600518379609175823729377664566681171424703748226617477150106440828466552604008804711774039970531971579418161768254301575392735582891812001284274165621905938490443628338710303566279299515235154679302470794188934092169362981251949139e-01), SC_(6.38771313101076798184916637234037591631630476518693506025388154191480127015986530208615984654102066160223638744973935483082365448593055470002327507056651767849014396832146717236805375433305757070883314307096701064579347870155982807280470443786167533770758312379604707343782359552342226011090633160077523578145167810262263830014035520208938934257324947353709830917635397437518132188605070760628344358879794443634580776390332446040995026564847535658561531518738815456137767206748819904544534640439838368e-01) },
{ SC_(8.77901554107666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.69400155714758174751463956320581356413411030184997329885336980347356484417649575163611155974682960990074706177152082869084220135289675660713031854544651588961152487309343341711683624026191125452489208799790205351785787809081119847466237333627648354936014479460242198409063587836547650641254553229247595634761404167667528762434341974636313629726961805413262922094769725972157142384658932879933860014161454297080776720852052747460337256898405341811175351699528039330897784979131765307939727592470639742e-01), SC_(6.38767094006967357656721511247182362249968335273513367163289737234015746407858671691537030222365046724074960371995585209481034408116108478891455599216861380391587550923462076145935873889833750036290480159091501120762411644650573651648384896795839250531931008594162378543229267022201252857767447467217098240469413303271704255149771366309687473842534080354893076656855938206360596197074473714118186747774946181365116197433273399245150535866789495922270957506694650891577421983522076341204063582668149071e-01) },
{ SC_(8.89235734939575195312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.76590483008918075828123704043379132878468331801967725591605673654298358001840206326684419987926629893734512865726422938146342620014396972255648966508116762790571194859893171810810344158133433256238149661062529161655687364822434788153154601343256287361124721577752182527927513604966699736996393440773466561767934321328287581238024121937064696839131096415250977881879528957788874895432846673943989658776895612535263832944224934599638742571023523788882394130859758332145929080625534666910077534518151665e-01), SC_(6.30005731481845588273036576846426690914673384479600856701742059324050612829369196434797628379175419804925394509968380629103231661724961641777260194329213816053275791498400614982137324243094565751574074781317228207243051532251035366786012453342678640581014349843567477661892513532630021150492274687780375569033734871201459611566752431721742424256015626449576318661533280124185966359039977200045726794752617623916091606371771736962437251873603911510569433817985133372013360763397076481029831695401715002e-01) },
{ SC_(8.91755342483520507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.78175383462325163583674655043042202728281242225366935117157325225181476656067514837038925992809175658530368266776381307490548251307103630774046387484632672266242289311664765547821562848972071577684296851290420415760629271943958285077554346928275950835563328463912933949018430611596894649981846914368661843356689295600898585202254923488212519552327802028131150621466419842782435111397756440608545404660325234025515092577789467351085455750696722955121922226534931082782879468607373923807792631205949763e-01), SC_(6.28047030542508964660984155843210515427976913195341299397416880066259097497362083346900049795444015853644951521277472704361379055931891605371832291636618616517177726378221958317024446964676152999346744441923607521882244531629771088311460630752446686692856778162970446447509534204791120267039919827654922453565156209163873599425863243716981444860656074593325137604592825588655286932687854692292092466450735118048208393976096856497466171234771756357427282306123858046816566008416672777532403900088297464e-01) },
{ SC_(9.24067020416259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(7.98058916312735347801439586114492791247504356700035350372617300035491325642498738425410757498463680839749405041855752082386106968476536443619420502774520054342166910929880836624789313581722880090984918986108537736057001903701343412875769073471137982084510071548308674144125832580017798601321260141766392193897611981849608390621570191349383770802898779074210023525381294056774082554327936599442711681328763257690606803631608191012883656486022173621194670860849528550383855769646670248938050891350939424e-01), SC_(6.02579427207519654945448773493218643267792147248371754581363473609795758074173708675888611453910760118715338469247983915920902988424878326449772922846334087438143568846425397712506600724800259903626436144750040497543988786284363660844256167811788822919038705711937971087151329191225800553441192050916599960240802588789035166708012627077407281815309268388481235738834736964636229043914244433488779816191329214444784311750898666557245872423964610573173614007380193002623880636557775872455442732077202276e-01) },
{ SC_(9.48538780212402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.12564669864108740704526484207757833147196145725851301659425236068573275909234403133443871501638477787527174514236271369871077558250470471388812341752831884260599506119037378762442877644976065538329194428099200524865474042001514134742196903704060954707513545904884464229614830486230226988888294221877802021182915074325369718722295726897572934557026431305430687003882383920835240558050143374898263910116302593489183653819757258655043164740050711216449209244822863602113590113477874407887852238592732150e-01), SC_(5.82871046877979668715013686472506038570335511014029685667146599013044671091360805600736750567377723257295386279133021341229729624564952052341881681745532136732380301253980032056794607614053910168194823631388805229025653111289051579838992739177878645806958792467024000124031374521011702353300856519556067014730143575223461653982478513321149281707480959361188721812110134045643590586089099302264567372058785685184102186595081293450343022216284635973331409511742034734523393411078859037050754025652927233e-01) },
{ SC_(9.59645032882690429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.18987935959352073875614350221457438487323685041914389690448592513530220519239651037978269508161267490945154670166534406063138841144746365313742048742546862828773094010795667607517794334441680608184241612401077775499508697509903758691830768580413170834939208002045427587221365787355404791692261389870945221206227169987866104028291835384398330045112454088191868853133231019091108422846986286460028278842813913496964587302041301009065202916611122849688878484886520224028920980574386384102219209722855994e-01), SC_(5.73810736003641035253230826727130176962684890290455248696750116766827303422983360120185965011205954543173332229412154060647120027510300901757548306117034351503130130202085092968416847247811715273727937511806279023862537563748813367037827626060355844175390548989122146048668943889392616278176867772582425831898960286338108240256596607770829334879298832455356563498708453483619048063771908372595407532180041349800539325399287092471638125266915313546537055155682234714560615363056319665309958777686371598e-01) },
{ SC_(9.65941429138183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.22584617683364992207229334003659891480399795460992886887186049774917024807741696479772302621685034469544288146545476789343680790813545029298766875601266418608150059915090250070496220181822089491578848816421876519641947266567872130828556654782426700108153109976120084697153230120698732412766844108655477561974029439822155046861812169807144463116359326576613037164120983818549053652688252257188181444212785010666711648974487686167965608784209332436955384462327442388935187075011633997680936530506621554e-01), SC_(5.68642723290039340463788908562022024375903444433579040809686968815987000773842985996083775322299516895433513241758088005769979020979884462820837775199929822542884367476097461845417648807912438092370123891315698660843301159976154405357298789332468698532196213669597486274889313498220406935743400370789951032049095520369775978550650161707155538699612971113574623040689344171208145873292268193066088579319566948787164894940602613163719118941837781698170157843766742315044243719982001719645953102362474957e-01) },
{ SC_(9.69469547271728515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.24585732620709848369504663267842802945713140931526055303694584350216444781433131159335710298075509928061921295637330893161700738598008958933088727135651320082618894171378062680988313516773413479819875937871239017735048917366136188501496487009707095259269151030532083054070871581776644960270094028919341405032530725113303670443168536633275168354421263536701825456258624838606154540730225508037857427911887076941147694286382203323300676505455315912478482796722391610090650659648499187906577186157737056e-01), SC_(5.65737014484970044778411229540371735847367473436622430603910050048311316724172043446931327368976907852993925629246318655379949415439703717508354184841540236193001008856676979113360314219485181368297328528332958098894637359296941591426628297169297310200339047343894978498011481344298400110679380143795548248514001432340911565558270373397329312435370958143775911560520015023284874302778208115584385775213841761140000781186422079463643822755044052498499982835998207187441782548557791825513942412399991580e-01) },
{ SC_(9.82646942138671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.31968865865227323980817588534012145072956918174739347526060110784347496214243249811021514168456208338095803368211236101872863267851708520299886585558448598513907571648992356284386513455055507433219573905646545209558087301617308485028877164795043620893577991875789384432613469220875874237363555058119846748704662987579870821230396167878044611649792961253689446672029168473841797727920174931715223197252628290994681792926108830975273333625101578331152586580555117601990196126397627574074208787189349152e-01), SC_(5.54822319514029090084729982333587114741858196394685335721946904277279159971925853766398940004554450358130664133950870452817706012609815744578631545675150846874896545586299851385016742044321351006651189895571335493578725988267159464590787613441298510791278188261138742850430318264030952823330623956793112834295928275420379877586093404930828104809080519247793234083735911543819805565871096192190064772523384701149841800290179816133071704715005293923596635924030624539013903890347671661902299554760202174e-01) },
{ SC_(9.83216762542724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.32284879858217969591237255043980110006686133815776202922271852776856771350332101339010324703843517116138866856908257614411748552627016061940281028219127825108284681787939022381958904898149444831010716290354011402876628197127433048291019572067903577899308097770420413212420988463826311822629338611686362193199071281878095764288618770356886283660840885566136277968760899908196602739182766462957125144855460241264414889900241225376090029495445808532222733058272682759974286930523604972591541938462082738e-01), SC_(5.54348156630282013522625791463277163031019039811554196308380824695427495715350261849345006396636896908970353963418749516078472471112962527026429006539719950884742421763042926231859443073464873027715096369578135064095865745463520613858465435926855006544338822632391199100108760066906871869656435735978048783045865402206282833748844644409629233161318525829336270222617930815810267936525385743714996362448897523286654136619104074977496801222450463284538962297449469961368377755944588348099574260345963541e-01) },
{ SC_(9.83610868453979492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.32503287102961641288101560354377842367104556567230972911622477903374953912355915245242240712849108712975196498653679010031326983813457851132151662065430308536699354126045252973333911068809938765074862248868066248950183496391766060621564702255421080483036262188122479946139341381880799016446714332666959121998488663346116132867751565190150997298130863357142937821950846814913958715497586314656834866185822964252264867773407658286314197967136187153405146257556907174702384339683351878110201477329379447e-01), SC_(5.54020105197242658130588336922487025506504893915583522168469404039255366646111382241684933345969643188484322454205747301489360618730048950013527222210645916151377608244930275389952630297948885962678803933526584267017432976830694495613544874392202201421177634556433257628036811829533377199654511854934046963490441917900799491948518218492351408077283977664676923257870328730978442918374816705738155924294226672938193936714425640217827125527711078010078149888140743747761531647128525612808314747478972570e-01) },
{ SC_(9.95408296585083007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-01), SC_(8.38981214920497704717899373418671446928483890855060284799740971304882745920908935736943939704589267941989830244373551895255783588073679113590173973114584988190155699825108410121360686195883747719007007893468921218727274807297991363217466038664657137367654723084973463290946256650626836794264683004278211513899268551920312342756266515826259259726512189757872712853305609667619002475912833361518495511938047440818339505567676937465864214207573785916885844608123312547589207580716363920365861285143764375e-01), SC_(5.44160381698746642203232743195166366078139632851608169818655383956057684555190540842709659974600662215781778550742641804821634170960591630073806891722462368887780189280469596950221091518334725610368627400853243854101015413430763147562200343691917920252378433090596199174851325731237602783897610447664865875066758800548339826233645876541728305686639074840192077219628286646161024241998090709536557554219707070398247151276149197837163311776708081751732490183361938952600699049554602049842531852153831782e-01) },
{ SC_(1.01810264587402343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.51113478224340112819769419406668343296997137852125085026627601033695221027221680739759228450519239906763483813641409205221569907017649544939651124070200567253311923725255685394557115288147651330781854842724082858086345305489388659275201553064204666324384134840442724180538877542570522337742275387903182943487865040150306562753008760418606812138537167402919354824803373463154562471658910999723607611347855634475155110992237162274694333736177499745794536149613151318943582648699966229652005358496444489e-01), SC_(5.24981758906788806720321221493041546046536853101112224546068011604066251428211928527397002568495685344162019857040043384725024419519787535508177503109959734124106406089378362511958029320766868127672972643210490560131971265057069410667058521515850110288642291074881668261518014868103948599442592327439087184092477973618634763995106587135252254198900232994974891591691575540357713853493587106149036294617662585229941327315258402172912132653620060621681600736287201723171700062195198507667762376876900942e-01) },
{ SC_(1.01955366134643554687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.51874338625406898751796376082414397227826831688945988367360783686017719569653498679495095886999187714603428524281489702697040739076723012974936631879646188087684388206213784841749240905322462492964708867774769042085311978421900563215780430747642719614466282351813971497903235599082563973431089320745714074712238730503082382330756857672861429927076360205779930674044202676173396435454508624742394250617203698465375200572249600589644541811730973102448523982739402019880822845906443454298948632220496623e-01), SC_(5.23746227854220998683713255684654580420349623900629957727586767135312869229549505909978296996917115078905829360331882501779993750493598375098975060336863081613594923694881885705251788938200175364653283701562862904858617940803729599936402634714305971022089877816493348526312968794620717565655039815357858048838314590763290686976255039108541835565430327578529839018553312044777610181376111606345346520328973885384006538597494774490276543810336811350585911692458465560280443001411399885568556041662167070e-01) },
{ SC_(1.01972961425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.51966480111774361399069328701995935071372020219143309997787113638393919403968136915121861175835538754600834423963514889305138630433731608710603652954069400606286560468407767107107087190487293833952663977007675506578323630239713581324373245904026958212213991969335770230236066364556367455390182358766586599976713221737360674982019306470673766163584861978662023566581366437871005356906184711866434214164772764320131703274870131106914060711534591606757951979026327161823156723675231577861333842318394569e-01), SC_(5.23596329977544420065144742862516506591535240888055421546339421107981141699964339304232991065563646931999786376875813624393033637311422887716774299128151274880500637675282113944004049643846577609752770470220724898109324739773136018960486589825495016797038063092491896424124930201343699338944844182394014862004848223072687172743460980013255184854002963549706263053554276115375457613032065224733557244235021560239945266210789382637676232772997067729369831317445346394982926087240786066756007065976865199e-01) },
{ SC_(1.02203893661499023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.53173359993275510769201141067594417476315071144690812595653997191597262071373310668427274018706715816875602616981734686623449274232164965016889022072766227485090158582077532768757553401295445893372500614520712981163822507310326564305951524928590439452755277457928064464061417996375315127154980021397765697409923057256186808780046527978929918652502064643686968787899776711539456339228100446563066687648856212511031491366882500584309071946065416129844562857212623798449390581588562607486228411763200912e-01), SC_(5.21627470325120732269813404010316165592480428238754867261218888469888255657619814460908558032950507230122405786726087773136456927684474035194236890972080578053974577567271612823522403564086609541956175796055431451651302515819459184551928562294838939499804848508446524019874020648005304158480870967982703639307838393841009588105053700130042111134661167777802421383209221609204503819802214845033946879099849476229349151407266021771468544538449977330323950620579696088984722405789899241692475022421773349e-01) },
{ SC_(1.04224300384521484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.63537510869255626006639649621175598735538216049096047128314622918130121205771750109554598476295766551959430732465946275217523612600471370041572597995781971371139574821411627966947779135063872049262142250252738667498080540864312933810890040892588107753549143469963815055751855843122150785220518063256317064976725772586961349152769650156149724984037410207678280018005860017259990329083346957046556900359716959229695808387355551627553590335378265769145941947762744207681462479232274858383582258321146682e-01), SC_(5.04284609443645644137677327061934533419774433045359305110392458573885056024777806215829688978846281239767920668722056849722240308192065029841912755982623384774057517123723890362492952826228273224806621806848022766917062904511082784603260842696460679290869901569222629711739587027262051175653556877760863288406690317492056664849858221206006338415521392424645862165044887535133202678928311297187596359205254783280406914115226610484936105009423715924949584882457354022994692793854393523665552395861099271e-01) },
{ SC_(1.04284906387329101562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.63842979002663238449435204701296774479655826106967229981922424457731096065820930075780015601998055141776673434896407704894969355059239868184948033405937550873032643388663428811900936276062506481301207786612350255430669990490729215226235121222349700973545475451464817766888760629083810292716211070263259927244982625803510694487567162546304875630668045246698992365147563968339464619497746621408196495203376801750617431925118103653718805521676962134971750239373249604163366941443887767002203983420837004e-01), SC_(5.03761161293528383227164965192425790682824545017807701791943125349294184971304713651260221666354091350373720273671239823498548250306546674281103764298601227442025581335391701007457061014636915234497930895368532401260152887354212476227233684348573925252957161208187722137191234610043021535983693195925363819124150968863527869550047518806715597667180909668244768170869617482829743029747976901530078386044099961964993287601498583919304961877326655570710119819762322404343568305105919239287745118584466384e-01) },
{ SC_(1.04861497879028320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.66733247377868951447252165296997103275902323306825603286025420811951433197464955740899002646743162306607094455479834727516163691620584323734800820553232230642057166947959008797122645834292278918957085530137883249125718201191981410765862667238291809157525861398511128998302707821659666786785287395993637713049198043239268120875487982735366514430906588661471270367651330814997354583032200750284247290948390741087239847195715009409917156323220163532420782083677592580985013545912022698903528995514045046e-01), SC_(4.98771969831719617656313296373814635897071682918217378300535179362133842502217650129347096266351936125121723618551438325664026121428000063243627791654072553877437816025406826832329511867150127042335149389897303965017841207076047913283061462035024660008951807614818673627574045268003412329001964254784115734537224971653343491403923664649208156711189624863323988440483604190657287900352131068098389460854483492037204020251328926921040829359333356258262691810836937317931035145533664735541511268437477996e-01) },
{ SC_(1.05866098403930664062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.71700092969493626279546693696551397493991446149794302485855185071559252304129808957656534322985619215530703595370148231144605038244762601499558086066253298201721452458139800924319525215992700207631408178644067538811094757639672162883610186864783317216938583320140927245396624100839223782524205485345890430722933364461184266302104566922918644561789891784216336399824110016096325069780392799828712360498692723629518772477904562878551087979153180016119660661629714428171152595134549244921669357637378530e-01), SC_(4.90039741160832963536753160205593132037374376582430495044622014080102593330940543147968970516476557812862892251484558355747279918010270824195900052852345758671435269294213984729937106474238759954744443173560342611126375754001378758626835355417533327367416358134292679789559890041569110407731964541608547658013533427986766123173276022255728761713441308385331757886687513503928228738633573577685286548823375042623755093322781458210089213265443292059658113438004651530124637994621070590528663737218059825e-01) },
{ SC_(1.05906915664672851562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.71900041148086937973555321604330213985140886896008582336879680485951801838536757137680147227689999055281146908629782633626208197037156626351590838519938227644843232798799151269867730701592257371390578792620045627497869615806106292625144081738038149002249083747141778533295159439332365548240034531265935825458152081675135035228276014616438214653329840956584196924947186240548057375341023247779001645921678513017568431415395475877280675923689817306500303008012021121811240038724856466165513133102993682e-01), SC_(4.89683896249370553462585077764343079070425471970774934269762429179697954755140596970515332881771953730866664093747597682883770922465296585756705379891189164474550828309710536478687378551749125798283750925804320256316131484501216766671168200003672179899082617391804064193590636351604598132301058797388847653654852045763239641614760898092478871627214104974166613633239197560113865348299157056473943881709690798686908910527770066800305622871129681295792885174909899848762633358144516547914334749398063424e-01) },
{ SC_(1.06404685974121093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.74326730386322818165403183829980231220704758664528761387420793318199623988188287228562182015131457264237017227064746614998591399611548349871711291795824419164529165313313021083410212942383334148070717204428133348646343376310245442559551132343333788773189360881220499349668657349467625660011112074882591775033745941184779921679182973842931373979727864745558701879046424084626658938114080386064766769338228176043903994613285122403749373739641206790074751532744011064257881235735911936010463427099612510e-01), SC_(4.85337788073381287161887688374158104787121431696676269420939153194208236780343659176489818915243470660478303445022418521038772374464737790940191013779627823755948639551012033500994958158596241638089706174311771559123609136179569130774973500169818848750983070485708416951959646979887204315285378894267769462886898693434976876822042800157209311826110363162979732940360749999711522340809800368388340892598573711896105070909259272401472483472934643092264455000104919075952371469577743222764107855405023035e-01) },
{ SC_(1.06605577468872070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.75299967790800326957579466517206035726317102716369270128391908288135911852195765828650872928533486235396733613840588300344811474626458612175989430336995298154686296235044268747799901895709710805420255341939263059476701352744184930828290106559184325681355173874783483292064401232914578814995682806788689043618503855229338630525795134718154627642954761554611143112771548418565760470236546269560167412033082374631027328722837121253712518795218699823558584473298010514761381916663250079831145927637145512e-01), SC_(4.83580361869073329096825498101204074277486615445135909310168681314825584186657157743805083975295683484952524011405934900340956505003827546459728857790961378812777211919246155282298673275109441911741584594258370232586494882599141950379291167180634978982484743769885908842514792665575851154827558487433305869590301423981877540440377311878647101784216763854546447711696835968416389178865142487352325329510548680565244359142338882708937974756485549426742727485384836573096307146944816997897987974865088132e-01) },
{ SC_(1.08875846862792968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.86052041181556804420157853003809295509020381003159632678330031926155613313697651928224454553461236532769947500220261165833194050244017463159967219713343190888940872924004769898668054614960612067768163625708922335854525564217293571956099993449125025760275399724646641465279235965514468163044857266824825421011134068746859211431142030482654092389788984448661655175218265916522966248599635107890290516032595136634978232855673202716459245381925484723476080448943336886986452613547709008515545495817569844e-01), SC_(4.63585785284662028256719823759376681906286982074268964315510196265728231707894853818039426659059071662329061671114028654510223558493226539111242214193138182512619106471156301700943201023981145277827931214941828831485183952462840898818541019222917041622101466393157750959830184099117253138133262959308462031622066276723882938564922305305898089637006609621812072121630293042477785161605023273181599435075615845484386493659177045916992081830224540648958182405308981792762102370113493840942771604418998517e-01) },
{ SC_(1.09043169021606445312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.86826482236921672447449179706708485375043355553691440273593327420168239477132277214344720793711699844640227035419019043695996177843752980965659507636733114075792621556684339379870175681850993461559212924371482017360541975449665834411762915368590952833725617100522956368600899475337046764478577981743840414752227942784520893184527669100141833554190941821310082665045546591131096732242366404075879568232822588962816549825770535262047406532220397884349718398351351345631146467329904338988277781412388604e-01), SC_(4.62102575629358345358193278220239912943762914155557091630440688880915027260681567495686384307691236098241669002192609522100608971538797481822468296643338310413267745080338888521763724449703721181525711685961754882823506150496638839603163061168716786433832063182624298206059756860545859311345810189175501383844100673642551575982167724888306813123033872261489745668071968509975782852008866634876883678069222670357529286372112832471386556313264785227932452858751012982478420628900495737432680259485050530e-01) },
{ SC_(1.09919786453247070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.90843227852636417754078023670181836726969888550715979569761582421788842009811166075357104409373200529353797356296194747329117633898284595748884928377534387104217962809520596709461075749050442194320744109543038360303571206655530254972549509191577835061385645662404364751070825063866314122891742192255538291420008446512683265515675475498267033791336724727715086534695038766636105394307515824333179209863613528055367464822768969790970366968860100398720098161704801349229024135958102907283928389323224690e-01), SC_(4.54310844454648379873120607006670548106504273936308344713803781953816202878153053648467912295067031642609621240314406106159323935686078031887375872538432773046877998973015349829044676649690256098999812181013898252995101567265319895403366026693535145332532873655206578590173815426496998031760122181314810388522458497891773842101978471976657558938033312291904330254393742169054653345552739972745892889286687291515486452550371590537891653627022141132791592981991782894148906882988273880648621145756781087e-01) },
{ SC_(1.11097049713134765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.96129806525277931549746940258054038497901485655442462001193167615553899642423376679625380957006925609116439219224858033789799075021311265199475814709599907351541682459655081479100637148446800988291544390650139527246523980147599760194178750523378433869006158214829518372397604307862131909717684083204284241198398231089136180930422436840921141120636985652941816392179823567868504597525864700725317377642228825193551884085524027677622962577073184463809485907517350000538374062310077315366255920874398518e-01), SC_(4.43792034467686161435066158920582937499712557756861035727252976848950110688968604315912228708353790253735179591661368667429164980481829903835715257840075598064072824002764782072845168539256496422996300665292347918368805696122560306744840297116277600434841582751477611680800989873578927424627380500046081155735784608784217047984558403352197070648965620223868221536453713383650286042124390749422283505134734861735393518918432668799277981357022864234465981498457298557827308215729393447123815324719923535e-01) },
{ SC_(1.11469841003417968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(8.97777993844069867883061833880911622006887326593247884434663254193661888734281508879280574938201245602083449732573669531783925291848639988968125196704553953589366990918944695638753782313321323890118010922221573802474698070006163298230204972483445936716816168920988970067182809681992444702281259138298123085231327090324810628911830766277370721641182158714867679521918526123129893316247010190359472609851512168378609591714336295574522133017233668001470928320744807364031893909492535780311537114396397383e-01), SC_(4.40448264577483885910375157946717295915588861882827699636627088893229732284307726315707187475199224348391643359726102261524390968202594593840733279233687652418354013586574979551135946054471473954056758870692267774395976316275443998231016071492822598582945261015440379122802477725712247192982519270953451354709602577554144286980143085436853223623449058582287231933171646155624518683292834351505770838921143886420194465409487151334011900040856783736776989060019468666458059591569074292685623764135347602e-01) },
{ SC_(1.12690067291259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.03085489385391432138253648320136584881972783327890236915413986443801167844516547603415075150516829537723847711483356329411026561303437978341538137836146631530839907060578165484607455219737967202426787288065430192025756314405129316124792600634387383385213813622327788968426536841277494211116731173272141847162651617309944529541815581022123818705107038152033099618846122887043326857140151945222693743782852899700635161577334205006395214456985256802054905416422768196408511772953988605995576812240623264e-01), SC_(4.29460823430435921006266197584528037733748764494732686246717505687114122156436032393588509554223958375815536774890597205754201803789763800242662124185976046398574571942282147255557615032964621564822171042288133276038438233227333630273947706974237786924602656504453943651543681466245760446369633159753930120725421033471338114511183990802815831071292367895473665758738680222262438292573638438829073833666408315924246288193759142668342008705805569331144834511547498169751495542450410208917334083742163910e-01) },
{ SC_(1.13059329986572265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.04665167392049319620345534586690601564567126821677157288179146201232502224038422158590894129258427636693774374991718538331797402862317721599358645680187066039483561196211510383540514756783626943025645617696737318571080217935639578670283051167364957232392205621360119928029038386868026301033816567702186916413945026858945898884444539133885745012029762371205009252452353561358454635292174982169882365306944417833571913181192416199936541473351685186213596148125902968967370404530630558777459028074348239e-01), SC_(4.26123145237987963991613880409153775051796291409747115768848883186503992232882078065961622999098345555682662519292123005912710960263209200406429824415675430100909189286037738185934817050387012187711110624651352320496017247435142334638833769478198107500195021860665003684853075795687835166282633358049322641609672922147273478139866808881821932563138904972039419343160457702042396592530159562619762244687437043963692192588118989577505084607997788618215259359936094268526404135820006637208410406899687037e-01) },
{ SC_(1.13203001022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.05276449041733672010394121707986473647650308154796820988450667995371427742162893489759701441144972742607911598724960388654184134870687320510532723658273849388688349217111452962357294546426666306484813458191847624209008230503933128657901248687587385339974502942770548704446490212953058721298608200351499874587139421433041834508501966339870189580806151431280630166068971566970973089984628295633880739897314610369766087638070821803684483176989819772942985455660825311309235876553237536013668065305000950e-01), SC_(4.24822964080791397836406140553655164285290555828753133654215241349128224504862552665142530358947448313244621905569067742835864871849030965039778594300582077897713292134045831590878909923650003553010034665210041549470686252200567670421755471525246662755775220033654481207248039696872143349607384217082384877921659747747396282196454772408193679787802467785949018949574031801864194180099340272507112889456095629725679569306278784200415308809374685045388176886359807464124186606204017335800042421388130291e-01) },
{ SC_(1.13580036163330078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.06871742614826080426544902188552969097848459806253841312178726501739938755516444211826915772979090536127855767525899082662224114622182815815612343465831726391255607929734082143238153402639236649734531393050939975703605497311019419494134459261321131507417008707207443899646798810350452119841213643499629620414211030084093961027440802732600831753935826276420335421569830325731475827414663734255422792908765523351937064535216247075985814083775165914030572741504380395913744298728644899410010274648288436e-01), SC_(4.21406742289143540056935238939259708541056211496750699572410089673639210208041539522174047279155199117564705822879329351588563719453367242375358674638504791410169798932363623003826047711618787025951475619627355652425326365677533816876071542203043388625599667790949286920973946005101230035741719273016087443767907768947724151049369977302480232422549185276584371407614838897669352323162936830603087635485697835568603231651771815134621466815124052893383759994838547910992828230478070297904246533640163446e-01) },
{ SC_(1.13661003112792968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.07212645505078336592546993342034347346036166526424106862079138801101414155005079700969208442578490897700209424599475522246377249297244777909388623975719805155716971165782231768203899326560121668452919809859133801211211307056050647136579966629695848877926282267609793465571254118252280752501521262130777941983150143901874832113135335072344383270934369371992512277950310350747740418237558480525688444233353187647739164143786205662610152386867031750885707697735306042808487292463725715483452131810554418e-01), SC_(4.20672337854151122457419922618285571400958915669271978123671381721041860797076368560676678098491061900075566981882144330319995537031854242613255071424533255100142882239789654494110694602824957866149242812165087773509386357927168585463500271966119408996321033682473168219447765947440866337522704235078470443456337386648514305992195750299860401351353849013577922401633224537989546041958482707453618435788414778552015740127056056170683492826198507074529366220355468791722411059343918696159230187827135461e-01) },
{ SC_(1.14259672164916992187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.09714808146786766049489801864942071290026582230688936968489304005176787639966209570341529348132301981885321475662528144306433593266804841044918666299859575282004116334525253416639794749732738787181737628768536940208576836168894664020460269602393048737409067475417277994778388667822250928151297675111015356641185595052735384019315307485456414477227270612916643720272064123936491452009884098169679777105872945543297292672597846182275840226359997441848714050871056195110241872729791036625621656486350379e-01), SC_(4.15233630428045828571165282003422139712498001317957511686008534131679635859864183538546177185653594374218335784773172740834926166657981604452038659779134984969519272193556311849431489541170367150843629073886554832945321793115321801590597547238379687982261245564993552355427076728293723743931166369926846082988125088930254643258317503216425767257590624560371522928955957185570513735646894542449058513305304736526991548661282952311223031495252853637632912517195447976026206965381611747994754319121271858e-01) },
{ SC_(1.14562463760375976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.10967928505449442477081422038075435262620844535733183630539949040639580246047111782396326632112072770317601862316282853591194195128025559773450972473683112248038698411251861789551926493885241718374958549513870960222836015685629450659124563614658835942746664146199112693866059530862118589459649124320556609092325828809814480862988576538019654266897227975463670711733609274726111254449385800639664475604251535601588720621597744311853100014972643463460221171955634192568653477510794182842549976291195423e-01), SC_(4.12477191168784935397589542884325027388357689085498131947537129681766142724657274514830840400491483690289714355599661512898778855332753696947337182311118846864698871919209941904729470689913124105484612422836802503073421988240018713959679754944896616022088589357690960812847247905388912400965711338977743333908776275515778687477194087747920739357278304117980029841210676526164619193233342273088978741163549949119443274091275889686142390637733620167209522300374444339487273724884402412259930353569845255e-01) },
{ SC_(1.14827489852905273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.12057900143872218067970982922192214668187795116948511672998654720440343998088259815687165872732371544982085414715899103659438900521194591600181946583254530683253869914773758817729876505766650911981273294394246385317544914009845972530946264882254929676362709065143411714714374056356926303562018956394533704359647326639327814904124978641240051251497949310161132673465026917592081480819229359101746014566898516905814766805157596467983977225181854087666156217397312415244373301335833103871561007079773134e-01), SC_(4.10061442695055656241592053545077071469873703766913194109513704590498736621005492180749270920350467016099189629802475477376987392515014862532685086320893762312509118905916882348513232369480296518941886810485931101681991846575827285414850722852677268262077026358236462435033082529712139434835674072710092042900091838274521865048762682145068651151230083599431929738579885687009093402528423886269652027467895932317073488434254279724863916498024223536756341449912881006114760096653887317577800794879031173e-01) },
{ SC_(1.16087532043457031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.17152307556783010082604234062507416168862222322805868126512908874350444391624031476519790127724286350630918661654825182157230692102809969014735976181937839485822838860652846031092583424633641391644860770801491068731915330548036706668019531194768932514193867386550118051090351625465136521387253167298769484099254783855080887282648257670532689477740287568441339407697982292779708547695743644950283477211098450598616887397228591108140780640496617665200172077741439182065274301575092569036291761425872831e-01), SC_(3.98536880029023294278086460148693023952159542068516426102352744170696664558788735125994072124366919705847446617560472546619823569017866513210849521064383900291761216761561162785231326739724126611432626880545467591218595745274715036559709822417247333109223675317648292898183991722665201709066965713530805920987744018060213090984936415190464295866173245814907161799185414469513053299582009503693771539080362564920256173007163387568260952162357027452986740446686993641840055667439013164437546688199957800e-01) },
{ SC_(1.16834640502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.20104186328135298496957248515380925598682445083418972994271507128899677334354024738351143080520758708488667415355312255775785270232662089553577967970873736421981804100263026490020568371888346518033676923936168299859080948491538582930383269106320961933704101394993022866629525312057629214437325611043108130115817888749357539683062625350003630331806028055668105891089090457634237162817066604589680759760697303496357583924370788467666847648455530619909598563666998753300878386929067426913186736757889555e-01), SC_(3.91673698761405321464513321854133469209236441434776579154828431768579035949142740619365697318411018051757099441576277596809431746185297594423424182048115058393371137639111683011078346738805323243265590930585823423972969974096869859395067920268358674806993929141535131498160046100298751958510732699978972390385447219959583475405359231842797831501966566056834990709022102530031667881663532298096407254848006625574985191288563471602091514320519928910561533915950755452343557100085313807737796666507723692e-01) },
{ SC_(1.16875076293945312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.20262487461150275570854849780709403747997606590129256273406002091397926362725679700314769011519619363170611596478988430829966031422891691220439160070374308583783549778149771561058934629067954429785992714463951215361015537223308002891453548856025459451393659632361923622571301382221566318474633889106056646792104013701242038510237198194757991668351095063614184302113070108687939723485895001025253995763922338162059728474300489054051672986171154008325483425037217675490894835207039218324736935888548623e-01), SC_(3.91301615345268197670216410259475825479249814948784542097263382780490667222684759025749178892955351123015057685619256664176699053210800289407983698386813767660647021867504064472580409883400638687828026689981725185305365366518569508764730815075227525401705234916938878520111673256164342830245867994075805093498516476012702512020012631774741281921364755873559668935956266229855973637764179253709544696893649654956630131135234060288014322494402701900781641804665327126095941387136867878734833794824793014e-01) },
{ SC_(1.18831062316894531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.27739769191142907630112261054672408433827074235085526421482402528633827895944923714163948862685153260396240262340145527560063155405527940607146981993573266564290150967731878595488727269617050804601144969687367169963627158725306967711203122929341189833054178990422555120382808115008410479562507472567225958915506070205471388127086879938312382037849559206758820928332307712139310928957998804194412914452576847112033346093713837229781543082521999039397303555891581773141822238740680677363969056621960270e-01), SC_(3.73227706181045574613892029421809688445117154458049890104744406554689644882750279997054135059574163615307509496387105911854259028657360416931236569295709228060537679801566224951288390179021321788619702625697075265845040508785342707672119147499611162773659507482557860755116539100333611957562095234456233834164399613991535254524932170807619064048654686289232544975838193264702607218242419552506465332505750536654755302782459301575073829888035473070859898459854288592606628531015905515215328965859623271e-01) },
{ SC_(1.19039630889892578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.28516186454902422464142063253245617835831993322076364693117226547496030344560233063981553692632197906206457496888066502992250708601341632026473576675604009580382753778104608967714567825230081216174626717466594925097943661283821261104432382946816906642439643088433343511790123173750311956101253560175744184353523795540070855594196730896187778475843109146032220509648721592227300000668194085625224264770046743164904530985803854668382032903091457367068937360346739058382131029700969766599027553880587035e-01), SC_(3.71291922200369017368204717159193337291160314265581751304430097275815657042961764795772603591106890014199979261611780010990427181966397890965023529008555433311859263133002971046765531291467046041422198778207159128153061796218688191455896913293767037947336850496541997112417482121395773838067935117340279113670753379915713771543247146237271051406985023946047916102811069959567507384501135518817887548474039934107670070502429665488964979540037453791016826388783962172031111105650673657315136169550774260e-01) },
{ SC_(1.19096231460571289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.28726191059670008805902334584454239548550218003865918387783274515713982271365456721907937011819322308247639769464524642436387203203810279099134490238994363363782132621188175076050990311114605791787695124584795868845460986309932894230042170346685242336929156221469507049469718315497437836489677855006366723074385513946845372946221747502328157358391353990910345204305499847252456480752480911497808889323910234417398714462949933866979576468447248893856074487655468996673069831674808380773383597169728443e-01), SC_(3.70766317294056957066417833495763491113348627015635672702274459845001395617942727417604473158835895034446078418116146503438699088887013640040997993396866348083748879658746047274170403869051444308176371618684989522258324871577825963013946350547476759792863601524048307707490592682701522755101838488421372094179515294608847143712947490367777105233444576897531662349328883091349236022669451957605736146691710067849435432231268480058722914653984610289840504861644546434752499763108252506066044223619930146e-01) },
{ SC_(1.19279956817626953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.29405814959228531972281872115577848744241330476539424322207732928371094987223836641781173065764693421962834615341501910662796428871653547176129657230584464001961420818793097252905233960596169032065469878813696966372914938789591824236632930918109243800393676264317247373859532812738037382380071974856343972472688501422232135472880038578042720155517847610051178510453262581202097816409643920956443406712243536414770069769104615562719796933834376565411943382368723980627719029012450807053347412219704017e-01), SC_(3.69059386982599663479268899014918242058146304796244059493852041445394639969033313487963675689101031682048803705239313832756670076420320497105412508794711632075221423978497396573301682338629221725782129504408874038643623931958659624156623372278817482189559731742170140152759634226143222489507613263475147517846822391485630459802157747193534639725043070387657299498871201980115247626547063665279931867790323452576604332369833960637356251333916740127183701321319256002780080402637694714766766303212334787e-01) },
{ SC_(1.19591951370239257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.30552734832125840052974015459491503538231284518030644709405832601114655819786012336846100936680207777126596479633402462155688943661893846904345931371744036668113498108437433881236484618382378315472957245446601780294109805337925926459035813330580701717675021695222169203288405159988537677776806482266518848385138258917056294589703550831979726470477115328896554634634025613709309896598964607474308036025472101068437690489908562630928075259302077592097964344717678590374147915076540975888821010858519035e-01), SC_(3.66157899950897266341204379353537798419054654796604975177391472417424105792604912894740645390003868771294538477949014951205228558913570580253857432999788735617990786196602185473100952466926540228987836275968822023067591944084939010810167083511169035277797744091307218205228104199829296100195491260033447590647463764333346476157327673006815488595244083055259415907488611696454882856572283242204473890087698344001008271889415271602016935370350130295114514382937056980246894560606589697741512051296983056e-01) },
{ SC_(1.19689273834228515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.30908647972181035306415717863675078910016730211025242842074951415346666558517182530606465652617602590503103135667675401127384688452760685047951125160893347618897936414760230294770147124404072822817308689665138567492587093786105929151601743217783170480962687630249977962066929583403767936082548393140331559208424623662293131882909285270562319002202662931897538475959477582192591513214623911397240402575108754598773509233723284574310101952889917315026274370157180256653172508219677050914615205659980002e-01), SC_(3.65252089837424373938727945032862259240929210684074233581248975290379302867642149838224468303772701597352111309102217895680362856214434627802079638333831135765550971400956355746825337558988814224935287422777362046821445133407585196406260734897665635734430246512236439325599322156781662484035732365087377434537435860795506489448259273991060211231949210335294264543504144693688588523172409424441977492672322754209085937265193527550849457330550424215617614405156231791817612582999509373290207256377986403e-01) },
{ SC_(1.19715881347656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.31005799517589437870242196814333217476995807649499693529011070735117435783018891960654522070935542030690361671439020630259187276793080845112359698698329519869008736053654931150687543898355294413242013599585226095076607506277217378010263042670261524175168832644995554677688260009151311954304087058469724641996779642466187883365404506690773461791353735112562733576254065327574996637781135584728439660654962080740806431927665418870924715565205976970614881780948820952724574977216025534368393095717906537e-01), SC_(3.65004385267648616527954865992296715275029468728197283298369369930031821727862070318709641875550598883423006447077958239050946694834283128158044911447498221867204751900599261516784488761688784555629755762916704867361218920515635517453763245342455078305608967286538908919851124430404639267094726214081305999445008172503091250993696611411571069568706856976299567635700760301194898486438742662857713008686781080202029537398830440958546777053699027918966553421725537665837567022045705930444634954470244354e-01) },
{ SC_(1.20042037963867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.32191331430111339261449895086549029541470003741228205646821040804686851621146871816651400894443737177018463008240204638830453840674110125623289812708169644095629325065149010200905012268466419912209994111447231809810189231643566978559554114551916902520362624563910880568441884854356628502594736765571672265089892468311580935293611112366583177210281808378715470173722388206625207952034210304617334678964865106150827253512547516634051558951374863846101108535417490465431614432426061074316072852256048091e-01), SC_(3.61965912216269772828200120428024811920456259669546381965248128788391743437600116259321455141954281630073977684422263911816649717453219170684896869008765512815585782466216706979121600952302690882562786945071216712298460527846953632063971663355824055031885453974118933514177156551266644969344183771388988187700954591832948468792829626512593460301367220285789086705214738415671060717347435359215246280542287945602204254892492098886152245370062298214430839126574533251827355360921125829063528873727247319e-01) },
{ SC_(1.21129655838012695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.36072925273237052589741354103374154582179542921990534420565853190994871061359180376574053467333730868088721976674265695000194820004662799610349094846048824061780209573454597704080611299528119256577646763302585376602803450230153550952519196349901875966598992633061265243075394277854693043396843989237317378406228134060736859005383861136196908476811762891497452579890884383358628813653439329111984377402837232792697651409263740599186857664307725963774301386350428715153756030172114179091681771359927544e-01), SC_(3.51806024067816042923452710343957815012239304381787658203322727361903081924558982395548437902680194552661545970996952914544963432766599983263188021061667602696823019854633628005351974297646059178922893378662728758461925073548375986644842575266392632793345025076736067246775258211147285299896097131511715201194597912854700786474397178696076586495453199254850554056748961865026453531107999621927404659841430395128647175395965884488845322038120983810672480041843000599942586757533592915075486458021630309e-01) },
{ SC_(1.21226310729980468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.36412525705292113005181122991624028179942861503165469987226035896376047466885319902303883839379741451140394259347926363975217804886369110016553611927193486731484198489088957178930815051931109152472621108575791931072217293637835723737313994641590019638899944999808902113847285921266332195762292416864655779343136099559172332963707123208361372838218978908059128893432339110061768503598206594598946807980130546308223430908284488119931468633860015472526279070073415117353762389835727974307845340200613643e-01), SC_(3.50901099602488617933961662609194577832551303168379986695120681175473236287005062080455575167049970587669429800258767273667243277503972476292879911386422017336420102780155154909666335311881195241771041240308554984076113094352112043029341814955976936909466185721106124354719414139265857104084452167918558350056175176101945356049631972945089068579910004816914095211003946675102731776786465580977726763772219149762094975256571732700846263127621206586182138024859732939097232892050622642147713701363141822e-01) },
{ SC_(1.21460151672363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.37230515170665959085324305435816580824334060759925311235095988583363681210882971361015639915500438790623872866050950396566896332921324713253658675617981474109530663758689150181212482116443395967805522361320173948366777777549194083587765101013923132282405066334922427013881735709518698558177470965263274689926317431180375953081525097608464790961485003864050369654033804129195503199592098281100081388796893319774893910509480688105560424395937634005187859987536277387268150181832415882844731264499687596e-01), SC_(3.48710426332405618132227540555903517056786716385788196839483490850475902035868776849242484073475814113679351593802158471206518252887259870568005759089726021896451567470580888732652672079444087984700684961404157116233065933905865181127124685548895000573634425733126645685362196697441178043026624272299059779697880380488364435795548619600267324209181423660077472428253880775703087620032376724562736076779072125401913269088489020843657385728969803849312555076792481699941332776210312751607467030287676880e-01) },
{ SC_(1.22142696380615234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.39588770085819691865847010275003682328490704428234580843509362105491428163438448710042684284109797054096472724012751496536528244522738064907879573912386102664587700021103931492196502634778712822226419769182878104076466423635618060502830320299773502938148601794567184867686070187290681996430307341965745352810807762976757865055833978860122338848801972274049557920720539604317776324957070543307660085092806429545140437522026377782954574391713807786920755303595104855319858899110269382668643762661454669e-01), SC_(3.42305336108884902887927320575279559613447444606461224929617092896182369164661070824620337813821007909772304866662213350426972631574890823317729042350306113005691776633881243301450523125297179600210819849955453532967854941727134365115369864028598198604524465184765997818343891127520544365161238551649752264818554220850963710321530446994420439978205574105707505176591332458227716523834711613291351686308332571358688396721775880721873257679162552336092352441386034121556519027449256660873800382080061980e-01) },
{ SC_(1.22208547592163085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.39813978559762047755322455989924734422740736531083873105168806262703082104006400399243451104269319997589950335686316330935313067840719316152982821117636452214516953937745633986997164220794471996103513775628249098109014694914685001253018949349415846758651766091317887446106708184940528230682632778052559685259330436735642221324661352012902839478691454369461241349713438471782232386917837439816471075185081605028486721931552758494782311573639335087551525116851545075348233789520484671443269682756137400e-01), SC_(3.41686531346600084300401784614799893004757161767735513566812293919164675411857921077427802420771871729690257003944133859117661387568350609422772611494688750011640503072888589321701691855742721189777588064092740430186592868077940180336134880261857041689621936378609096903010378220341856304235083749800120130002770246847233159418787899794883146762692009200694121724147112767760692147537325878164475152361287321256285655447786743373896368939341494404532390842764544084149054784203820907870728211517025269e-01) },
{ SC_(1.23126077651977539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.42909451828498508606474709375264723308842078821339777686217320508975455062300122709369552657428197799104481963400540519817121209533671060192044819654074230269737951307056021548224854806022284259103862348124304810034465177910057295938738114519751420463405272341889617811534402988525056538384348037656428758340675621634449278436308125862620745919116602430281338222697346377191632713614962700759746388254996582791040894490980209916664531339155045033869279801435861516973847175864623025517486143969820319e-01), SC_(3.33049194042682605175241363784040240910285245708277205252748368685755534290141711394993998500991014686784430027546221468679903420140548619407963172914406334035263949612686570761312298281247646711316376182219248163711930542803235076769721715931348363633226871451602492708928131518862713071147775206684552059843068760118425994684230685879647854670292765541806378318880699327264466824963254196260044211725225547447464973750115240147306146083186263336647077159866504141860017716353241263363657015139726553e-01) },
{ SC_(1.23186874389648437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.43111760599709541035588926901094997566502718811144427478325174481620111845861591297173944398313017102652417632855534696066465013105557184226146279067590494633440907772328572170475398014172118282965409195033028893604787232003194956847056575653399955047984495654919094634481779204010157424719276038743419254660219469258610283432010853914432281178805639955141819568197338491600326973895231948028123781044473735801311915011507832384237593541506995096256938240840412181938542889141117184710113419161088416e-01), SC_(3.32475874340554457877202447234475014625989155433126288392599830437752954563599902656557040540286535124631296551395636307213098940140603482531580069603155304081711132781783110299772832553357145878218145112077910478105454877237161308232045592413393717909447388261991731950085718673812733427205738145139181209503016951452142299343473400624768159762695213151270652676435125559371142019981631428959629983259386047734915266850184479686836227393801237648335275044395133503637188941980982471598895745239031016e-01) },
{ SC_(1.23285484313964843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.43439156217638164611436012930228382689755438982293909056748709765218557125176035116803710034077451195147383026645041830589413044047646236397156773656436176560487896613910491818283697348760063758826608457400150535252854890989562986838851695706325895734051254961720112330923499814106800806774483808233423741414105583491907454466356027291514010057864404870966322389372113571153221924917442689876389650652168380703427394113468793521455108081660048558837404953698699159745637539714086892947033196599689263e-01), SC_(3.31545711049548839257000706395881987887544852335637955820041950634792349777877146091793726646581794280066231025664093730708988019858153187826134750956235714639167905729537868470957660612761971312259990996222427866783399658798385953978906208383850722176584774703718987266959132557807629489026453894218196169262461930928017614227977721723176068755996006303058069652596783549031021267218301715854961427011462057088981815919420755933964243770657110629374546019598030758679903822363458102609871773705474429e-01) },
{ SC_(1.23518657684326171875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.44209667096123697921582138669326176918529476690320250447678223598946323362005245879411974799045920762058832832985133487447485408509583010708288946546618259451679406538212487653483826636128540529638916310113140319036693842701353614311952050475953080822080569346027859301545516626493224857004408304854843429296425792156637522761688106782567403043835154816696955555753046698752637657160792857902429886164915472067084443361250512545205817736097253824127751766134380610996601846700392801742914543911037926e-01), SC_(3.29344962861476388149406913998441912009230904653412583399999352256824561235741071049429170589583463558327490064123206934737081606018173969087932126027338556221875098517159871251691922634325098784219711062126107609916963680928323227478737529546256658245101678834691028532302311092045323468689356548157944765823909411811533495497374371282141490365239488023630772933241701929407601305723704383237378697819408791569514437882779120717260032221738642842405948248710800015826687135545568410720727074739930280e-01) },
{ SC_(1.24624252319335937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.47793106505864155710372335631845478492346645144628703595395965467239858524618751432955399079998713862118814340871316979430436352804054698096345310731993977194557526214858749942483204958723187668936619789545938232937082744239886585206968488048066729179235203027526167144649855034638305660874263285668201906999849721073117980803930530336641270842753565877517211243948658335212510450677017982023517654094004127185898571544639567951870938504467089485132320187321443995300412459166829074977205069854128167e-01), SC_(3.18885915744116307991824460697936149035981956507037394874207203343766845897008716157201515632181715607046169386224158869719338499493357779326841073732915200544938143073386213701049092950004898330773411106540232117579844388237617549128045386552657145803158607454717496911937874697588703219813472297898156220846861451173907218251333262291730714466252844502243144054267530253758685787092879456557743676371047799961459103016257328082697210759446844885660824574319820570419954670583966584126272686255168088e-01) },
{ SC_(1.25251245498657226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.49773856565935007970549344512699526547923968348365818675525781601959843817621732366867203995655385937951745643136104129868291132508462687598553162794100451077120644951475808579961073311184381003686892179651005302578996007940600397705098474530493933204289689666095106701306420249614061152905549589374731140175838517402015869865999694639591169784678467636104934359422200801913233216502687786281067467908895843320108471480144038611249749161387634157417449327368632565706141541919713135041484839611347573e-01), SC_(3.12937088539966310827617816863542443537540805689998483350331382819275180168620190928606558064685917571580731924251185390060638335515562473056747532029126629589310820045526353157641807788806385485857586135006880770118838965302001129873513923219007500039161812961582202391858173636142000187506046696434678802335539416687869723789979833360079132724807635630965800159606622528573160421322491440022849488963828968641231754471167254476401435600251010890399418114639079564829480566160639228869800176144301207e-01) },
{ SC_(1.26107549667358398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.52418695956686480941850006541690930239761325232741626838515846936884406383023802081370469754681074804545915353145563398074640428884079797524360775772596192826878326965373666553059294324922147137549306798969863433593411183534403373204507899175938685742339242571442474706314723892564187399965843300144380287591834727003669115250840682958587379968031653433460770442328081770634773759114952115757110000204146434560295139713438946949932003331265057495416454532719341146715168794305719687927911827605620710e-01), SC_(3.04792761712224384443187440326485521277019541458374687178938884329401562377594129973298941372783852531469542452088127625467352152764900393544352757876910877738043333639268176601041834046867143684929017539126542262643786563076751353073667362561187662421509245109958895360976584080168450328548225498844675255271705276714092191942776847386252873452858675899976559091285901770662612613531069332059711175867315451004429558937196248454798368082613262854234614462702461791856600415426502994212521285961939653e-01) },
{ SC_(1.27270126342773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.55897702698394019729304962915783339726149744494967774619631929617070997603359304132004967665208808726981185438434988592804380773810408457710481407880665329100751305932132573383322495994314169335167702811247724242084676106663770075572223167737313811281221336916721200692951939588598623738309294942523017778375982939758937559540634496752120663904522086416198205632120656934830706622226108996378750114163976746954239093448542669711432898214610113927075962020141106214972505729115311860914979288804790829e-01), SC_(2.93699816097887127043847639571997202640909304251711570871621466393972194728942985403745669049952639981112592351372429654141213093184117782687405526804809341776471067929090431550971880375019669575265668215408329474561215692609890091928351019813993747087345436206926066191226700264499898302760789705916368784748646787652939680945907860790073813947944118519002614505565558758391723561571904176502747834651484436309420341412474883573808977804315917279383947293912390846411905449890347664818172102427869171e-01) },
{ SC_(1.27369403839111328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.56188809407302140382519114161585931061089096133538031388986746812799011766912214432553468991963837135206882860816542245983053233993094277539431446743357262977008827009374763284827895016421564230457917470211305717579021833893032138958039974074703001877337239390215038737106172458129186974741460670394259661415574457285603388199508619494741444619649181349790189072222296731305345037121134600074660767206690937687887307524014164116679464591387661354610259197146582254580550754314222778854512940941975451e-01), SC_(2.92750680211414746770844834430161658350022817838677528204616418770016411973049638712003593524209894044712330474774636787107110946674545326257267713468777492693895483352299710997078212274344324361670663764821113729265765705273387211601224326658092724978157805173109712835197097971977685009294324466709071461279772808181639695341825295953726444706286165065694230687880410120205268008012484510459176080990941425970128533715782135699234119402304189387675442401836055216754433030476408800736483624398815316e-01) },
{ SC_(1.30864286422729492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.65834124448968758372373106440044548226231466537435973276539535442152788754757669023365222845168257027951609639462431742264781036338666497665199597024074054375228032559150094452571866604853409863786616373043000523609661967136561191379693746836366992799858653529442457581064828032990400456134462903027511889608735806202396605802508740621722399330444196254992207913243456966683022884751737196688975606995192636674990845283225951184164377590119512424796579386202619458608939451290244931218394255282524872e-01), SC_(2.59161038834725172326566408046635655484407996683812930425596593331321052560858900104499556422763595724745722744888885012081379301273496392545730800427206859277815623633316107868525096561220315385068440356778513672994616088760741224012707881466960081026623434606955678671397521489157762162852500111882453963438629697190599563321621932651961872959107980463673537799267563006925080070818207097906067384521865616370172042193402833078119193467872189984306913742687629125585377205706386812697845482831875212e-01) },
{ SC_(1.31513595581054687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.67496509157828201912503630642992815986208380087219453489786887511179651968481635751257483296845739295085326766167034119259758101256282104848357585266183737568700627901779263861176788050184045731923724812808611848830295658768104434977347403943462075868578161953644447327877542025293961158175558534004721039058111728107455651102584979006718701806015009635716357761745543071562343687493685180873927341511807385763241403614761872459414672368709060179385863095127929719194061127988356635866834884782068660e-01), SC_(2.52884370350198689836509793238736044053809213320990655336570043176388019869051847476197344301598145790010542007186953761020434865510582748749159053480789974879901690784775151251388330020872601298672488507661166060231571603598086759786500882133991853156299415642748708141774922447253154306852506112676846419230056649032959277813296664662686618019664034010059955597878723714332427869130132431251976307122761466400368086425708093504776300178852667386689097710596288656596635943810817886346084363546615387e-01) },
{ SC_(1.31764602661132812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.68128218332560022849151062862300290002816382002147406561122634954071252385092499593221939459869865873066337189640214979139161323980903390581209894104049320132006144228121983278855133934081123751398423334417586315867558772265879539165555345783090329019848075276239846426043655137159253374607313204375273679398119955419857249062342836994545408747733385348346736928923198076278906695111754630162410275969412267739639630188845066288458590745754843970182123421421688608657347772943092724923457373537413777e-01), SC_(2.50455091519863080006567737617454851596080837568745079926261175080989570659578673726466242881105045890267567542084835065570433112497594501436101662253622732503676986129627532303613101872288751267994782026817808674381109734346995384829715512131218462764261510046662595323365526025933703952987521614147369983649867368067869287418530494000899105489059330421493859551233237215950932397638169156132750140846519250994070230478406360849077447064427738507497094901597123294713837766393265188840396610325242108e-01) },
{ SC_(1.33635473251342773437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.72644210557293654073542060086406625986306398124088406711769491620100790420760540376060363403161717387226272332636849641619930464925339803944531929266603507465706542065108113136867046044362596304173454484263029807116355953708147595143804202867331365545502212705865645907773286493184357361549950316863558913715091890954079746952857204650313515355050936769164887155762123877636283908302073199934412972530605773747022445848422608312918511410963171951321236003915112872694863002674706748808090242394674013e-01), SC_(2.32299891668892105578430805968784557325686629203513649173751412362396164213323697012298385908705298284670606095798077758105179389153786963623253782758621229155164273749408854178705238465846547675503227965043919867632856632606716985862406879880250070563911690782986211180882566400301852287461686831670836491595633263904306560640539575748724784015673555715408431433094224299347067526371844509941381534872980427669628158743417929463652365941992113826691670812353814751524843826719411056502918081890211682e-01) },
{ SC_(1.35868787765502929687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.77589214007614615935359180562771861203166061718965339152265847612694400557778882424825354726559526679131378190463366614157230082908624532353686825552961134847897731092392578220212878039351536459454543880630234224638675041433017159708614328391485993736084563916512754386563384570120566452752959876512351316136595224175505892099231154074614562104731051732156166147422341586213471542961144619498740979806752418525675494902597419595759347605843233173004190642974259705891490524545835711058060322698924180e-01), SC_(2.10521563399035850846293344058639880547734577421953544992592199451531878600608929560334781406775399358068856520818402473362854370439100435712010515124940674627273883774342975022165663149085933054914512215716969149912131601383737072603210633382998215613080762106302730395977878722923513835555432768182548632737981806045024087070109825978918059855411453037534752326280434726068704208466819871376329820900372129902093122395293491407971401671172806094740549791747150107306999208279058576893941933708045083e-01) },
{ SC_(1.36104679107666015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.78083095805601987454573074803943470621757804524696784103098140449005639638284361358083062934010737831830783063312546836042296335609289925732230060233333451407917686529015877187030416793493427654808030710998148092926731919176988787289326234540198018431288569972368827591092955147419949536865952244750483357798197466999667993829746941833181764203465732330156288972592614004040835500793593364074829607037302415716045363105826526873673616003512747621072743109454493646420480930668081089526755822913748283e-01), SC_(2.08214931499471487580527212737500656418746457639132995511351210615068938343848506033358245359661394041703442281266292810884445455040891225931387155913258751438141035226449517065251786763225847298217846143225641509156212605618483988613037250889126356687450506812452058374859588919863830693505452777076935690791833854447391737572849335367943607136147722227750905412690739098366592762468180904934634565064553997996536850602898143403118093286692072145247502224184666689326027284268178665916305253016113414e-01) },
{ SC_(1.37006378173828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.79920780655323574325048032290553442923802914302042449959517032217948051940150581020868536605314435386459203898708604722427631202543713090326644807022874911720884509405045011880194820377740065707611794602426514158781758693026900421398037712389268280235218067448311153013979648678838706874169795220643677990190870933642180225407599463343126098376439581164242726050065349453834012003763877617586777474403726187072521595310016909539569424640310905288009934114205082383526315485778184708537009526195176275e-01), SC_(1.99387220352411812643706162721391972243201742242193475787958496815486029474907430687983391246649586894127152003306028679128609931296024818616213480432671358196302228903498401651517092937484268824835198862075776807808683194099912324765269446453036769957409467627861694009583964690786001732389779565429776808515515017736450229078368649763370096373452237377053728657912280976882682351106748213592796547048629363878065867407923229520949463360810455413121016679444030724292708102255182692318351645333863659e-01) },
{ SC_(1.37360334396362304687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.80620384192341085280818940390688592996930713605209325865795280353167597318617674789286503206624638647024427810492949762186006468639432931548924921990375287718613180115266058663420054121130510011093500432590233907644752304593295495326263164317713133789687740999996186308542015177315380533224932052581739319510053805587922178754568124801554813628698943853009281775953423476421434190241967808449688959898443562854457700532916910942532208670140823364856647585716850899032174120857753436343560437861952422e-01), SC_(1.95917488005704498796109337839462311020563464533356224712944059814078278920561867832819886450214797187489939587085888526835962063802556392807082653670784036934320396748454552006182311130900790213674388500137041259099662844726092679222947491447396027724230508542332716957208884897294938245847990852513593101461664259719909071166581138742150607442617905593170491086391650790888740658301124572273285141285519435831995534059396058973595699379902139733254076628925801545908839520914611947748889644366689804e-01) },
{ SC_(1.37579011917114257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.81046466700929950246668718727336319603422607523486257737752177468390505792022504803078733499622336237569514186945730764657819229620157949505190809705402556212976287179933461585472651303039684488150298524723737283620337889897920345569054449457671306492176333362444469978214852108745968215759045161643806570983234462686298094463645317631449549682235915973343298000368089574358566062623971987254220397400720855377779653358609132128526401680980996939106354687468832044201823937757703711290958140670326488e-01), SC_(1.93772624933505873954526307542792857908119793419071306140786180506660673347469214081509951677829702334822528190190251019855050074377834646317392219744580866160361489259089532138847887047287371437920827424743971700527942058451956937430528654494731672514873731486172998987543330286127627257355443896756851760672491599793182135160951137115300143519605652789579329580837860650478529356618782397844974277048622432233205547812026760264071970210071830565819625688558008931106124303619620049393235119593562032e-01) },
{ SC_(1.38131189346313476562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.82101473951433113616030058028945882827700529777659399626299791888315472122893848203122995186993249918138656191198348734122598050722371471038505795184682249083561762735866757721714072734782810762657563932528073571155752961737106346405934750501112839406941959325824904467073234302652189813381035175894782823019339402643440169650165761026339375821668333766483902789516971596613319142475601840957903445030084283730515297138803998334696043029278369165801886898644339520146169940327705952108934099184965051e-01), SC_(1.88352581247039312796004784885792696475588661060726147078352536060782866764818512994083123827030945328076367388613370055013885867405072819276681817228272086206013317353664827033343035360983767879057064569076498155542057096622655089221516370992457224624603085336876933342215313240050182855613227752921675497848476243136725589964476896553566468837178670329761618580278911807843375144698871715377420530960628384366594660855642419370115116659211832265632273031077713314597591180856207916233946464612619948e-01) },
{ SC_(1.39389514923095703125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.84393748984697599494255913228519356500443797238149851639494732303698059390316473854670305205991023687197405840363981298453269251894181637148434103534542073081782734924644439718021321689020417889028131238320809491247476894902458941394325539956411459525912507857369660076279292066105700446665056353874479050722766877388177176029874265985210046842349030812087425559726948928409641894759402387263491889699421786524411665629018248250590827981422167551410817277634443200384399289098727342057754944559471253e-01), SC_(1.75979961813418330463246015346785922996793666199283524740663794915720273003795539409709892289424553224094002289191965889297876634196707865043091465457965056322032412992884309526153698834410862154379415726686609410706343428724975862198717229665810504104156779671263630038970686942846971450207400214891909970201246410306632949413399102387736446279872852586166870223903033833049605211179096732670493723266210161088674326547975842093333122402384746965183213793318184772815360336300118983377180563926983678e-01) },
{ SC_(1.40098953247070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.85617435504275879052838351473422384140194868085037483863671989201067225619425571115767482271215770496859292537044150740107974152029149839011472238269874887036032939699625000971850206897702187973275492769390535345807412515353236530010768540682551390483886603019487960710475971398347149061935832649656222349711037952773450481944849281665638872163332303576583218021159726525048956435930017186229181305861378734868720812113308950238852844213779810697871054524548057515433074620560538926975013561664615709e-01), SC_(1.68991925339569339604661496424208240093498383477146418615565299727998626345325844611994811159257205982575484035326636993024412027870667349093871119983265587745698136494573535119564056284191038785903655082458002571428229328620639699045804331852797555083547720368648689121007274958950735582630052300967992220928569101056869705451681433318191980600098912075548588729718304540582582836247993674752298538944618403645465934491911133294241205561058621342699438071895927728838513098621388908181305166539103073e-01) },
{ SC_(1.40101575851440429687500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.85621867154937990161355741456501379427686529270485157224862649254966022362110443495973438200525536463242664277447890348935691893273536099906456638207162825126576843366652617955303374416503841499587078828970436237045163374727430933757606723294288110511877325710820014268639975529400467350328864739151245994094157058478899664410923370270816718688905971514087797141858843595803287066985538914148795677452085190268952123648657706491750188162484814691673998674800424899515850946008080603852145559474897554e-01), SC_(1.68966076435519353962481075898958477545026123896902065690890676310569504798562202400982815531169410784648901144018478477101528696727403731035179515876213449880962005156426103688847976760828487626389281701587312839145657572681155558686983505422848380769701057226774703457564482651992554580738823901756265324815389555165826073908210955723185833731466146611384227971387719800158982983339977621693099935688345979958646148525722384424484338569211001385904777013357253104499183168338276670653879474853213746e-01) },
{ SC_(1.41011095046997070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.87117858586820775624965696236564943727361512341866183156650482788896380417914897793279124473515322346483600167082027894761850185430736258876861651247601475778439302962028949350765397163734219392424137650555626708780329712724024737895212969230465645942701271933175672679085979373625902742228817342906406414815750958280697847446219322689649467627772417102771255292832906277996968684852203671520607993434988730178276813572827981795425969341197977862776742515868746300221678580739692370360137716379880437e-01), SC_(1.59994791349497692096310940926922433291994198883744468744005470409078245893996153539802601598737060687483733389757045235896095957400266180075500992364021539221917108997307230046574125251952304461637030186471062562619523234193692618585774925525419040975961516212188872188853608468781398148788251249659314242448691451141375364682157224189761502490697285106725955016342688708103583146450318454637473677756848148946111691551396903396081866701675441083001752543398185132497315372365608059051895513314949579e-01) },
{ SC_(1.42533302307128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.89438855795183886998786581200513329076368840639634376361595786937211016205369393880525718435864806301335301282401183701106479251675469255403508578069217193848364943684508111845954935570776509998533134936283124529539828304501881046070786528700113675273503484680453633403668330643191207048485739965410736246347483019206275407836155671132435908585093633309518491565179092602495042637961696521026914991832196243209106071985665397845319941148355665755209958322775690891457420342651185239844150245596327947e-01), SC_(1.44950855957173654196257134824365513134133201450079523719697853158105525996193537681649106974620513605006455769791009116959886538550266029282692875824056064287247623191024923923550064333536271085049062725464192365631526069063550184078248236006479591026443959058514786355465785459602357875413912538891346259989738066918341767850367928358981037418135328507988540823626368932440669322691107028465730644797892733370773348508342557416764628129238249741504704236947393363136868043895800163017362575013961290e-01) },
{ SC_(1.43252611160278320312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.90455894212278646682286952361698360750484925762077663955915415425200092204173679261660060857165366316201501332320971411870372367383031067911179925113944816094496441312871796921361407697738122633941915991825088653087265030078891572812182705223138859284267087996754061967690677246219005138926423479120522417515704205304515586665318577648865337189846259000229102696099755825093328193052696327092303622758297319344389570129955773532709225183232222424041153368966111478547808896921857325177982548718771158e-01), SC_(1.37830046144356675250872410437156137418445970379445568874986063770412578264945685021936472202077012022182697513678356960442192390943674941380077529122281760664567764993131196070130465793335691254056246930897428264833632852315773233778709341455031931560142964240737564638602823711734409767185825071947764997918950296406844128918029320519728667997040516955426962206122258344354400413540432792749979019261016751931226200374985412506207323213643522455191228802651442335019461635933485240885233775534028203e-01) },
{ SC_(1.43575048446655273437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.90895160230121997702288446855581405901760081230384889585645562104421752177021923047531084568450326893227703184655477128300485696702546084083636117118819135371141893757016403129691943032247687888381242423926955796509656359721022387715707166150977984559307365089946156361069068208284576434164645941608103890018860366873703274312413864716472668931881280938821103122161489441182439131879713935704611483556687225869596341238675045956872266915280113063921753191332747400724156543076912116754374874750054973e-01), SC_(1.34635736090091818094528204085818356101807997017845390670155478403606606771620855953189545331098032529074637876125914631803457218671363025531396769111554517612885738927295369006431968049166339715409645435369564404672125253442906034702151099344922917418994177825002810347017671706373141382337224796583178154615455960082217078332717493653904158690181583515356788176235405991881547549149452753027065371587653125663516719462714534171084475796198006533859917606833628107186105787809101967470779035305450920e-01) },
{ SC_(1.43626022338867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.90963660568134094400971901498988905319554266361075315281949278115893947953256979043383147606632955045753627672782128846852191033978891970221149746867578886482678747387800642996493640522219736150214876489388752111581525484145661461989583738801301682758872224572425127995699599203450570258361503179471293916821074295053494693378034402025673654196231274987906991244583192913828304407994756526024395389425156962038699675288302931357316631745952940420722432935854198084810119889611812838202854327047087633e-01), SC_(1.34130620789601643297435177545524001954141391748474759563452684046937170171124919131936400073282912787645653259241880684313416126416211409025645824655684246053734081280628162746192535860988794701161895027084056830536993050641113632462258021194830151178607327486814897660784369677235245490434876385754524750500204601522349690543772219788636263128283700192373357633279535557585911804179534914355347076739942876595712160644569672695775037899587969833017668537631078189945084691339552998027255384326844140e-01) },
{ SC_(1.43893671035766601562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.91319109575353827009524291495439092992609811853229821159166159151103901148532756099292375393658980856687146260362406220995470141661061317103167670220098478568248794744003136334741272352694999145446914008031920389605991216195136102162640563302102813627231858860137114375389133133397415527784515231042189322930600081954067068979704162550063898754530920501246869992971165629667699438110645545498170415962658239563515234890345521891246987256466209364284808469885035281015898704958784193974691004150021440e-01), SC_(1.31477842204409608143481604778289471096989432741883764052857915784986484318032634024067139351793577350976858922540277282623045875976061356613691647950469635616570216317069615463470059393814873032370292336786402935014974684094100738552918070641543653862350399204902298268031885011842932620245754790505398283832018177439959836755940979102516771954166434909998171784510426184975048758424286402781599100148540714546447711769856438806916702480649813828940835784901933444901276957152379932153447509228696137e-01) },
{ SC_(1.43923854827880859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.91358749415694718375338446318520938245933399170216515550162277117477391720337296530042486538615494659392608853197762294151718033779623260069710976312896628717586901774481690096841376459649622902116531379807543817349138434425583628639937086422980602415256616704269488506418530308517347564085682123911519216119823363516075742620608973853091856105663492745369073548016404817781648983470056148620342542897508768583078218568602415975758720531150787539258203631976055122050762021258847803225815586413983594e-01), SC_(1.31178618520511210932639613646562667970910211143447525041763259377225077944033963198139901656474403253313311900854623885170093549689579895346253603161951404971637347127491269985682548787839965097189544180076866803717837988248791973444620625374673968739089275753356956276391050058192244847228373681483681343061322393838820468731882412707831450554284369063204798723878265096994905601911657910504170961317716023507473626505888920988030515505601969581368230219763312001217408116589019985350643427759453027e-01) },
{ SC_(1.43961572647094726562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.91408156611675707296664656058223080152485128775574649173021236987320160261145962178762573763867204348773339812210608561100661146497081024184848594028960145235706699880715910562953861200253810695797510258001811213168246891397479444794767683027181509397456942656840768865307567123173491515632186886152415447993081560133963732169955082791633660308902637129969728163244325298495434764536351360777449422859214749223257906073184866030661311732376603554906787343524537507972606605117568102379976898997387556e-01), SC_(1.30804690297554290504989423846664214343871971288892730248455107330480322598111478527291294656586536354347060079501463191824637278899579789830724823242348033342333742371700916702509134210059650531852817443296827350488198919145626370767974551816464494406170646945206485942489762762056106891367852891043967425985347102892606683294114815073381752131566806564187749932742216915803605939012920924230774615714791230728265624437944193225253025470901610417643068522722728430878240416873384568643829313305535027e-01) },
{ SC_(1.44733238220214843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.92388003924177313140090027971915918584257628279020219474834338435924744461556664826937218895846315344351959435620232974461413412660625327718605557450020435740353207685195892183491583378240589992265493490175020140561282535656023176931718779705642570303800362770035646009247080796429678251537352734587121374533778369237837973021704239350832647444669642055605296497584322482667084736622674001731471182384738548849145026540595340207684378319043448448375976983562094694763759141523233441297963867807173230e-01), SC_(1.23150516309867875989569500091859949538209314932271743672937839136536501764869171434751888595099441665884508703820137465595390996452770295560950163144838266096299820229745872851223264952301951583171652940286501789832523596307854150203819900567360148429999324024127583351335571985879527474760460123624195719269010080647337703374150788251690634185963743503086320018503677388753932389411896123706087229183305362380691808334014583261378865654194061555906317934047697173152604178316357472971054644931431007e-01) },
{ SC_(1.44744920730590820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.92402384223882789932261167425343450246956345459586286370336167352566852171621116458593647705802173528121507646228587446217386261770854494486472079130461840033751569077191235116879649490897128782846926355137884452312288880211033422612152460072911482530288128569393084939527997746297498300862428618077679314338568003724382747131398401869970818675030832582905678960788419233415037831678397997028491476723422057386731673921794812002654045501668179874746043063590611649424932881749747850199999649458980332e-01), SC_(1.23034579638217625029872282272402437662093252013182327996821295956822978452419259217048913138605637521619464291253863182650817791682056273134695984571528196607840573470807701589977902167891230627949542905867599039057826790021360258199521140849548290900785404111420099350972186162756949436658730757354190824081339428667944721803530652607059601295242664233649552435918280060710052841718723858516493198074231988111624685499136821860174842545366428551676343529394855788994773464430657466696951765655081137e-01) },
{ SC_(1.45154237747192382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.92897670924410531455308403067195670028166438299545559217547024316039582474703048515572995385737263658775525140179896272492682727904755237837950242303032893320399392340524679763156054755798499200503708258833780300903783645433313620255464751916379090634079587697883676031786033937972412617753201880865592252516901165029948342610525988212251655766536877387133775131843264659894018569911003548054019687818715867363301061741589797231839706403520055095055989644698443913520699876764791371583654897816260752e-01), SC_(1.18971488487288304308425699210614719866878259676804804262846896571022601257545817282175995659728561527339387857587830788109332577117011986425932901344366978967352649545020809657624889841948708848929261420409010627364470837074847218316673600693253526576654165766705835056357817622597952581949808041989979706804283927703846598812892491431255024889245682296352331155850394323676087358406346137369111543419082047067595620398532071247556766820276593583587556123889897153525352863626314107635487884572998426e-01) },
{ SC_(1.45330142974853515625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.93105411740343505979941692065212954734817555914074650281588114038233678075276394011281531825927323565721676809068049180242769051762192574807268658746464170597014860395374014702172519273733548176632886082595693891351425720343131787988496468579795432317171238483180139422234210372749213206588283534233831908394582654231750575686783875745511809042593129988278841999995524050769441525637738892576778838033277871692659550467516595634343802643379683228631743812937611330519329616827468576341825528132052336e-01), SC_(1.17224746414922113394680459621138654141515011468565470547501509905431672693738276955358228769564509462137569555299014927161641678112156176912374444048091919642849459540872135016797222796525448414106745029017241368167842038210883973473987358596838846975718240227122399101468532167473154373896203436806908913091121947162452896071564092737961908660984482393247148789843287711178022307994232547371668339453767902590820307947458700379454535785143261333718503831510741892113212862974188905351819040231571308e-01) },
{ SC_(1.45588922500610351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.93405439789757141275202601364355779502679848734651978182155130072168276482638826307412791668860025733070999061755033321901886773799227371917222595289420747085427784871438532344797731199223428339013161791677570085265437560296083277340845904465956638418345392999864987861028929290148714050330685270670948455026609008733297837390643273232248915759554146794901132364794027334453505635161634851655441841286677285556554929761224110017992819251284010541747937525942378738773667656679523684139733660561250454e-01), SC_(1.14654403300175083648655241424713554876591410670899082802706257994408600890374804156744972009245333224858858840058865138728143319116190374735741716940083629338564479621306357085959924901450353848857626798452776676039763227965830495379918013430493486371677347432381790712020223595336542260879737099747022574632060518401383064409905884124848180841992448644395615313940886011062062975865185967646280984788987330078321682531189251440331206378939892631509660362968636990584420084242504975617656278628117103e-01) },
{ SC_(1.47166442871093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.95090455929404666006154823168144087189140053255522339316806520598490841109867383633977530535018659423876097071858161130203706649002027525940404478895698367390354260462433431675488818940998152329248038804193093807009906773861589081969360477762624353775906996639062265252175967961550873009581733911335420867297760020697540822045266366770530036973389680212375467050585559942092343814379574239413774425890235854531425676118483749702011351971360190721833433641572164265515387155347107711295271352712743920e-01), SC_(9.89696141156948746533779105739509719701859485070413706167484933115112066336174440361597142496460529005477561627345324008350535949128391226579786599207708363053074301827988346459788334279429737675780235245888898300686596905930790877873637403683928778470682731019204053504784430768910655143803501705308467894729067255148499639765331390047487792750517217890381326189053380138858456505067986074977471820348175139209916889960977991394445595370464003745273811411030937898173471905892363724061478289793119348e-02) },
{ SC_(1.48118925094604492187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.95987971581469849835212192761387433880948032799743403113405841762301737272660663272771126085311509092947080459948251558013435279217583393463811660766402644800234944489251699740786371879736855583038422681603128446143622034878159613520219538075200024898473039195144740678733899601210689307500632218154184430050627947647985952105033868309795151096435214211084770689499068527480958647335117598393401054903120640089430217860460804499994297927249386845726766898814799195449319720578659538420256997308211025e-01), SC_(8.94872083877310745992995729453189430370374216494843644464203198739023378590658969785214597002302119076433271051158949450602535037208901054605904460051131565768944344714994340047575313236362345896146244898245040780545731961335279415963661509788420847604974741441811091560365159585870007428861114817117469981394171402847618853548699252957873293345224676542413493010857730777156556972874471318434497632251719969283577188808589709859828953081848004422162716626512357272747440738023351312980295536798316922e-02) },
{ SC_(1.48278236389160156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.96129270838430119300051168101128018381711663975084689464093791562764752253731121972874715487882382751179770152493027118683467727036964708520634542103501485669757146226438488081878080926649554606187846378195600014774584360969390987124603322695895627803222154125777080064227842041901715773894330691637378759131986041012989252185848914840073182305921568081447589877312031877944980532384362610432698158884417534261275444275397015596380868316425733585342742440883714085896222445321624407650811982586296636e-01), SC_(8.79003741681315821251280686027308782114586877469765715995387548225892541129646634622181193716483073221684877664769071763743258458728042536681305436365814040903460426066931360249824421763839424383563759428429066149167258244393099606620797760427563923085307430292326673397490669016001630596625436022406452453276617767081117940821836317631747493227941287539612890181193545073004560915169680617098938412078376539261936819313380292445951887013297284686257609312633392205252300434267806647195017089621710655e-02) },
{ SC_(1.48932170867919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.96682778918135881536275990842605733339523038813167252150321614421595525838928211021490885982758765990951313520268744178158346030034831122597669741414660123131649499595170494000918804089933602318505074023337014767210419674606196522230870351450346722685462669386186899171200820043924773724372012377225749522475547961748742969344987224598725348359245989549214445144233239343849591742100654576204916431612729728023490540829084798820588062343315674262313864097725179428828982666540343368732780105039454552e-01), SC_(8.13845084031492640613386104575625537797314524719600723400961398682265346258342553800702435865044529994514493269349360241716452021150170976184564475930349320327294213744778471680231255567737036617811154621323506663548592662785646800499829866106486293702489790533055529549635178889628268927391706714202367178496631902276183977618547547514283224465880040875138298723442763757980830113435205370560834162520016704500157651115626101042762031082967251945734212875798186029500136459910061696644610683824984172e-02) },
{ SC_(1.49110269546508789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.96826142879974523863831045963884109600409432642463162064145662688965036053042311506387703651817442121009205293172616437818555258112251730073632334612968938357736365937318953971797778938245108123188897428261195201653763029717278994009284610609918683798387178776970008741366601835926335083641809206050796411321487406184056687220549994528554465293966740994858430339601520279341278775826310640952951225475713531037110335618328239225533137083081585843611982466861028545104133721132301207113669094208158152e-01), SC_(7.96093014102787857311853897169714896003178997833084509746261920212282904923245728708338229611953838785802609515963050682205601178649541846223606669995712553087046533525243208438038611435636700879519384389078441175165514979582616566905525683674375742838422423588917802839236707296641241280017877960271241566981191179744385341858916524101345194801390243168621344421220012275921118083354308199733352187061121123492182523906644632947523518443805234926530481306985017526225224799204564632165926385889633624e-02) },
{ SC_(1.49469184875488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+00), SC_(9.97105451691637836980566977886191495470310625478984302514468734081978317004712365179572388160094873766545892259684126612171730371334431713402903857531243843855031719141960805464286066705907297221591074259625271788178601626673326754719816154765918422856170761025895221537060495081964634143881365727528637573199554544101393148199185537988251924073321046398397270592899501388280072694753480150196648362062195285790390273399747995245778399713979670854796624214784952767383795902013605892666997263955330095e-01), SC_(7.60310344978606994311454252807960986535803469428379193529425796476644344334413001865738243975566508261589698713562091901145249736705485695273728137391377751615494502695150924195446763383201607951069471691560757133118887684442353070862022248337360915742210326532477359739395822627983312298986859616214217003217070111399151039551118513567199164797534425187953687276545896053419230138261452230491054544837629498576689887971671483487696900902095055042924520918068327882892863731988941436799798706418513466e-02) }
}};
//#undef SC_

Some files were not shown because too many files have changed in this diff Show More