commons-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From l..@apache.org
Subject svn commit: r948061 [21/22] - in /websites/production/commons/content/proper/commons-math: ./ xref/ xref/org/apache/commons/math3/ xref/org/apache/commons/math3/analysis/ xref/org/apache/commons/math3/analysis/differentiation/ xref/org/apache/commons/m...
Date Fri, 17 Apr 2015 19:17:18 GMT
Modified: websites/production/commons/content/proper/commons-math/xref/org/apache/commons/math3/util/FastMath.html
==============================================================================
--- websites/production/commons/content/proper/commons-math/xref/org/apache/commons/math3/util/FastMath.html (original)
+++ websites/production/commons/content/proper/commons-math/xref/org/apache/commons/math3/util/FastMath.html Fri Apr 17 19:17:13 2015
@@ -846,7 +846,7 @@
 <a class="jxr_linenumber" name="L838" href="#L838">838</a> <em class="jxr_javadoccomment">     *</em>
 <a class="jxr_linenumber" name="L839" href="#L839">839</a> <em class="jxr_javadoccomment">     * Computes exp(x), function result is nearly rounded.   It will be correctly</em>
 <a class="jxr_linenumber" name="L840" href="#L840">840</a> <em class="jxr_javadoccomment">     * rounded to the theoretical value for 99.9% of input values, otherwise it will</em>
-<a class="jxr_linenumber" name="L841" href="#L841">841</a> <em class="jxr_javadoccomment">     * have a 1 UPL error.</em>
+<a class="jxr_linenumber" name="L841" href="#L841">841</a> <em class="jxr_javadoccomment">     * have a 1 ULP error.</em>
 <a class="jxr_linenumber" name="L842" href="#L842">842</a> <em class="jxr_javadoccomment">     *</em>
 <a class="jxr_linenumber" name="L843" href="#L843">843</a> <em class="jxr_javadoccomment">     * Method:</em>
 <a class="jxr_linenumber" name="L844" href="#L844">844</a> <em class="jxr_javadoccomment">     *    Lookup intVal = exp(int(x))</em>
@@ -875,3359 +875,3355 @@
 <a class="jxr_linenumber" name="L867" href="#L867">867</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> exp(<strong class="jxr_keyword">double</strong> x, <strong class="jxr_keyword">double</strong> extra, <strong class="jxr_keyword">double</strong>[] hiPrec) {
 <a class="jxr_linenumber" name="L868" href="#L868">868</a>         <strong class="jxr_keyword">double</strong> intPartA;
 <a class="jxr_linenumber" name="L869" href="#L869">869</a>         <strong class="jxr_keyword">double</strong> intPartB;
-<a class="jxr_linenumber" name="L870" href="#L870">870</a>         <strong class="jxr_keyword">int</strong> intVal;
+<a class="jxr_linenumber" name="L870" href="#L870">870</a>         <strong class="jxr_keyword">int</strong> intVal = (<strong class="jxr_keyword">int</strong>) x;
 <a class="jxr_linenumber" name="L871" href="#L871">871</a> 
 <a class="jxr_linenumber" name="L872" href="#L872">872</a>         <em class="jxr_comment">/* Lookup exp(floor(x)).</em>
 <a class="jxr_linenumber" name="L873" href="#L873">873</a> <em class="jxr_comment">         * intPartA will have the upper 22 bits, intPartB will have the lower</em>
 <a class="jxr_linenumber" name="L874" href="#L874">874</a> <em class="jxr_comment">         * 52 bits.</em>
 <a class="jxr_linenumber" name="L875" href="#L875">875</a> <em class="jxr_comment">         */</em>
 <a class="jxr_linenumber" name="L876" href="#L876">876</a>         <strong class="jxr_keyword">if</strong> (x &lt; 0.0) {
-<a class="jxr_linenumber" name="L877" href="#L877">877</a>             intVal = (<strong class="jxr_keyword">int</strong>) -x;
-<a class="jxr_linenumber" name="L878" href="#L878">878</a> 
-<a class="jxr_linenumber" name="L879" href="#L879">879</a>             <strong class="jxr_keyword">if</strong> (intVal &gt; 746) {
-<a class="jxr_linenumber" name="L880" href="#L880">880</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L881" href="#L881">881</a>                     hiPrec[0] = 0.0;
-<a class="jxr_linenumber" name="L882" href="#L882">882</a>                     hiPrec[1] = 0.0;
-<a class="jxr_linenumber" name="L883" href="#L883">883</a>                 }
-<a class="jxr_linenumber" name="L884" href="#L884">884</a>                 <strong class="jxr_keyword">return</strong> 0.0;
-<a class="jxr_linenumber" name="L885" href="#L885">885</a>             }
-<a class="jxr_linenumber" name="L886" href="#L886">886</a> 
-<a class="jxr_linenumber" name="L887" href="#L887">887</a>             <strong class="jxr_keyword">if</strong> (intVal &gt; 709) {
-<a class="jxr_linenumber" name="L888" href="#L888">888</a>                 <em class="jxr_comment">/* This will produce a subnormal output */</em>
-<a class="jxr_linenumber" name="L889" href="#L889">889</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result = exp(x+40.19140625, extra, hiPrec) / 285040095144011776.0;
-<a class="jxr_linenumber" name="L890" href="#L890">890</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L891" href="#L891">891</a>                     hiPrec[0] /= 285040095144011776.0;
-<a class="jxr_linenumber" name="L892" href="#L892">892</a>                     hiPrec[1] /= 285040095144011776.0;
-<a class="jxr_linenumber" name="L893" href="#L893">893</a>                 }
-<a class="jxr_linenumber" name="L894" href="#L894">894</a>                 <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L895" href="#L895">895</a>             }
-<a class="jxr_linenumber" name="L896" href="#L896">896</a> 
-<a class="jxr_linenumber" name="L897" href="#L897">897</a>             <strong class="jxr_keyword">if</strong> (intVal == 709) {
-<a class="jxr_linenumber" name="L898" href="#L898">898</a>                 <em class="jxr_comment">/* exp(1.494140625) is nearly a machine number... */</em>
-<a class="jxr_linenumber" name="L899" href="#L899">899</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result = exp(x+1.494140625, extra, hiPrec) / 4.455505956692756620;
-<a class="jxr_linenumber" name="L900" href="#L900">900</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L901" href="#L901">901</a>                     hiPrec[0] /= 4.455505956692756620;
-<a class="jxr_linenumber" name="L902" href="#L902">902</a>                     hiPrec[1] /= 4.455505956692756620;
-<a class="jxr_linenumber" name="L903" href="#L903">903</a>                 }
-<a class="jxr_linenumber" name="L904" href="#L904">904</a>                 <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L905" href="#L905">905</a>             }
-<a class="jxr_linenumber" name="L906" href="#L906">906</a> 
-<a class="jxr_linenumber" name="L907" href="#L907">907</a>             intVal++;
-<a class="jxr_linenumber" name="L908" href="#L908">908</a> 
-<a class="jxr_linenumber" name="L909" href="#L909">909</a>             intPartA = ExpIntTable.EXP_INT_TABLE_A[EXP_INT_TABLE_MAX_INDEX-intVal];
-<a class="jxr_linenumber" name="L910" href="#L910">910</a>             intPartB = ExpIntTable.EXP_INT_TABLE_B[EXP_INT_TABLE_MAX_INDEX-intVal];
-<a class="jxr_linenumber" name="L911" href="#L911">911</a> 
-<a class="jxr_linenumber" name="L912" href="#L912">912</a>             intVal = -intVal;
-<a class="jxr_linenumber" name="L913" href="#L913">913</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L914" href="#L914">914</a>             intVal = (<strong class="jxr_keyword">int</strong>) x;
-<a class="jxr_linenumber" name="L915" href="#L915">915</a> 
-<a class="jxr_linenumber" name="L916" href="#L916">916</a>             <strong class="jxr_keyword">if</strong> (intVal &gt; 709) {
-<a class="jxr_linenumber" name="L917" href="#L917">917</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L918" href="#L918">918</a>                     hiPrec[0] = Double.POSITIVE_INFINITY;
-<a class="jxr_linenumber" name="L919" href="#L919">919</a>                     hiPrec[1] = 0.0;
-<a class="jxr_linenumber" name="L920" href="#L920">920</a>                 }
-<a class="jxr_linenumber" name="L921" href="#L921">921</a>                 <strong class="jxr_keyword">return</strong> Double.POSITIVE_INFINITY;
-<a class="jxr_linenumber" name="L922" href="#L922">922</a>             }
+<a class="jxr_linenumber" name="L877" href="#L877">877</a> 
+<a class="jxr_linenumber" name="L878" href="#L878">878</a>             <em class="jxr_comment">// We don't check against intVal here as conversion of large negative double values</em>
+<a class="jxr_linenumber" name="L879" href="#L879">879</a>             <em class="jxr_comment">// may be affected by a JIT bug. Subsequent comparisons can safely use intVal</em>
+<a class="jxr_linenumber" name="L880" href="#L880">880</a>             <strong class="jxr_keyword">if</strong> (x &lt; -746d) {
+<a class="jxr_linenumber" name="L881" href="#L881">881</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L882" href="#L882">882</a>                     hiPrec[0] = 0.0;
+<a class="jxr_linenumber" name="L883" href="#L883">883</a>                     hiPrec[1] = 0.0;
+<a class="jxr_linenumber" name="L884" href="#L884">884</a>                 }
+<a class="jxr_linenumber" name="L885" href="#L885">885</a>                 <strong class="jxr_keyword">return</strong> 0.0;
+<a class="jxr_linenumber" name="L886" href="#L886">886</a>             }
+<a class="jxr_linenumber" name="L887" href="#L887">887</a> 
+<a class="jxr_linenumber" name="L888" href="#L888">888</a>             <strong class="jxr_keyword">if</strong> (intVal &lt; -709) {
+<a class="jxr_linenumber" name="L889" href="#L889">889</a>                 <em class="jxr_comment">/* This will produce a subnormal output */</em>
+<a class="jxr_linenumber" name="L890" href="#L890">890</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result = exp(x+40.19140625, extra, hiPrec) / 285040095144011776.0;
+<a class="jxr_linenumber" name="L891" href="#L891">891</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L892" href="#L892">892</a>                     hiPrec[0] /= 285040095144011776.0;
+<a class="jxr_linenumber" name="L893" href="#L893">893</a>                     hiPrec[1] /= 285040095144011776.0;
+<a class="jxr_linenumber" name="L894" href="#L894">894</a>                 }
+<a class="jxr_linenumber" name="L895" href="#L895">895</a>                 <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L896" href="#L896">896</a>             }
+<a class="jxr_linenumber" name="L897" href="#L897">897</a> 
+<a class="jxr_linenumber" name="L898" href="#L898">898</a>             <strong class="jxr_keyword">if</strong> (intVal == -709) {
+<a class="jxr_linenumber" name="L899" href="#L899">899</a>                 <em class="jxr_comment">/* exp(1.494140625) is nearly a machine number... */</em>
+<a class="jxr_linenumber" name="L900" href="#L900">900</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result = exp(x+1.494140625, extra, hiPrec) / 4.455505956692756620;
+<a class="jxr_linenumber" name="L901" href="#L901">901</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L902" href="#L902">902</a>                     hiPrec[0] /= 4.455505956692756620;
+<a class="jxr_linenumber" name="L903" href="#L903">903</a>                     hiPrec[1] /= 4.455505956692756620;
+<a class="jxr_linenumber" name="L904" href="#L904">904</a>                 }
+<a class="jxr_linenumber" name="L905" href="#L905">905</a>                 <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L906" href="#L906">906</a>             }
+<a class="jxr_linenumber" name="L907" href="#L907">907</a> 
+<a class="jxr_linenumber" name="L908" href="#L908">908</a>             intVal--;
+<a class="jxr_linenumber" name="L909" href="#L909">909</a> 
+<a class="jxr_linenumber" name="L910" href="#L910">910</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L911" href="#L911">911</a>             <strong class="jxr_keyword">if</strong> (intVal &gt; 709) {
+<a class="jxr_linenumber" name="L912" href="#L912">912</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L913" href="#L913">913</a>                     hiPrec[0] = Double.POSITIVE_INFINITY;
+<a class="jxr_linenumber" name="L914" href="#L914">914</a>                     hiPrec[1] = 0.0;
+<a class="jxr_linenumber" name="L915" href="#L915">915</a>                 }
+<a class="jxr_linenumber" name="L916" href="#L916">916</a>                 <strong class="jxr_keyword">return</strong> Double.POSITIVE_INFINITY;
+<a class="jxr_linenumber" name="L917" href="#L917">917</a>             }
+<a class="jxr_linenumber" name="L918" href="#L918">918</a> 
+<a class="jxr_linenumber" name="L919" href="#L919">919</a>         }
+<a class="jxr_linenumber" name="L920" href="#L920">920</a> 
+<a class="jxr_linenumber" name="L921" href="#L921">921</a>         intPartA = ExpIntTable.EXP_INT_TABLE_A[EXP_INT_TABLE_MAX_INDEX+intVal];
+<a class="jxr_linenumber" name="L922" href="#L922">922</a>         intPartB = ExpIntTable.EXP_INT_TABLE_B[EXP_INT_TABLE_MAX_INDEX+intVal];
 <a class="jxr_linenumber" name="L923" href="#L923">923</a> 
-<a class="jxr_linenumber" name="L924" href="#L924">924</a>             intPartA = ExpIntTable.EXP_INT_TABLE_A[EXP_INT_TABLE_MAX_INDEX+intVal];
-<a class="jxr_linenumber" name="L925" href="#L925">925</a>             intPartB = ExpIntTable.EXP_INT_TABLE_B[EXP_INT_TABLE_MAX_INDEX+intVal];
-<a class="jxr_linenumber" name="L926" href="#L926">926</a>         }
-<a class="jxr_linenumber" name="L927" href="#L927">927</a> 
-<a class="jxr_linenumber" name="L928" href="#L928">928</a>         <em class="jxr_comment">/* Get the fractional part of x, find the greatest multiple of 2^-10 less than</em>
-<a class="jxr_linenumber" name="L929" href="#L929">929</a> <em class="jxr_comment">         * x and look up the exp function of it.</em>
-<a class="jxr_linenumber" name="L930" href="#L930">930</a> <em class="jxr_comment">         * fracPartA will have the upper 22 bits, fracPartB the lower 52 bits.</em>
-<a class="jxr_linenumber" name="L931" href="#L931">931</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L932" href="#L932">932</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> intFrac = (<strong class="jxr_keyword">int</strong>) ((x - intVal) * 1024.0);
-<a class="jxr_linenumber" name="L933" href="#L933">933</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> fracPartA = ExpFracTable.EXP_FRAC_TABLE_A[intFrac];
-<a class="jxr_linenumber" name="L934" href="#L934">934</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> fracPartB = ExpFracTable.EXP_FRAC_TABLE_B[intFrac];
-<a class="jxr_linenumber" name="L935" href="#L935">935</a> 
-<a class="jxr_linenumber" name="L936" href="#L936">936</a>         <em class="jxr_comment">/* epsilon is the difference in x from the nearest multiple of 2^-10.  It</em>
-<a class="jxr_linenumber" name="L937" href="#L937">937</a> <em class="jxr_comment">         * has a value in the range 0 &lt;= epsilon &lt; 2^-10.</em>
-<a class="jxr_linenumber" name="L938" href="#L938">938</a> <em class="jxr_comment">         * Do the subtraction from x as the last step to avoid possible loss of percison.</em>
-<a class="jxr_linenumber" name="L939" href="#L939">939</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L940" href="#L940">940</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> epsilon = x - (intVal + intFrac / 1024.0);
-<a class="jxr_linenumber" name="L941" href="#L941">941</a> 
-<a class="jxr_linenumber" name="L942" href="#L942">942</a>         <em class="jxr_comment">/* Compute z = exp(epsilon) - 1.0 via a minimax polynomial.  z has</em>
-<a class="jxr_linenumber" name="L943" href="#L943">943</a> <em class="jxr_comment">       full double precision (52 bits).  Since z &lt; 2^-10, we will have</em>
-<a class="jxr_linenumber" name="L944" href="#L944">944</a> <em class="jxr_comment">       62 bits of precision when combined with the contant 1.  This will be</em>
-<a class="jxr_linenumber" name="L945" href="#L945">945</a> <em class="jxr_comment">       used in the last addition below to get proper rounding. */</em>
-<a class="jxr_linenumber" name="L946" href="#L946">946</a> 
-<a class="jxr_linenumber" name="L947" href="#L947">947</a>         <em class="jxr_comment">/* Remez generated polynomial.  Converges on the interval [0, 2^-10], error</em>
-<a class="jxr_linenumber" name="L948" href="#L948">948</a> <em class="jxr_comment">       is less than 0.5 ULP */</em>
-<a class="jxr_linenumber" name="L949" href="#L949">949</a>         <strong class="jxr_keyword">double</strong> z = 0.04168701738764507;
-<a class="jxr_linenumber" name="L950" href="#L950">950</a>         z = z * epsilon + 0.1666666505023083;
-<a class="jxr_linenumber" name="L951" href="#L951">951</a>         z = z * epsilon + 0.5000000000042687;
-<a class="jxr_linenumber" name="L952" href="#L952">952</a>         z = z * epsilon + 1.0;
-<a class="jxr_linenumber" name="L953" href="#L953">953</a>         z = z * epsilon + -3.940510424527919E-20;
-<a class="jxr_linenumber" name="L954" href="#L954">954</a> 
-<a class="jxr_linenumber" name="L955" href="#L955">955</a>         <em class="jxr_comment">/* Compute (intPartA+intPartB) * (fracPartA+fracPartB) by binomial</em>
-<a class="jxr_linenumber" name="L956" href="#L956">956</a> <em class="jxr_comment">       expansion.</em>
-<a class="jxr_linenumber" name="L957" href="#L957">957</a> <em class="jxr_comment">       tempA is exact since intPartA and intPartB only have 22 bits each.</em>
-<a class="jxr_linenumber" name="L958" href="#L958">958</a> <em class="jxr_comment">       tempB will have 52 bits of precision.</em>
-<a class="jxr_linenumber" name="L959" href="#L959">959</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L960" href="#L960">960</a>         <strong class="jxr_keyword">double</strong> tempA = intPartA * fracPartA;
-<a class="jxr_linenumber" name="L961" href="#L961">961</a>         <strong class="jxr_keyword">double</strong> tempB = intPartA * fracPartB + intPartB * fracPartA + intPartB * fracPartB;
-<a class="jxr_linenumber" name="L962" href="#L962">962</a> 
-<a class="jxr_linenumber" name="L963" href="#L963">963</a>         <em class="jxr_comment">/* Compute the result.  (1+z)(tempA+tempB).  Order of operations is</em>
-<a class="jxr_linenumber" name="L964" href="#L964">964</a> <em class="jxr_comment">       important.  For accuracy add by increasing size.  tempA is exact and</em>
-<a class="jxr_linenumber" name="L965" href="#L965">965</a> <em class="jxr_comment">       much larger than the others.  If there are extra bits specified from the</em>
-<a class="jxr_linenumber" name="L966" href="#L966">966</a> <em class="jxr_comment">       pow() function, use them. */</em>
-<a class="jxr_linenumber" name="L967" href="#L967">967</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> tempC = tempB + tempA;
-<a class="jxr_linenumber" name="L968" href="#L968">968</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result;
-<a class="jxr_linenumber" name="L969" href="#L969">969</a>         <strong class="jxr_keyword">if</strong> (extra != 0.0) {
-<a class="jxr_linenumber" name="L970" href="#L970">970</a>             result = tempC*extra*z + tempC*extra + tempC*z + tempB + tempA;
-<a class="jxr_linenumber" name="L971" href="#L971">971</a>         } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L972" href="#L972">972</a>             result = tempC*z + tempB + tempA;
-<a class="jxr_linenumber" name="L973" href="#L973">973</a>         }
-<a class="jxr_linenumber" name="L974" href="#L974">974</a> 
-<a class="jxr_linenumber" name="L975" href="#L975">975</a>         <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L976" href="#L976">976</a>             <em class="jxr_comment">// If requesting high precision</em>
-<a class="jxr_linenumber" name="L977" href="#L977">977</a>             hiPrec[0] = tempA;
-<a class="jxr_linenumber" name="L978" href="#L978">978</a>             hiPrec[1] = tempC*extra*z + tempC*extra + tempC*z + tempB;
-<a class="jxr_linenumber" name="L979" href="#L979">979</a>         }
-<a class="jxr_linenumber" name="L980" href="#L980">980</a> 
-<a class="jxr_linenumber" name="L981" href="#L981">981</a>         <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="L982" href="#L982">982</a>     }
-<a class="jxr_linenumber" name="L983" href="#L983">983</a> 
-<a class="jxr_linenumber" name="L984" href="#L984">984</a>     <em class="jxr_javadoccomment">/** Compute exp(x) - 1</em>
-<a class="jxr_linenumber" name="L985" href="#L985">985</a> <em class="jxr_javadoccomment">     * @param x number to compute shifted exponential</em>
-<a class="jxr_linenumber" name="L986" href="#L986">986</a> <em class="jxr_javadoccomment">     * @return exp(x) - 1</em>
-<a class="jxr_linenumber" name="L987" href="#L987">987</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L988" href="#L988">988</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> expm1(<strong class="jxr_keyword">double</strong> x) {
-<a class="jxr_linenumber" name="L989" href="#L989">989</a>       <strong class="jxr_keyword">return</strong> expm1(x, <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L990" href="#L990">990</a>     }
-<a class="jxr_linenumber" name="L991" href="#L991">991</a> 
-<a class="jxr_linenumber" name="L992" href="#L992">992</a>     <em class="jxr_javadoccomment">/** Internal helper method for expm1</em>
-<a class="jxr_linenumber" name="L993" href="#L993">993</a> <em class="jxr_javadoccomment">     * @param x number to compute shifted exponential</em>
-<a class="jxr_linenumber" name="L994" href="#L994">994</a> <em class="jxr_javadoccomment">     * @param hiPrecOut receive high precision result for -1.0 &lt; x &lt; 1.0</em>
-<a class="jxr_linenumber" name="L995" href="#L995">995</a> <em class="jxr_javadoccomment">     * @return exp(x) - 1</em>
-<a class="jxr_linenumber" name="L996" href="#L996">996</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L997" href="#L997">997</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> expm1(<strong class="jxr_keyword">double</strong> x, <strong class="jxr_keyword">double</strong> hiPrecOut[]) {
-<a class="jxr_linenumber" name="L998" href="#L998">998</a>         <strong class="jxr_keyword">if</strong> (x != x || x == 0.0) { <em class="jxr_comment">// NaN or zero</em>
-<a class="jxr_linenumber" name="L999" href="#L999">999</a>             <strong class="jxr_keyword">return</strong> x;
-<a class="jxr_linenumber" name="L1000" href="#L1000">1000</a>         }
-<a class="jxr_linenumber" name="L1001" href="#L1001">1001</a> 
-<a class="jxr_linenumber" name="L1002" href="#L1002">1002</a>         <strong class="jxr_keyword">if</strong> (x &lt;= -1.0 || x &gt;= 1.0) {
-<a class="jxr_linenumber" name="L1003" href="#L1003">1003</a>             <em class="jxr_comment">// If not between +/- 1.0</em>
-<a class="jxr_linenumber" name="L1004" href="#L1004">1004</a>             <em class="jxr_comment">//return exp(x) - 1.0;</em>
-<a class="jxr_linenumber" name="L1005" href="#L1005">1005</a>             <strong class="jxr_keyword">double</strong> hiPrec[] = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">double</strong>[2];
-<a class="jxr_linenumber" name="L1006" href="#L1006">1006</a>             exp(x, 0.0, hiPrec);
-<a class="jxr_linenumber" name="L1007" href="#L1007">1007</a>             <strong class="jxr_keyword">if</strong> (x &gt; 0.0) {
-<a class="jxr_linenumber" name="L1008" href="#L1008">1008</a>                 <strong class="jxr_keyword">return</strong> -1.0 + hiPrec[0] + hiPrec[1];
-<a class="jxr_linenumber" name="L1009" href="#L1009">1009</a>             } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L1010" href="#L1010">1010</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> ra = -1.0 + hiPrec[0];
-<a class="jxr_linenumber" name="L1011" href="#L1011">1011</a>                 <strong class="jxr_keyword">double</strong> rb = -(ra + 1.0 - hiPrec[0]);
-<a class="jxr_linenumber" name="L1012" href="#L1012">1012</a>                 rb += hiPrec[1];
-<a class="jxr_linenumber" name="L1013" href="#L1013">1013</a>                 <strong class="jxr_keyword">return</strong> ra + rb;
-<a class="jxr_linenumber" name="L1014" href="#L1014">1014</a>             }
-<a class="jxr_linenumber" name="L1015" href="#L1015">1015</a>         }
-<a class="jxr_linenumber" name="L1016" href="#L1016">1016</a> 
-<a class="jxr_linenumber" name="L1017" href="#L1017">1017</a>         <strong class="jxr_keyword">double</strong> baseA;
-<a class="jxr_linenumber" name="L1018" href="#L1018">1018</a>         <strong class="jxr_keyword">double</strong> baseB;
-<a class="jxr_linenumber" name="L1019" href="#L1019">1019</a>         <strong class="jxr_keyword">double</strong> epsilon;
-<a class="jxr_linenumber" name="L1020" href="#L1020">1020</a>         <strong class="jxr_keyword">boolean</strong> negative = false;
-<a class="jxr_linenumber" name="L1021" href="#L1021">1021</a> 
-<a class="jxr_linenumber" name="L1022" href="#L1022">1022</a>         <strong class="jxr_keyword">if</strong> (x &lt; 0.0) {
-<a class="jxr_linenumber" name="L1023" href="#L1023">1023</a>             x = -x;
-<a class="jxr_linenumber" name="L1024" href="#L1024">1024</a>             negative = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L1025" href="#L1025">1025</a>         }
-<a class="jxr_linenumber" name="L1026" href="#L1026">1026</a> 
-<a class="jxr_linenumber" name="L1027" href="#L1027">1027</a>         {
-<a class="jxr_linenumber" name="L1028" href="#L1028">1028</a>             <strong class="jxr_keyword">int</strong> intFrac = (<strong class="jxr_keyword">int</strong>) (x * 1024.0);
-<a class="jxr_linenumber" name="L1029" href="#L1029">1029</a>             <strong class="jxr_keyword">double</strong> tempA = ExpFracTable.EXP_FRAC_TABLE_A[intFrac] - 1.0;
-<a class="jxr_linenumber" name="L1030" href="#L1030">1030</a>             <strong class="jxr_keyword">double</strong> tempB = ExpFracTable.EXP_FRAC_TABLE_B[intFrac];
+<a class="jxr_linenumber" name="L924" href="#L924">924</a>         <em class="jxr_comment">/* Get the fractional part of x, find the greatest multiple of 2^-10 less than</em>
+<a class="jxr_linenumber" name="L925" href="#L925">925</a> <em class="jxr_comment">         * x and look up the exp function of it.</em>
+<a class="jxr_linenumber" name="L926" href="#L926">926</a> <em class="jxr_comment">         * fracPartA will have the upper 22 bits, fracPartB the lower 52 bits.</em>
+<a class="jxr_linenumber" name="L927" href="#L927">927</a> <em class="jxr_comment">         */</em>
+<a class="jxr_linenumber" name="L928" href="#L928">928</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> intFrac = (<strong class="jxr_keyword">int</strong>) ((x - intVal) * 1024.0);
+<a class="jxr_linenumber" name="L929" href="#L929">929</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> fracPartA = ExpFracTable.EXP_FRAC_TABLE_A[intFrac];
+<a class="jxr_linenumber" name="L930" href="#L930">930</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> fracPartB = ExpFracTable.EXP_FRAC_TABLE_B[intFrac];
+<a class="jxr_linenumber" name="L931" href="#L931">931</a> 
+<a class="jxr_linenumber" name="L932" href="#L932">932</a>         <em class="jxr_comment">/* epsilon is the difference in x from the nearest multiple of 2^-10.  It</em>
+<a class="jxr_linenumber" name="L933" href="#L933">933</a> <em class="jxr_comment">         * has a value in the range 0 &lt;= epsilon &lt; 2^-10.</em>
+<a class="jxr_linenumber" name="L934" href="#L934">934</a> <em class="jxr_comment">         * Do the subtraction from x as the last step to avoid possible loss of percison.</em>
+<a class="jxr_linenumber" name="L935" href="#L935">935</a> <em class="jxr_comment">         */</em>
+<a class="jxr_linenumber" name="L936" href="#L936">936</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> epsilon = x - (intVal + intFrac / 1024.0);
+<a class="jxr_linenumber" name="L937" href="#L937">937</a> 
+<a class="jxr_linenumber" name="L938" href="#L938">938</a>         <em class="jxr_comment">/* Compute z = exp(epsilon) - 1.0 via a minimax polynomial.  z has</em>
+<a class="jxr_linenumber" name="L939" href="#L939">939</a> <em class="jxr_comment">       full double precision (52 bits).  Since z &lt; 2^-10, we will have</em>
+<a class="jxr_linenumber" name="L940" href="#L940">940</a> <em class="jxr_comment">       62 bits of precision when combined with the contant 1.  This will be</em>
+<a class="jxr_linenumber" name="L941" href="#L941">941</a> <em class="jxr_comment">       used in the last addition below to get proper rounding. */</em>
+<a class="jxr_linenumber" name="L942" href="#L942">942</a> 
+<a class="jxr_linenumber" name="L943" href="#L943">943</a>         <em class="jxr_comment">/* Remez generated polynomial.  Converges on the interval [0, 2^-10], error</em>
+<a class="jxr_linenumber" name="L944" href="#L944">944</a> <em class="jxr_comment">       is less than 0.5 ULP */</em>
+<a class="jxr_linenumber" name="L945" href="#L945">945</a>         <strong class="jxr_keyword">double</strong> z = 0.04168701738764507;
+<a class="jxr_linenumber" name="L946" href="#L946">946</a>         z = z * epsilon + 0.1666666505023083;
+<a class="jxr_linenumber" name="L947" href="#L947">947</a>         z = z * epsilon + 0.5000000000042687;
+<a class="jxr_linenumber" name="L948" href="#L948">948</a>         z = z * epsilon + 1.0;
+<a class="jxr_linenumber" name="L949" href="#L949">949</a>         z = z * epsilon + -3.940510424527919E-20;
+<a class="jxr_linenumber" name="L950" href="#L950">950</a> 
+<a class="jxr_linenumber" name="L951" href="#L951">951</a>         <em class="jxr_comment">/* Compute (intPartA+intPartB) * (fracPartA+fracPartB) by binomial</em>
+<a class="jxr_linenumber" name="L952" href="#L952">952</a> <em class="jxr_comment">       expansion.</em>
+<a class="jxr_linenumber" name="L953" href="#L953">953</a> <em class="jxr_comment">       tempA is exact since intPartA and intPartB only have 22 bits each.</em>
+<a class="jxr_linenumber" name="L954" href="#L954">954</a> <em class="jxr_comment">       tempB will have 52 bits of precision.</em>
+<a class="jxr_linenumber" name="L955" href="#L955">955</a> <em class="jxr_comment">         */</em>
+<a class="jxr_linenumber" name="L956" href="#L956">956</a>         <strong class="jxr_keyword">double</strong> tempA = intPartA * fracPartA;
+<a class="jxr_linenumber" name="L957" href="#L957">957</a>         <strong class="jxr_keyword">double</strong> tempB = intPartA * fracPartB + intPartB * fracPartA + intPartB * fracPartB;
+<a class="jxr_linenumber" name="L958" href="#L958">958</a> 
+<a class="jxr_linenumber" name="L959" href="#L959">959</a>         <em class="jxr_comment">/* Compute the result.  (1+z)(tempA+tempB).  Order of operations is</em>
+<a class="jxr_linenumber" name="L960" href="#L960">960</a> <em class="jxr_comment">       important.  For accuracy add by increasing size.  tempA is exact and</em>
+<a class="jxr_linenumber" name="L961" href="#L961">961</a> <em class="jxr_comment">       much larger than the others.  If there are extra bits specified from the</em>
+<a class="jxr_linenumber" name="L962" href="#L962">962</a> <em class="jxr_comment">       pow() function, use them. */</em>
+<a class="jxr_linenumber" name="L963" href="#L963">963</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> tempC = tempB + tempA;
+<a class="jxr_linenumber" name="L964" href="#L964">964</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> result;
+<a class="jxr_linenumber" name="L965" href="#L965">965</a>         <strong class="jxr_keyword">if</strong> (extra != 0.0) {
+<a class="jxr_linenumber" name="L966" href="#L966">966</a>             result = tempC*extra*z + tempC*extra + tempC*z + tempB + tempA;
+<a class="jxr_linenumber" name="L967" href="#L967">967</a>         } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L968" href="#L968">968</a>             result = tempC*z + tempB + tempA;
+<a class="jxr_linenumber" name="L969" href="#L969">969</a>         }
+<a class="jxr_linenumber" name="L970" href="#L970">970</a> 
+<a class="jxr_linenumber" name="L971" href="#L971">971</a>         <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L972" href="#L972">972</a>             <em class="jxr_comment">// If requesting high precision</em>
+<a class="jxr_linenumber" name="L973" href="#L973">973</a>             hiPrec[0] = tempA;
+<a class="jxr_linenumber" name="L974" href="#L974">974</a>             hiPrec[1] = tempC*extra*z + tempC*extra + tempC*z + tempB;
+<a class="jxr_linenumber" name="L975" href="#L975">975</a>         }
+<a class="jxr_linenumber" name="L976" href="#L976">976</a> 
+<a class="jxr_linenumber" name="L977" href="#L977">977</a>         <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="L978" href="#L978">978</a>     }
+<a class="jxr_linenumber" name="L979" href="#L979">979</a> 
+<a class="jxr_linenumber" name="L980" href="#L980">980</a>     <em class="jxr_javadoccomment">/** Compute exp(x) - 1</em>
+<a class="jxr_linenumber" name="L981" href="#L981">981</a> <em class="jxr_javadoccomment">     * @param x number to compute shifted exponential</em>
+<a class="jxr_linenumber" name="L982" href="#L982">982</a> <em class="jxr_javadoccomment">     * @return exp(x) - 1</em>
+<a class="jxr_linenumber" name="L983" href="#L983">983</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L984" href="#L984">984</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> expm1(<strong class="jxr_keyword">double</strong> x) {
+<a class="jxr_linenumber" name="L985" href="#L985">985</a>       <strong class="jxr_keyword">return</strong> expm1(x, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L986" href="#L986">986</a>     }
+<a class="jxr_linenumber" name="L987" href="#L987">987</a> 
+<a class="jxr_linenumber" name="L988" href="#L988">988</a>     <em class="jxr_javadoccomment">/** Internal helper method for expm1</em>
+<a class="jxr_linenumber" name="L989" href="#L989">989</a> <em class="jxr_javadoccomment">     * @param x number to compute shifted exponential</em>
+<a class="jxr_linenumber" name="L990" href="#L990">990</a> <em class="jxr_javadoccomment">     * @param hiPrecOut receive high precision result for -1.0 &lt; x &lt; 1.0</em>
+<a class="jxr_linenumber" name="L991" href="#L991">991</a> <em class="jxr_javadoccomment">     * @return exp(x) - 1</em>
+<a class="jxr_linenumber" name="L992" href="#L992">992</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L993" href="#L993">993</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> expm1(<strong class="jxr_keyword">double</strong> x, <strong class="jxr_keyword">double</strong> hiPrecOut[]) {
+<a class="jxr_linenumber" name="L994" href="#L994">994</a>         <strong class="jxr_keyword">if</strong> (x != x || x == 0.0) { <em class="jxr_comment">// NaN or zero</em>
+<a class="jxr_linenumber" name="L995" href="#L995">995</a>             <strong class="jxr_keyword">return</strong> x;
+<a class="jxr_linenumber" name="L996" href="#L996">996</a>         }
+<a class="jxr_linenumber" name="L997" href="#L997">997</a> 
+<a class="jxr_linenumber" name="L998" href="#L998">998</a>         <strong class="jxr_keyword">if</strong> (x &lt;= -1.0 || x &gt;= 1.0) {
+<a class="jxr_linenumber" name="L999" href="#L999">999</a>             <em class="jxr_comment">// If not between +/- 1.0</em>
+<a class="jxr_linenumber" name="L1000" href="#L1000">1000</a>             <em class="jxr_comment">//return exp(x) - 1.0;</em>
+<a class="jxr_linenumber" name="L1001" href="#L1001">1001</a>             <strong class="jxr_keyword">double</strong> hiPrec[] = <strong class="jxr_keyword">new</strong> <strong class="jxr_keyword">double</strong>[2];
+<a class="jxr_linenumber" name="L1002" href="#L1002">1002</a>             exp(x, 0.0, hiPrec);
+<a class="jxr_linenumber" name="L1003" href="#L1003">1003</a>             <strong class="jxr_keyword">if</strong> (x &gt; 0.0) {
+<a class="jxr_linenumber" name="L1004" href="#L1004">1004</a>                 <strong class="jxr_keyword">return</strong> -1.0 + hiPrec[0] + hiPrec[1];
+<a class="jxr_linenumber" name="L1005" href="#L1005">1005</a>             } <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L1006" href="#L1006">1006</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> ra = -1.0 + hiPrec[0];
+<a class="jxr_linenumber" name="L1007" href="#L1007">1007</a>                 <strong class="jxr_keyword">double</strong> rb = -(ra + 1.0 - hiPrec[0]);
+<a class="jxr_linenumber" name="L1008" href="#L1008">1008</a>                 rb += hiPrec[1];
+<a class="jxr_linenumber" name="L1009" href="#L1009">1009</a>                 <strong class="jxr_keyword">return</strong> ra + rb;
+<a class="jxr_linenumber" name="L1010" href="#L1010">1010</a>             }
+<a class="jxr_linenumber" name="L1011" href="#L1011">1011</a>         }
+<a class="jxr_linenumber" name="L1012" href="#L1012">1012</a> 
+<a class="jxr_linenumber" name="L1013" href="#L1013">1013</a>         <strong class="jxr_keyword">double</strong> baseA;
+<a class="jxr_linenumber" name="L1014" href="#L1014">1014</a>         <strong class="jxr_keyword">double</strong> baseB;
+<a class="jxr_linenumber" name="L1015" href="#L1015">1015</a>         <strong class="jxr_keyword">double</strong> epsilon;
+<a class="jxr_linenumber" name="L1016" href="#L1016">1016</a>         <strong class="jxr_keyword">boolean</strong> negative = false;
+<a class="jxr_linenumber" name="L1017" href="#L1017">1017</a> 
+<a class="jxr_linenumber" name="L1018" href="#L1018">1018</a>         <strong class="jxr_keyword">if</strong> (x &lt; 0.0) {
+<a class="jxr_linenumber" name="L1019" href="#L1019">1019</a>             x = -x;
+<a class="jxr_linenumber" name="L1020" href="#L1020">1020</a>             negative = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L1021" href="#L1021">1021</a>         }
+<a class="jxr_linenumber" name="L1022" href="#L1022">1022</a> 
+<a class="jxr_linenumber" name="L1023" href="#L1023">1023</a>         {
+<a class="jxr_linenumber" name="L1024" href="#L1024">1024</a>             <strong class="jxr_keyword">int</strong> intFrac = (<strong class="jxr_keyword">int</strong>) (x * 1024.0);
+<a class="jxr_linenumber" name="L1025" href="#L1025">1025</a>             <strong class="jxr_keyword">double</strong> tempA = ExpFracTable.EXP_FRAC_TABLE_A[intFrac] - 1.0;
+<a class="jxr_linenumber" name="L1026" href="#L1026">1026</a>             <strong class="jxr_keyword">double</strong> tempB = ExpFracTable.EXP_FRAC_TABLE_B[intFrac];
+<a class="jxr_linenumber" name="L1027" href="#L1027">1027</a> 
+<a class="jxr_linenumber" name="L1028" href="#L1028">1028</a>             <strong class="jxr_keyword">double</strong> temp = tempA + tempB;
+<a class="jxr_linenumber" name="L1029" href="#L1029">1029</a>             tempB = -(temp - tempA - tempB);
+<a class="jxr_linenumber" name="L1030" href="#L1030">1030</a>             tempA = temp;
 <a class="jxr_linenumber" name="L1031" href="#L1031">1031</a> 
-<a class="jxr_linenumber" name="L1032" href="#L1032">1032</a>             <strong class="jxr_keyword">double</strong> temp = tempA + tempB;
-<a class="jxr_linenumber" name="L1033" href="#L1033">1033</a>             tempB = -(temp - tempA - tempB);
-<a class="jxr_linenumber" name="L1034" href="#L1034">1034</a>             tempA = temp;
+<a class="jxr_linenumber" name="L1032" href="#L1032">1032</a>             temp = tempA * HEX_40000000;
+<a class="jxr_linenumber" name="L1033" href="#L1033">1033</a>             baseA = tempA + temp - temp;
+<a class="jxr_linenumber" name="L1034" href="#L1034">1034</a>             baseB = tempB + (tempA - baseA);
 <a class="jxr_linenumber" name="L1035" href="#L1035">1035</a> 
-<a class="jxr_linenumber" name="L1036" href="#L1036">1036</a>             temp = tempA * HEX_40000000;
-<a class="jxr_linenumber" name="L1037" href="#L1037">1037</a>             baseA = tempA + temp - temp;
-<a class="jxr_linenumber" name="L1038" href="#L1038">1038</a>             baseB = tempB + (tempA - baseA);
+<a class="jxr_linenumber" name="L1036" href="#L1036">1036</a>             epsilon = x - intFrac/1024.0;
+<a class="jxr_linenumber" name="L1037" href="#L1037">1037</a>         }
+<a class="jxr_linenumber" name="L1038" href="#L1038">1038</a> 
 <a class="jxr_linenumber" name="L1039" href="#L1039">1039</a> 
-<a class="jxr_linenumber" name="L1040" href="#L1040">1040</a>             epsilon = x - intFrac/1024.0;
-<a class="jxr_linenumber" name="L1041" href="#L1041">1041</a>         }
-<a class="jxr_linenumber" name="L1042" href="#L1042">1042</a> 
-<a class="jxr_linenumber" name="L1043" href="#L1043">1043</a> 
-<a class="jxr_linenumber" name="L1044" href="#L1044">1044</a>         <em class="jxr_comment">/* Compute expm1(epsilon) */</em>
-<a class="jxr_linenumber" name="L1045" href="#L1045">1045</a>         <strong class="jxr_keyword">double</strong> zb = 0.008336750013465571;
-<a class="jxr_linenumber" name="L1046" href="#L1046">1046</a>         zb = zb * epsilon + 0.041666663879186654;
-<a class="jxr_linenumber" name="L1047" href="#L1047">1047</a>         zb = zb * epsilon + 0.16666666666745392;
-<a class="jxr_linenumber" name="L1048" href="#L1048">1048</a>         zb = zb * epsilon + 0.49999999999999994;
-<a class="jxr_linenumber" name="L1049" href="#L1049">1049</a>         zb *= epsilon;
-<a class="jxr_linenumber" name="L1050" href="#L1050">1050</a>         zb *= epsilon;
-<a class="jxr_linenumber" name="L1051" href="#L1051">1051</a> 
-<a class="jxr_linenumber" name="L1052" href="#L1052">1052</a>         <strong class="jxr_keyword">double</strong> za = epsilon;
-<a class="jxr_linenumber" name="L1053" href="#L1053">1053</a>         <strong class="jxr_keyword">double</strong> temp = za + zb;
-<a class="jxr_linenumber" name="L1054" href="#L1054">1054</a>         zb = -(temp - za - zb);
-<a class="jxr_linenumber" name="L1055" href="#L1055">1055</a>         za = temp;
-<a class="jxr_linenumber" name="L1056" href="#L1056">1056</a> 
-<a class="jxr_linenumber" name="L1057" href="#L1057">1057</a>         temp = za * HEX_40000000;
-<a class="jxr_linenumber" name="L1058" href="#L1058">1058</a>         temp = za + temp - temp;
-<a class="jxr_linenumber" name="L1059" href="#L1059">1059</a>         zb += za - temp;
-<a class="jxr_linenumber" name="L1060" href="#L1060">1060</a>         za = temp;
-<a class="jxr_linenumber" name="L1061" href="#L1061">1061</a> 
-<a class="jxr_linenumber" name="L1062" href="#L1062">1062</a>         <em class="jxr_comment">/* Combine the parts.   expm1(a+b) = expm1(a) + expm1(b) + expm1(a)*expm1(b) */</em>
-<a class="jxr_linenumber" name="L1063" href="#L1063">1063</a>         <strong class="jxr_keyword">double</strong> ya = za * baseA;
-<a class="jxr_linenumber" name="L1064" href="#L1064">1064</a>         <em class="jxr_comment">//double yb = za*baseB + zb*baseA + zb*baseB;</em>
-<a class="jxr_linenumber" name="L1065" href="#L1065">1065</a>         temp = ya + za * baseB;
-<a class="jxr_linenumber" name="L1066" href="#L1066">1066</a>         <strong class="jxr_keyword">double</strong> yb = -(temp - ya - za * baseB);
+<a class="jxr_linenumber" name="L1040" href="#L1040">1040</a>         <em class="jxr_comment">/* Compute expm1(epsilon) */</em>
+<a class="jxr_linenumber" name="L1041" href="#L1041">1041</a>         <strong class="jxr_keyword">double</strong> zb = 0.008336750013465571;
+<a class="jxr_linenumber" name="L1042" href="#L1042">1042</a>         zb = zb * epsilon + 0.041666663879186654;
+<a class="jxr_linenumber" name="L1043" href="#L1043">1043</a>         zb = zb * epsilon + 0.16666666666745392;
+<a class="jxr_linenumber" name="L1044" href="#L1044">1044</a>         zb = zb * epsilon + 0.49999999999999994;
+<a class="jxr_linenumber" name="L1045" href="#L1045">1045</a>         zb *= epsilon;
+<a class="jxr_linenumber" name="L1046" href="#L1046">1046</a>         zb *= epsilon;
+<a class="jxr_linenumber" name="L1047" href="#L1047">1047</a> 
+<a class="jxr_linenumber" name="L1048" href="#L1048">1048</a>         <strong class="jxr_keyword">double</strong> za = epsilon;
+<a class="jxr_linenumber" name="L1049" href="#L1049">1049</a>         <strong class="jxr_keyword">double</strong> temp = za + zb;
+<a class="jxr_linenumber" name="L1050" href="#L1050">1050</a>         zb = -(temp - za - zb);
+<a class="jxr_linenumber" name="L1051" href="#L1051">1051</a>         za = temp;
+<a class="jxr_linenumber" name="L1052" href="#L1052">1052</a> 
+<a class="jxr_linenumber" name="L1053" href="#L1053">1053</a>         temp = za * HEX_40000000;
+<a class="jxr_linenumber" name="L1054" href="#L1054">1054</a>         temp = za + temp - temp;
+<a class="jxr_linenumber" name="L1055" href="#L1055">1055</a>         zb += za - temp;
+<a class="jxr_linenumber" name="L1056" href="#L1056">1056</a>         za = temp;
+<a class="jxr_linenumber" name="L1057" href="#L1057">1057</a> 
+<a class="jxr_linenumber" name="L1058" href="#L1058">1058</a>         <em class="jxr_comment">/* Combine the parts.   expm1(a+b) = expm1(a) + expm1(b) + expm1(a)*expm1(b) */</em>
+<a class="jxr_linenumber" name="L1059" href="#L1059">1059</a>         <strong class="jxr_keyword">double</strong> ya = za * baseA;
+<a class="jxr_linenumber" name="L1060" href="#L1060">1060</a>         <em class="jxr_comment">//double yb = za*baseB + zb*baseA + zb*baseB;</em>
+<a class="jxr_linenumber" name="L1061" href="#L1061">1061</a>         temp = ya + za * baseB;
+<a class="jxr_linenumber" name="L1062" href="#L1062">1062</a>         <strong class="jxr_keyword">double</strong> yb = -(temp - ya - za * baseB);
+<a class="jxr_linenumber" name="L1063" href="#L1063">1063</a>         ya = temp;
+<a class="jxr_linenumber" name="L1064" href="#L1064">1064</a> 
+<a class="jxr_linenumber" name="L1065" href="#L1065">1065</a>         temp = ya + zb * baseA;
+<a class="jxr_linenumber" name="L1066" href="#L1066">1066</a>         yb += -(temp - ya - zb * baseA);
 <a class="jxr_linenumber" name="L1067" href="#L1067">1067</a>         ya = temp;
 <a class="jxr_linenumber" name="L1068" href="#L1068">1068</a> 
-<a class="jxr_linenumber" name="L1069" href="#L1069">1069</a>         temp = ya + zb * baseA;
-<a class="jxr_linenumber" name="L1070" href="#L1070">1070</a>         yb += -(temp - ya - zb * baseA);
+<a class="jxr_linenumber" name="L1069" href="#L1069">1069</a>         temp = ya + zb * baseB;
+<a class="jxr_linenumber" name="L1070" href="#L1070">1070</a>         yb += -(temp - ya - zb*baseB);
 <a class="jxr_linenumber" name="L1071" href="#L1071">1071</a>         ya = temp;
 <a class="jxr_linenumber" name="L1072" href="#L1072">1072</a> 
-<a class="jxr_linenumber" name="L1073" href="#L1073">1073</a>         temp = ya + zb * baseB;
-<a class="jxr_linenumber" name="L1074" href="#L1074">1074</a>         yb += -(temp - ya - zb*baseB);
-<a class="jxr_linenumber" name="L1075" href="#L1075">1075</a>         ya = temp;
-<a class="jxr_linenumber" name="L1076" href="#L1076">1076</a> 
-<a class="jxr_linenumber" name="L1077" href="#L1077">1077</a>         <em class="jxr_comment">//ya = ya + za + baseA;</em>
-<a class="jxr_linenumber" name="L1078" href="#L1078">1078</a>         <em class="jxr_comment">//yb = yb + zb + baseB;</em>
-<a class="jxr_linenumber" name="L1079" href="#L1079">1079</a>         temp = ya + baseA;
-<a class="jxr_linenumber" name="L1080" href="#L1080">1080</a>         yb += -(temp - baseA - ya);
-<a class="jxr_linenumber" name="L1081" href="#L1081">1081</a>         ya = temp;
-<a class="jxr_linenumber" name="L1082" href="#L1082">1082</a> 
-<a class="jxr_linenumber" name="L1083" href="#L1083">1083</a>         temp = ya + za;
-<a class="jxr_linenumber" name="L1084" href="#L1084">1084</a>         <em class="jxr_comment">//yb += (ya &gt; za) ? -(temp - ya - za) : -(temp - za - ya);</em>
-<a class="jxr_linenumber" name="L1085" href="#L1085">1085</a>         yb += -(temp - ya - za);
-<a class="jxr_linenumber" name="L1086" href="#L1086">1086</a>         ya = temp;
-<a class="jxr_linenumber" name="L1087" href="#L1087">1087</a> 
-<a class="jxr_linenumber" name="L1088" href="#L1088">1088</a>         temp = ya + baseB;
-<a class="jxr_linenumber" name="L1089" href="#L1089">1089</a>         <em class="jxr_comment">//yb += (ya &gt; baseB) ? -(temp - ya - baseB) : -(temp - baseB - ya);</em>
-<a class="jxr_linenumber" name="L1090" href="#L1090">1090</a>         yb += -(temp - ya - baseB);
-<a class="jxr_linenumber" name="L1091" href="#L1091">1091</a>         ya = temp;
-<a class="jxr_linenumber" name="L1092" href="#L1092">1092</a> 
-<a class="jxr_linenumber" name="L1093" href="#L1093">1093</a>         temp = ya + zb;
-<a class="jxr_linenumber" name="L1094" href="#L1094">1094</a>         <em class="jxr_comment">//yb += (ya &gt; zb) ? -(temp - ya - zb) : -(temp - zb - ya);</em>
-<a class="jxr_linenumber" name="L1095" href="#L1095">1095</a>         yb += -(temp - ya - zb);
-<a class="jxr_linenumber" name="L1096" href="#L1096">1096</a>         ya = temp;
-<a class="jxr_linenumber" name="L1097" href="#L1097">1097</a> 
-<a class="jxr_linenumber" name="L1098" href="#L1098">1098</a>         <strong class="jxr_keyword">if</strong> (negative) {
-<a class="jxr_linenumber" name="L1099" href="#L1099">1099</a>             <em class="jxr_comment">/* Compute expm1(-x) = -expm1(x) / (expm1(x) + 1) */</em>
-<a class="jxr_linenumber" name="L1100" href="#L1100">1100</a>             <strong class="jxr_keyword">double</strong> denom = 1.0 + ya;
-<a class="jxr_linenumber" name="L1101" href="#L1101">1101</a>             <strong class="jxr_keyword">double</strong> denomr = 1.0 / denom;
-<a class="jxr_linenumber" name="L1102" href="#L1102">1102</a>             <strong class="jxr_keyword">double</strong> denomb = -(denom - 1.0 - ya) + yb;
-<a class="jxr_linenumber" name="L1103" href="#L1103">1103</a>             <strong class="jxr_keyword">double</strong> ratio = ya * denomr;
-<a class="jxr_linenumber" name="L1104" href="#L1104">1104</a>             temp = ratio * HEX_40000000;
-<a class="jxr_linenumber" name="L1105" href="#L1105">1105</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> ra = ratio + temp - temp;
-<a class="jxr_linenumber" name="L1106" href="#L1106">1106</a>             <strong class="jxr_keyword">double</strong> rb = ratio - ra;
+<a class="jxr_linenumber" name="L1073" href="#L1073">1073</a>         <em class="jxr_comment">//ya = ya + za + baseA;</em>
+<a class="jxr_linenumber" name="L1074" href="#L1074">1074</a>         <em class="jxr_comment">//yb = yb + zb + baseB;</em>
+<a class="jxr_linenumber" name="L1075" href="#L1075">1075</a>         temp = ya + baseA;
+<a class="jxr_linenumber" name="L1076" href="#L1076">1076</a>         yb += -(temp - baseA - ya);
+<a class="jxr_linenumber" name="L1077" href="#L1077">1077</a>         ya = temp;
+<a class="jxr_linenumber" name="L1078" href="#L1078">1078</a> 
+<a class="jxr_linenumber" name="L1079" href="#L1079">1079</a>         temp = ya + za;
+<a class="jxr_linenumber" name="L1080" href="#L1080">1080</a>         <em class="jxr_comment">//yb += (ya &gt; za) ? -(temp - ya - za) : -(temp - za - ya);</em>
+<a class="jxr_linenumber" name="L1081" href="#L1081">1081</a>         yb += -(temp - ya - za);
+<a class="jxr_linenumber" name="L1082" href="#L1082">1082</a>         ya = temp;
+<a class="jxr_linenumber" name="L1083" href="#L1083">1083</a> 
+<a class="jxr_linenumber" name="L1084" href="#L1084">1084</a>         temp = ya + baseB;
+<a class="jxr_linenumber" name="L1085" href="#L1085">1085</a>         <em class="jxr_comment">//yb += (ya &gt; baseB) ? -(temp - ya - baseB) : -(temp - baseB - ya);</em>
+<a class="jxr_linenumber" name="L1086" href="#L1086">1086</a>         yb += -(temp - ya - baseB);
+<a class="jxr_linenumber" name="L1087" href="#L1087">1087</a>         ya = temp;
+<a class="jxr_linenumber" name="L1088" href="#L1088">1088</a> 
+<a class="jxr_linenumber" name="L1089" href="#L1089">1089</a>         temp = ya + zb;
+<a class="jxr_linenumber" name="L1090" href="#L1090">1090</a>         <em class="jxr_comment">//yb += (ya &gt; zb) ? -(temp - ya - zb) : -(temp - zb - ya);</em>
+<a class="jxr_linenumber" name="L1091" href="#L1091">1091</a>         yb += -(temp - ya - zb);
+<a class="jxr_linenumber" name="L1092" href="#L1092">1092</a>         ya = temp;
+<a class="jxr_linenumber" name="L1093" href="#L1093">1093</a> 
+<a class="jxr_linenumber" name="L1094" href="#L1094">1094</a>         <strong class="jxr_keyword">if</strong> (negative) {
+<a class="jxr_linenumber" name="L1095" href="#L1095">1095</a>             <em class="jxr_comment">/* Compute expm1(-x) = -expm1(x) / (expm1(x) + 1) */</em>
+<a class="jxr_linenumber" name="L1096" href="#L1096">1096</a>             <strong class="jxr_keyword">double</strong> denom = 1.0 + ya;
+<a class="jxr_linenumber" name="L1097" href="#L1097">1097</a>             <strong class="jxr_keyword">double</strong> denomr = 1.0 / denom;
+<a class="jxr_linenumber" name="L1098" href="#L1098">1098</a>             <strong class="jxr_keyword">double</strong> denomb = -(denom - 1.0 - ya) + yb;
+<a class="jxr_linenumber" name="L1099" href="#L1099">1099</a>             <strong class="jxr_keyword">double</strong> ratio = ya * denomr;
+<a class="jxr_linenumber" name="L1100" href="#L1100">1100</a>             temp = ratio * HEX_40000000;
+<a class="jxr_linenumber" name="L1101" href="#L1101">1101</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> ra = ratio + temp - temp;
+<a class="jxr_linenumber" name="L1102" href="#L1102">1102</a>             <strong class="jxr_keyword">double</strong> rb = ratio - ra;
+<a class="jxr_linenumber" name="L1103" href="#L1103">1103</a> 
+<a class="jxr_linenumber" name="L1104" href="#L1104">1104</a>             temp = denom * HEX_40000000;
+<a class="jxr_linenumber" name="L1105" href="#L1105">1105</a>             za = denom + temp - temp;
+<a class="jxr_linenumber" name="L1106" href="#L1106">1106</a>             zb = denom - za;
 <a class="jxr_linenumber" name="L1107" href="#L1107">1107</a> 
-<a class="jxr_linenumber" name="L1108" href="#L1108">1108</a>             temp = denom * HEX_40000000;
-<a class="jxr_linenumber" name="L1109" href="#L1109">1109</a>             za = denom + temp - temp;
-<a class="jxr_linenumber" name="L1110" href="#L1110">1110</a>             zb = denom - za;
-<a class="jxr_linenumber" name="L1111" href="#L1111">1111</a> 
-<a class="jxr_linenumber" name="L1112" href="#L1112">1112</a>             rb += (ya - za * ra - za * rb - zb * ra - zb * rb) * denomr;
-<a class="jxr_linenumber" name="L1113" href="#L1113">1113</a> 
-<a class="jxr_linenumber" name="L1114" href="#L1114">1114</a>             <em class="jxr_comment">// f(x) = x/1+x</em>
-<a class="jxr_linenumber" name="L1115" href="#L1115">1115</a>             <em class="jxr_comment">// Compute f'(x)</em>
-<a class="jxr_linenumber" name="L1116" href="#L1116">1116</a>             <em class="jxr_comment">// Product rule:  d(uv) = du*v + u*dv</em>
-<a class="jxr_linenumber" name="L1117" href="#L1117">1117</a>             <em class="jxr_comment">// Chain rule:  d(f(g(x)) = f'(g(x))*f(g'(x))</em>
-<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a>             <em class="jxr_comment">// d(1/x) = -1/(x*x)</em>
-<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a>             <em class="jxr_comment">// d(1/1+x) = -1/( (1+x)^2) *  1 =  -1/((1+x)*(1+x))</em>
-<a class="jxr_linenumber" name="L1120" href="#L1120">1120</a>             <em class="jxr_comment">// d(x/1+x) = -x/((1+x)(1+x)) + 1/1+x = 1 / ((1+x)(1+x))</em>
+<a class="jxr_linenumber" name="L1108" href="#L1108">1108</a>             rb += (ya - za * ra - za * rb - zb * ra - zb * rb) * denomr;
+<a class="jxr_linenumber" name="L1109" href="#L1109">1109</a> 
+<a class="jxr_linenumber" name="L1110" href="#L1110">1110</a>             <em class="jxr_comment">// f(x) = x/1+x</em>
+<a class="jxr_linenumber" name="L1111" href="#L1111">1111</a>             <em class="jxr_comment">// Compute f'(x)</em>
+<a class="jxr_linenumber" name="L1112" href="#L1112">1112</a>             <em class="jxr_comment">// Product rule:  d(uv) = du*v + u*dv</em>
+<a class="jxr_linenumber" name="L1113" href="#L1113">1113</a>             <em class="jxr_comment">// Chain rule:  d(f(g(x)) = f'(g(x))*f(g'(x))</em>
+<a class="jxr_linenumber" name="L1114" href="#L1114">1114</a>             <em class="jxr_comment">// d(1/x) = -1/(x*x)</em>
+<a class="jxr_linenumber" name="L1115" href="#L1115">1115</a>             <em class="jxr_comment">// d(1/1+x) = -1/( (1+x)^2) *  1 =  -1/((1+x)*(1+x))</em>
+<a class="jxr_linenumber" name="L1116" href="#L1116">1116</a>             <em class="jxr_comment">// d(x/1+x) = -x/((1+x)(1+x)) + 1/1+x = 1 / ((1+x)(1+x))</em>
+<a class="jxr_linenumber" name="L1117" href="#L1117">1117</a> 
+<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a>             <em class="jxr_comment">// Adjust for yb</em>
+<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a>             rb += yb * denomr;                      <em class="jxr_comment">// numerator</em>
+<a class="jxr_linenumber" name="L1120" href="#L1120">1120</a>             rb += -ya * denomb * denomr * denomr;   <em class="jxr_comment">// denominator</em>
 <a class="jxr_linenumber" name="L1121" href="#L1121">1121</a> 
-<a class="jxr_linenumber" name="L1122" href="#L1122">1122</a>             <em class="jxr_comment">// Adjust for yb</em>
-<a class="jxr_linenumber" name="L1123" href="#L1123">1123</a>             rb += yb * denomr;                      <em class="jxr_comment">// numerator</em>
-<a class="jxr_linenumber" name="L1124" href="#L1124">1124</a>             rb += -ya * denomb * denomr * denomr;   <em class="jxr_comment">// denominator</em>
-<a class="jxr_linenumber" name="L1125" href="#L1125">1125</a> 
-<a class="jxr_linenumber" name="L1126" href="#L1126">1126</a>             <em class="jxr_comment">// negate</em>
-<a class="jxr_linenumber" name="L1127" href="#L1127">1127</a>             ya = -ra;
-<a class="jxr_linenumber" name="L1128" href="#L1128">1128</a>             yb = -rb;
-<a class="jxr_linenumber" name="L1129" href="#L1129">1129</a>         }
-<a class="jxr_linenumber" name="L1130" href="#L1130">1130</a> 
-<a class="jxr_linenumber" name="L1131" href="#L1131">1131</a>         <strong class="jxr_keyword">if</strong> (hiPrecOut != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1132" href="#L1132">1132</a>             hiPrecOut[0] = ya;
-<a class="jxr_linenumber" name="L1133" href="#L1133">1133</a>             hiPrecOut[1] = yb;
-<a class="jxr_linenumber" name="L1134" href="#L1134">1134</a>         }
-<a class="jxr_linenumber" name="L1135" href="#L1135">1135</a> 
-<a class="jxr_linenumber" name="L1136" href="#L1136">1136</a>         <strong class="jxr_keyword">return</strong> ya + yb;
-<a class="jxr_linenumber" name="L1137" href="#L1137">1137</a>     }
-<a class="jxr_linenumber" name="L1138" href="#L1138">1138</a> 
-<a class="jxr_linenumber" name="L1139" href="#L1139">1139</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1140" href="#L1140">1140</a> <em class="jxr_javadoccomment">     * Natural logarithm.</em>
-<a class="jxr_linenumber" name="L1141" href="#L1141">1141</a> <em class="jxr_javadoccomment">     *</em>
-<a class="jxr_linenumber" name="L1142" href="#L1142">1142</a> <em class="jxr_javadoccomment">     * @param x   a double</em>
-<a class="jxr_linenumber" name="L1143" href="#L1143">1143</a> <em class="jxr_javadoccomment">     * @return log(x)</em>
-<a class="jxr_linenumber" name="L1144" href="#L1144">1144</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1145" href="#L1145">1145</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> log(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> x) {
-<a class="jxr_linenumber" name="L1146" href="#L1146">1146</a>         <strong class="jxr_keyword">return</strong> log(x, <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L1147" href="#L1147">1147</a>     }
-<a class="jxr_linenumber" name="L1148" href="#L1148">1148</a> 
-<a class="jxr_linenumber" name="L1149" href="#L1149">1149</a>     <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1150" href="#L1150">1150</a> <em class="jxr_javadoccomment">     * Internal helper method for natural logarithm function.</em>
-<a class="jxr_linenumber" name="L1151" href="#L1151">1151</a> <em class="jxr_javadoccomment">     * @param x original argument of the natural logarithm function</em>
-<a class="jxr_linenumber" name="L1152" href="#L1152">1152</a> <em class="jxr_javadoccomment">     * @param hiPrec extra bits of precision on output (To Be Confirmed)</em>
-<a class="jxr_linenumber" name="L1153" href="#L1153">1153</a> <em class="jxr_javadoccomment">     * @return log(x)</em>
-<a class="jxr_linenumber" name="L1154" href="#L1154">1154</a> <em class="jxr_javadoccomment">     */</em>
-<a class="jxr_linenumber" name="L1155" href="#L1155">1155</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> log(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> x, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] hiPrec) {
-<a class="jxr_linenumber" name="L1156" href="#L1156">1156</a>         <strong class="jxr_keyword">if</strong> (x==0) { <em class="jxr_comment">// Handle special case of +0/-0</em>
-<a class="jxr_linenumber" name="L1157" href="#L1157">1157</a>             <strong class="jxr_keyword">return</strong> Double.NEGATIVE_INFINITY;
-<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a>         }
-<a class="jxr_linenumber" name="L1159" href="#L1159">1159</a>         <strong class="jxr_keyword">long</strong> bits = Double.doubleToRawLongBits(x);
-<a class="jxr_linenumber" name="L1160" href="#L1160">1160</a> 
-<a class="jxr_linenumber" name="L1161" href="#L1161">1161</a>         <em class="jxr_comment">/* Handle special cases of negative input, and NaN */</em>
-<a class="jxr_linenumber" name="L1162" href="#L1162">1162</a>         <strong class="jxr_keyword">if</strong> (((bits &amp; 0x8000000000000000L) != 0 || x != x) &amp;&amp; x != 0.0) {
-<a class="jxr_linenumber" name="L1163" href="#L1163">1163</a>             <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1164" href="#L1164">1164</a>                 hiPrec[0] = Double.NaN;
-<a class="jxr_linenumber" name="L1165" href="#L1165">1165</a>             }
-<a class="jxr_linenumber" name="L1166" href="#L1166">1166</a> 
-<a class="jxr_linenumber" name="L1167" href="#L1167">1167</a>             <strong class="jxr_keyword">return</strong> Double.NaN;
-<a class="jxr_linenumber" name="L1168" href="#L1168">1168</a>         }
-<a class="jxr_linenumber" name="L1169" href="#L1169">1169</a> 
-<a class="jxr_linenumber" name="L1170" href="#L1170">1170</a>         <em class="jxr_comment">/* Handle special cases of Positive infinity. */</em>
-<a class="jxr_linenumber" name="L1171" href="#L1171">1171</a>         <strong class="jxr_keyword">if</strong> (x == Double.POSITIVE_INFINITY) {
-<a class="jxr_linenumber" name="L1172" href="#L1172">1172</a>             <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1173" href="#L1173">1173</a>                 hiPrec[0] = Double.POSITIVE_INFINITY;
-<a class="jxr_linenumber" name="L1174" href="#L1174">1174</a>             }
-<a class="jxr_linenumber" name="L1175" href="#L1175">1175</a> 
-<a class="jxr_linenumber" name="L1176" href="#L1176">1176</a>             <strong class="jxr_keyword">return</strong> Double.POSITIVE_INFINITY;
-<a class="jxr_linenumber" name="L1177" href="#L1177">1177</a>         }
-<a class="jxr_linenumber" name="L1178" href="#L1178">1178</a> 
-<a class="jxr_linenumber" name="L1179" href="#L1179">1179</a>         <em class="jxr_comment">/* Extract the exponent */</em>
-<a class="jxr_linenumber" name="L1180" href="#L1180">1180</a>         <strong class="jxr_keyword">int</strong> exp = (<strong class="jxr_keyword">int</strong>)(bits &gt;&gt; 52)-1023;
-<a class="jxr_linenumber" name="L1181" href="#L1181">1181</a> 
-<a class="jxr_linenumber" name="L1182" href="#L1182">1182</a>         <strong class="jxr_keyword">if</strong> ((bits &amp; 0x7ff0000000000000L) == 0) {
-<a class="jxr_linenumber" name="L1183" href="#L1183">1183</a>             <em class="jxr_comment">// Subnormal!</em>
-<a class="jxr_linenumber" name="L1184" href="#L1184">1184</a>             <strong class="jxr_keyword">if</strong> (x == 0) {
-<a class="jxr_linenumber" name="L1185" href="#L1185">1185</a>                 <em class="jxr_comment">// Zero</em>
-<a class="jxr_linenumber" name="L1186" href="#L1186">1186</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1187" href="#L1187">1187</a>                     hiPrec[0] = Double.NEGATIVE_INFINITY;
-<a class="jxr_linenumber" name="L1188" href="#L1188">1188</a>                 }
-<a class="jxr_linenumber" name="L1189" href="#L1189">1189</a> 
-<a class="jxr_linenumber" name="L1190" href="#L1190">1190</a>                 <strong class="jxr_keyword">return</strong> Double.NEGATIVE_INFINITY;
-<a class="jxr_linenumber" name="L1191" href="#L1191">1191</a>             }
-<a class="jxr_linenumber" name="L1192" href="#L1192">1192</a> 
-<a class="jxr_linenumber" name="L1193" href="#L1193">1193</a>             <em class="jxr_comment">/* Normalize the subnormal number. */</em>
-<a class="jxr_linenumber" name="L1194" href="#L1194">1194</a>             bits &lt;&lt;= 1;
-<a class="jxr_linenumber" name="L1195" href="#L1195">1195</a>             <strong class="jxr_keyword">while</strong> ( (bits &amp; 0x0010000000000000L) == 0) {
-<a class="jxr_linenumber" name="L1196" href="#L1196">1196</a>                 --exp;
-<a class="jxr_linenumber" name="L1197" href="#L1197">1197</a>                 bits &lt;&lt;= 1;
-<a class="jxr_linenumber" name="L1198" href="#L1198">1198</a>             }
-<a class="jxr_linenumber" name="L1199" href="#L1199">1199</a>         }
-<a class="jxr_linenumber" name="L1200" href="#L1200">1200</a> 
+<a class="jxr_linenumber" name="L1122" href="#L1122">1122</a>             <em class="jxr_comment">// negate</em>
+<a class="jxr_linenumber" name="L1123" href="#L1123">1123</a>             ya = -ra;
+<a class="jxr_linenumber" name="L1124" href="#L1124">1124</a>             yb = -rb;
+<a class="jxr_linenumber" name="L1125" href="#L1125">1125</a>         }
+<a class="jxr_linenumber" name="L1126" href="#L1126">1126</a> 
+<a class="jxr_linenumber" name="L1127" href="#L1127">1127</a>         <strong class="jxr_keyword">if</strong> (hiPrecOut != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1128" href="#L1128">1128</a>             hiPrecOut[0] = ya;
+<a class="jxr_linenumber" name="L1129" href="#L1129">1129</a>             hiPrecOut[1] = yb;
+<a class="jxr_linenumber" name="L1130" href="#L1130">1130</a>         }
+<a class="jxr_linenumber" name="L1131" href="#L1131">1131</a> 
+<a class="jxr_linenumber" name="L1132" href="#L1132">1132</a>         <strong class="jxr_keyword">return</strong> ya + yb;
+<a class="jxr_linenumber" name="L1133" href="#L1133">1133</a>     }
+<a class="jxr_linenumber" name="L1134" href="#L1134">1134</a> 
+<a class="jxr_linenumber" name="L1135" href="#L1135">1135</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1136" href="#L1136">1136</a> <em class="jxr_javadoccomment">     * Natural logarithm.</em>
+<a class="jxr_linenumber" name="L1137" href="#L1137">1137</a> <em class="jxr_javadoccomment">     *</em>
+<a class="jxr_linenumber" name="L1138" href="#L1138">1138</a> <em class="jxr_javadoccomment">     * @param x   a double</em>
+<a class="jxr_linenumber" name="L1139" href="#L1139">1139</a> <em class="jxr_javadoccomment">     * @return log(x)</em>
+<a class="jxr_linenumber" name="L1140" href="#L1140">1140</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1141" href="#L1141">1141</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> log(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> x) {
+<a class="jxr_linenumber" name="L1142" href="#L1142">1142</a>         <strong class="jxr_keyword">return</strong> log(x, <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L1143" href="#L1143">1143</a>     }
+<a class="jxr_linenumber" name="L1144" href="#L1144">1144</a> 
+<a class="jxr_linenumber" name="L1145" href="#L1145">1145</a>     <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1146" href="#L1146">1146</a> <em class="jxr_javadoccomment">     * Internal helper method for natural logarithm function.</em>
+<a class="jxr_linenumber" name="L1147" href="#L1147">1147</a> <em class="jxr_javadoccomment">     * @param x original argument of the natural logarithm function</em>
+<a class="jxr_linenumber" name="L1148" href="#L1148">1148</a> <em class="jxr_javadoccomment">     * @param hiPrec extra bits of precision on output (To Be Confirmed)</em>
+<a class="jxr_linenumber" name="L1149" href="#L1149">1149</a> <em class="jxr_javadoccomment">     * @return log(x)</em>
+<a class="jxr_linenumber" name="L1150" href="#L1150">1150</a> <em class="jxr_javadoccomment">     */</em>
+<a class="jxr_linenumber" name="L1151" href="#L1151">1151</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">double</strong> log(<strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> x, <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] hiPrec) {
+<a class="jxr_linenumber" name="L1152" href="#L1152">1152</a>         <strong class="jxr_keyword">if</strong> (x==0) { <em class="jxr_comment">// Handle special case of +0/-0</em>
+<a class="jxr_linenumber" name="L1153" href="#L1153">1153</a>             <strong class="jxr_keyword">return</strong> Double.NEGATIVE_INFINITY;
+<a class="jxr_linenumber" name="L1154" href="#L1154">1154</a>         }
+<a class="jxr_linenumber" name="L1155" href="#L1155">1155</a>         <strong class="jxr_keyword">long</strong> bits = Double.doubleToRawLongBits(x);
+<a class="jxr_linenumber" name="L1156" href="#L1156">1156</a> 
+<a class="jxr_linenumber" name="L1157" href="#L1157">1157</a>         <em class="jxr_comment">/* Handle special cases of negative input, and NaN */</em>
+<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a>         <strong class="jxr_keyword">if</strong> (((bits &amp; 0x8000000000000000L) != 0 || x != x) &amp;&amp; x != 0.0) {
+<a class="jxr_linenumber" name="L1159" href="#L1159">1159</a>             <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1160" href="#L1160">1160</a>                 hiPrec[0] = Double.NaN;
+<a class="jxr_linenumber" name="L1161" href="#L1161">1161</a>             }
+<a class="jxr_linenumber" name="L1162" href="#L1162">1162</a> 
+<a class="jxr_linenumber" name="L1163" href="#L1163">1163</a>             <strong class="jxr_keyword">return</strong> Double.NaN;
+<a class="jxr_linenumber" name="L1164" href="#L1164">1164</a>         }
+<a class="jxr_linenumber" name="L1165" href="#L1165">1165</a> 
+<a class="jxr_linenumber" name="L1166" href="#L1166">1166</a>         <em class="jxr_comment">/* Handle special cases of Positive infinity. */</em>
+<a class="jxr_linenumber" name="L1167" href="#L1167">1167</a>         <strong class="jxr_keyword">if</strong> (x == Double.POSITIVE_INFINITY) {
+<a class="jxr_linenumber" name="L1168" href="#L1168">1168</a>             <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1169" href="#L1169">1169</a>                 hiPrec[0] = Double.POSITIVE_INFINITY;
+<a class="jxr_linenumber" name="L1170" href="#L1170">1170</a>             }
+<a class="jxr_linenumber" name="L1171" href="#L1171">1171</a> 
+<a class="jxr_linenumber" name="L1172" href="#L1172">1172</a>             <strong class="jxr_keyword">return</strong> Double.POSITIVE_INFINITY;
+<a class="jxr_linenumber" name="L1173" href="#L1173">1173</a>         }
+<a class="jxr_linenumber" name="L1174" href="#L1174">1174</a> 
+<a class="jxr_linenumber" name="L1175" href="#L1175">1175</a>         <em class="jxr_comment">/* Extract the exponent */</em>
+<a class="jxr_linenumber" name="L1176" href="#L1176">1176</a>         <strong class="jxr_keyword">int</strong> exp = (<strong class="jxr_keyword">int</strong>)(bits &gt;&gt; 52)-1023;
+<a class="jxr_linenumber" name="L1177" href="#L1177">1177</a> 
+<a class="jxr_linenumber" name="L1178" href="#L1178">1178</a>         <strong class="jxr_keyword">if</strong> ((bits &amp; 0x7ff0000000000000L) == 0) {
+<a class="jxr_linenumber" name="L1179" href="#L1179">1179</a>             <em class="jxr_comment">// Subnormal!</em>
+<a class="jxr_linenumber" name="L1180" href="#L1180">1180</a>             <strong class="jxr_keyword">if</strong> (x == 0) {
+<a class="jxr_linenumber" name="L1181" href="#L1181">1181</a>                 <em class="jxr_comment">// Zero</em>
+<a class="jxr_linenumber" name="L1182" href="#L1182">1182</a>                 <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1183" href="#L1183">1183</a>                     hiPrec[0] = Double.NEGATIVE_INFINITY;
+<a class="jxr_linenumber" name="L1184" href="#L1184">1184</a>                 }
+<a class="jxr_linenumber" name="L1185" href="#L1185">1185</a> 
+<a class="jxr_linenumber" name="L1186" href="#L1186">1186</a>                 <strong class="jxr_keyword">return</strong> Double.NEGATIVE_INFINITY;
+<a class="jxr_linenumber" name="L1187" href="#L1187">1187</a>             }
+<a class="jxr_linenumber" name="L1188" href="#L1188">1188</a> 
+<a class="jxr_linenumber" name="L1189" href="#L1189">1189</a>             <em class="jxr_comment">/* Normalize the subnormal number. */</em>
+<a class="jxr_linenumber" name="L1190" href="#L1190">1190</a>             bits &lt;&lt;= 1;
+<a class="jxr_linenumber" name="L1191" href="#L1191">1191</a>             <strong class="jxr_keyword">while</strong> ( (bits &amp; 0x0010000000000000L) == 0) {
+<a class="jxr_linenumber" name="L1192" href="#L1192">1192</a>                 --exp;
+<a class="jxr_linenumber" name="L1193" href="#L1193">1193</a>                 bits &lt;&lt;= 1;
+<a class="jxr_linenumber" name="L1194" href="#L1194">1194</a>             }
+<a class="jxr_linenumber" name="L1195" href="#L1195">1195</a>         }
+<a class="jxr_linenumber" name="L1196" href="#L1196">1196</a> 
+<a class="jxr_linenumber" name="L1197" href="#L1197">1197</a> 
+<a class="jxr_linenumber" name="L1198" href="#L1198">1198</a>         <strong class="jxr_keyword">if</strong> ((exp == -1 || exp == 0) &amp;&amp; x &lt; 1.01 &amp;&amp; x &gt; 0.99 &amp;&amp; hiPrec == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L1199" href="#L1199">1199</a>             <em class="jxr_comment">/* The normal method doesn't work well in the range [0.99, 1.01], so call do a straight</em>
+<a class="jxr_linenumber" name="L1200" href="#L1200">1200</a> <em class="jxr_comment">           polynomial expansion in higer precision. */</em>
 <a class="jxr_linenumber" name="L1201" href="#L1201">1201</a> 
-<a class="jxr_linenumber" name="L1202" href="#L1202">1202</a>         <strong class="jxr_keyword">if</strong> ((exp == -1 || exp == 0) &amp;&amp; x &lt; 1.01 &amp;&amp; x &gt; 0.99 &amp;&amp; hiPrec == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1203" href="#L1203">1203</a>             <em class="jxr_comment">/* The normal method doesn't work well in the range [0.99, 1.01], so call do a straight</em>
-<a class="jxr_linenumber" name="L1204" href="#L1204">1204</a> <em class="jxr_comment">           polynomial expansion in higer precision. */</em>
-<a class="jxr_linenumber" name="L1205" href="#L1205">1205</a> 
-<a class="jxr_linenumber" name="L1206" href="#L1206">1206</a>             <em class="jxr_comment">/* Compute x - 1.0 and split it */</em>
-<a class="jxr_linenumber" name="L1207" href="#L1207">1207</a>             <strong class="jxr_keyword">double</strong> xa = x - 1.0;
-<a class="jxr_linenumber" name="L1208" href="#L1208">1208</a>             <strong class="jxr_keyword">double</strong> xb = xa - x + 1.0;
-<a class="jxr_linenumber" name="L1209" href="#L1209">1209</a>             <strong class="jxr_keyword">double</strong> tmp = xa * HEX_40000000;
-<a class="jxr_linenumber" name="L1210" href="#L1210">1210</a>             <strong class="jxr_keyword">double</strong> aa = xa + tmp - tmp;
-<a class="jxr_linenumber" name="L1211" href="#L1211">1211</a>             <strong class="jxr_keyword">double</strong> ab = xa - aa;
-<a class="jxr_linenumber" name="L1212" href="#L1212">1212</a>             xa = aa;
-<a class="jxr_linenumber" name="L1213" href="#L1213">1213</a>             xb = ab;
+<a class="jxr_linenumber" name="L1202" href="#L1202">1202</a>             <em class="jxr_comment">/* Compute x - 1.0 and split it */</em>
+<a class="jxr_linenumber" name="L1203" href="#L1203">1203</a>             <strong class="jxr_keyword">double</strong> xa = x - 1.0;
+<a class="jxr_linenumber" name="L1204" href="#L1204">1204</a>             <strong class="jxr_keyword">double</strong> xb = xa - x + 1.0;
+<a class="jxr_linenumber" name="L1205" href="#L1205">1205</a>             <strong class="jxr_keyword">double</strong> tmp = xa * HEX_40000000;
+<a class="jxr_linenumber" name="L1206" href="#L1206">1206</a>             <strong class="jxr_keyword">double</strong> aa = xa + tmp - tmp;
+<a class="jxr_linenumber" name="L1207" href="#L1207">1207</a>             <strong class="jxr_keyword">double</strong> ab = xa - aa;
+<a class="jxr_linenumber" name="L1208" href="#L1208">1208</a>             xa = aa;
+<a class="jxr_linenumber" name="L1209" href="#L1209">1209</a>             xb = ab;
+<a class="jxr_linenumber" name="L1210" href="#L1210">1210</a> 
+<a class="jxr_linenumber" name="L1211" href="#L1211">1211</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] lnCoef_last = LN_QUICK_COEF[LN_QUICK_COEF.length - 1];
+<a class="jxr_linenumber" name="L1212" href="#L1212">1212</a>             <strong class="jxr_keyword">double</strong> ya = lnCoef_last[0];
+<a class="jxr_linenumber" name="L1213" href="#L1213">1213</a>             <strong class="jxr_keyword">double</strong> yb = lnCoef_last[1];
 <a class="jxr_linenumber" name="L1214" href="#L1214">1214</a> 
-<a class="jxr_linenumber" name="L1215" href="#L1215">1215</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] lnCoef_last = LN_QUICK_COEF[LN_QUICK_COEF.length - 1];
-<a class="jxr_linenumber" name="L1216" href="#L1216">1216</a>             <strong class="jxr_keyword">double</strong> ya = lnCoef_last[0];
-<a class="jxr_linenumber" name="L1217" href="#L1217">1217</a>             <strong class="jxr_keyword">double</strong> yb = lnCoef_last[1];
-<a class="jxr_linenumber" name="L1218" href="#L1218">1218</a> 
-<a class="jxr_linenumber" name="L1219" href="#L1219">1219</a>             <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = LN_QUICK_COEF.length - 2; i &gt;= 0; i--) {
-<a class="jxr_linenumber" name="L1220" href="#L1220">1220</a>                 <em class="jxr_comment">/* Multiply a = y * x */</em>
-<a class="jxr_linenumber" name="L1221" href="#L1221">1221</a>                 aa = ya * xa;
-<a class="jxr_linenumber" name="L1222" href="#L1222">1222</a>                 ab = ya * xb + yb * xa + yb * xb;
-<a class="jxr_linenumber" name="L1223" href="#L1223">1223</a>                 <em class="jxr_comment">/* split, so now y = a */</em>
-<a class="jxr_linenumber" name="L1224" href="#L1224">1224</a>                 tmp = aa * HEX_40000000;
-<a class="jxr_linenumber" name="L1225" href="#L1225">1225</a>                 ya = aa + tmp - tmp;
-<a class="jxr_linenumber" name="L1226" href="#L1226">1226</a>                 yb = aa - ya + ab;
-<a class="jxr_linenumber" name="L1227" href="#L1227">1227</a> 
-<a class="jxr_linenumber" name="L1228" href="#L1228">1228</a>                 <em class="jxr_comment">/* Add  a = y + lnQuickCoef */</em>
-<a class="jxr_linenumber" name="L1229" href="#L1229">1229</a>                 <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] lnCoef_i = LN_QUICK_COEF[i];
-<a class="jxr_linenumber" name="L1230" href="#L1230">1230</a>                 aa = ya + lnCoef_i[0];
-<a class="jxr_linenumber" name="L1231" href="#L1231">1231</a>                 ab = yb + lnCoef_i[1];
-<a class="jxr_linenumber" name="L1232" href="#L1232">1232</a>                 <em class="jxr_comment">/* Split y = a */</em>
-<a class="jxr_linenumber" name="L1233" href="#L1233">1233</a>                 tmp = aa * HEX_40000000;
-<a class="jxr_linenumber" name="L1234" href="#L1234">1234</a>                 ya = aa + tmp - tmp;
-<a class="jxr_linenumber" name="L1235" href="#L1235">1235</a>                 yb = aa - ya + ab;
-<a class="jxr_linenumber" name="L1236" href="#L1236">1236</a>             }
-<a class="jxr_linenumber" name="L1237" href="#L1237">1237</a> 
-<a class="jxr_linenumber" name="L1238" href="#L1238">1238</a>             <em class="jxr_comment">/* Multiply a = y * x */</em>
-<a class="jxr_linenumber" name="L1239" href="#L1239">1239</a>             aa = ya * xa;
-<a class="jxr_linenumber" name="L1240" href="#L1240">1240</a>             ab = ya * xb + yb * xa + yb * xb;
-<a class="jxr_linenumber" name="L1241" href="#L1241">1241</a>             <em class="jxr_comment">/* split, so now y = a */</em>
-<a class="jxr_linenumber" name="L1242" href="#L1242">1242</a>             tmp = aa * HEX_40000000;
-<a class="jxr_linenumber" name="L1243" href="#L1243">1243</a>             ya = aa + tmp - tmp;
-<a class="jxr_linenumber" name="L1244" href="#L1244">1244</a>             yb = aa - ya + ab;
-<a class="jxr_linenumber" name="L1245" href="#L1245">1245</a> 
-<a class="jxr_linenumber" name="L1246" href="#L1246">1246</a>             <strong class="jxr_keyword">return</strong> ya + yb;
-<a class="jxr_linenumber" name="L1247" href="#L1247">1247</a>         }
-<a class="jxr_linenumber" name="L1248" href="#L1248">1248</a> 
-<a class="jxr_linenumber" name="L1249" href="#L1249">1249</a>         <em class="jxr_comment">// lnm is a log of a number in the range of 1.0 - 2.0, so 0 &lt;= lnm &lt; ln(2)</em>
-<a class="jxr_linenumber" name="L1250" href="#L1250">1250</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] lnm = lnMant.LN_MANT[(<strong class="jxr_keyword">int</strong>)((bits &amp; 0x000ffc0000000000L) &gt;&gt; 42)];
-<a class="jxr_linenumber" name="L1251" href="#L1251">1251</a> 
-<a class="jxr_linenumber" name="L1252" href="#L1252">1252</a>         <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L1253" href="#L1253">1253</a> <em class="jxr_comment">    double epsilon = x / Double.longBitsToDouble(bits &amp; 0xfffffc0000000000L);</em>
-<a class="jxr_linenumber" name="L1254" href="#L1254">1254</a> 
-<a class="jxr_linenumber" name="L1255" href="#L1255">1255</a> <em class="jxr_comment">    epsilon -= 1.0;</em>
-<a class="jxr_linenumber" name="L1256" href="#L1256">1256</a> <em class="jxr_comment">         */</em>
-<a class="jxr_linenumber" name="L1257" href="#L1257">1257</a> 
-<a class="jxr_linenumber" name="L1258" href="#L1258">1258</a>         <em class="jxr_comment">// y is the most significant 10 bits of the mantissa</em>
-<a class="jxr_linenumber" name="L1259" href="#L1259">1259</a>         <em class="jxr_comment">//double y = Double.longBitsToDouble(bits &amp; 0xfffffc0000000000L);</em>
-<a class="jxr_linenumber" name="L1260" href="#L1260">1260</a>         <em class="jxr_comment">//double epsilon = (x - y) / y;</em>
-<a class="jxr_linenumber" name="L1261" href="#L1261">1261</a>         <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> epsilon = (bits &amp; 0x3ffffffffffL) / (TWO_POWER_52 + (bits &amp; 0x000ffc0000000000L));
-<a class="jxr_linenumber" name="L1262" href="#L1262">1262</a> 
-<a class="jxr_linenumber" name="L1263" href="#L1263">1263</a>         <strong class="jxr_keyword">double</strong> lnza = 0.0;
-<a class="jxr_linenumber" name="L1264" href="#L1264">1264</a>         <strong class="jxr_keyword">double</strong> lnzb = 0.0;
-<a class="jxr_linenumber" name="L1265" href="#L1265">1265</a> 
-<a class="jxr_linenumber" name="L1266" href="#L1266">1266</a>         <strong class="jxr_keyword">if</strong> (hiPrec != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L1267" href="#L1267">1267</a>             <em class="jxr_comment">/* split epsilon -&gt; x */</em>
-<a class="jxr_linenumber" name="L1268" href="#L1268">1268</a>             <strong class="jxr_keyword">double</strong> tmp = epsilon * HEX_40000000;
-<a class="jxr_linenumber" name="L1269" href="#L1269">1269</a>             <strong class="jxr_keyword">double</strong> aa = epsilon + tmp - tmp;
-<a class="jxr_linenumber" name="L1270" href="#L1270">1270</a>             <strong class="jxr_keyword">double</strong> ab = epsilon - aa;
-<a class="jxr_linenumber" name="L1271" href="#L1271">1271</a>             <strong class="jxr_keyword">double</strong> xa = aa;
-<a class="jxr_linenumber" name="L1272" href="#L1272">1272</a>             <strong class="jxr_keyword">double</strong> xb = ab;
-<a class="jxr_linenumber" name="L1273" href="#L1273">1273</a> 
-<a class="jxr_linenumber" name="L1274" href="#L1274">1274</a>             <em class="jxr_comment">/* Need a more accurate epsilon, so adjust the division. */</em>
-<a class="jxr_linenumber" name="L1275" href="#L1275">1275</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> numer = bits &amp; 0x3ffffffffffL;
-<a class="jxr_linenumber" name="L1276" href="#L1276">1276</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong> denom = TWO_POWER_52 + (bits &amp; 0x000ffc0000000000L);
-<a class="jxr_linenumber" name="L1277" href="#L1277">1277</a>             aa = numer - xa*denom - xb * denom;
-<a class="jxr_linenumber" name="L1278" href="#L1278">1278</a>             xb += aa / denom;
-<a class="jxr_linenumber" name="L1279" href="#L1279">1279</a> 
-<a class="jxr_linenumber" name="L1280" href="#L1280">1280</a>             <em class="jxr_comment">/* Remez polynomial evaluation */</em>
-<a class="jxr_linenumber" name="L1281" href="#L1281">1281</a>             <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">double</strong>[] lnCoef_last = LN_HI_PREC_COEF[LN_HI_PREC_COEF.length-1];
-<a class="jxr_linenumber" name="L1282" href="#L1282">1282</a>             <strong class="jxr_keyword">double</strong> ya = lnCoef_last[0];

[... 5818 lines stripped ...]


Mime
View raw message