Print this page
11210 libm should be cstyle(1ONBLD) clean

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/LD/j0l.c
          +++ new/usr/src/lib/libm/common/LD/j0l.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  24   24   */
       25 +
  25   26  /*
  26   27   * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  27   28   * Use is subject to license terms.
  28   29   */
  29   30  
  30   31  /*
  31   32   * Floating point Bessel's function of the first and second kinds
  32   33   * of order zero: j0(x),y0(x);
  33   34   *
  34   35   * Special cases:
↓ open down ↓ 6 lines elided ↑ open up ↑
  41   42  
  42   43  #include "libm.h"
  43   44  
  44   45  #include "longdouble.h"
  45   46  
  46   47  #include <math.h>
  47   48  #if defined(__SUNPRO_C)
  48   49  #include <sunmath.h>
  49   50  #endif
  50   51  
  51      -#define GENERIC long double
  52      -static GENERIC
  53      -zero    = 0.0L,
  54      -small   = 1.0e-9L,
  55      -tiny    = 1.0e-38L,
  56      -one     = 1.0L,
  57      -five    = 5.0L,
  58      -eight   = 8.0L,
  59      -invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
  60      -tpi     = 0.636619772367581343075535053490057448L;
       52 +#define GENERIC long double
       53 +
       54 +static GENERIC zero = 0.0L,
       55 +        small = 1.0e-9L,
       56 +        tiny = 1.0e-38L,
       57 +        one = 1.0L,
       58 +        five = 5.0L,
       59 +        eight = 8.0L,
       60 +        invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
       61 +        tpi = 0.636619772367581343075535053490057448L;
  61   62  
  62   63  static GENERIC pzero(), qzero();
       64 +
  63   65  static GENERIC r0[7] = {
  64      -  -2.499999999999999999999999999999998934492e-0001L,
  65      -   1.272657927360049786327618451133763714880e-0002L,
  66      -  -2.694499763712963276900636693400659600898e-0004L,
  67      -   2.724877475058977576903234070919616447883e-0006L,
  68      -  -1.432617103214330236967477495393076320281e-0008L,
  69      -   3.823248804080079168706683540513792224471e-0011L,
  70      -  -4.183174277567983647337568504286313665065e-0014L,
       66 +        -2.499999999999999999999999999999998934492e-0001L,
       67 +        1.272657927360049786327618451133763714880e-0002L,
       68 +        -2.694499763712963276900636693400659600898e-0004L,
       69 +        2.724877475058977576903234070919616447883e-0006L,
       70 +        -1.432617103214330236967477495393076320281e-0008L,
       71 +        3.823248804080079168706683540513792224471e-0011L,
       72 +        -4.183174277567983647337568504286313665065e-0014L,
  71   73  };
       74 +
  72   75  static GENERIC s0[7] = {
  73      -   1.0e0L,
  74      -   1.159368290559800854689526195462884666395e-0002L,
  75      -   6.629397597394973383009743876169946772559e-0005L,
  76      -   2.426779981394054406305431142501735094340e-0007L,
  77      -   6.097663491248511069094400469635449749883e-0010L,
  78      -   1.017019133340929220238747413216052224036e-0012L,
  79      -   9.012593179306197579518374581969371278481e-0016L,
       76 +        1.0e0L,
       77 +        1.159368290559800854689526195462884666395e-0002L,
       78 +        6.629397597394973383009743876169946772559e-0005L,
       79 +        2.426779981394054406305431142501735094340e-0007L,
       80 +        6.097663491248511069094400469635449749883e-0010L,
       81 +        1.017019133340929220238747413216052224036e-0012L,
       82 +        9.012593179306197579518374581969371278481e-0016L,
  80   83  };
  81   84  
  82   85  GENERIC
  83      -j0l(x) GENERIC x; {
       86 +j0l(GENERIC x)
       87 +{
  84   88          GENERIC z, s, c, ss, cc, r, u, v;
  85   89          int i;
  86   90  
  87   91          if (isnanl(x))
  88      -                return (x+x);
       92 +                return (x + x);
       93 +
  89   94          x = fabsl(x);
       95 +
  90   96          if (x > 1.28L) {
  91   97                  if (!finitel(x))
  92   98                          return (zero);
       99 +
  93  100                  s = sinl(x);
  94  101                  c = cosl(x);
  95      -        /*
  96      -         * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
  97      -         * where x0 = x-pi/4
  98      -         *      Better formula:
  99      -         *              cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
 100      -         *                      = 1/sqrt(2) * (cos(x) + sin(x))
 101      -         *              sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
 102      -         *                      = 1/sqrt(2) * (sin(x) - cos(x))
 103      -         * To avoid cancellation, use
 104      -         *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
 105      -         * to compute the worse one.
 106      -         */
      102 +
      103 +                /* BEGIN CSTYLED */
      104 +                /*
      105 +                 * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
      106 +                 * where x0 = x-pi/4
      107 +                 *      Better formula:
      108 +                 *              cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
      109 +                 *                      = 1/sqrt(2) * (cos(x) + sin(x))
      110 +                 *              sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
      111 +                 *                      = 1/sqrt(2) * (sin(x) - cos(x))
      112 +                 * To avoid cancellation, use
      113 +                 *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
      114 +                 * to compute the worse one.
      115 +                 */
      116 +                /* END CSTYLED */
 107  117                  if (x > 1.0e2450L) {    /* x+x may overflow */
 108      -                        ss = s-c;
 109      -                        cc = s+c;
      118 +                        ss = s - c;
      119 +                        cc = s + c;
 110  120                  } else if (signbitl(s) != signbitl(c)) {
 111  121                          ss = s - c;
 112      -                        cc = -cosl(x+x)/ss;
      122 +                        cc = -cosl(x + x) / ss;
 113  123                  } else {
 114  124                          cc = s + c;
 115      -                        ss = -cosl(x+x)/cc;
      125 +                        ss = -cosl(x + x) / cc;
 116  126                  }
 117      -        /*
 118      -         * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
 119      -         * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
 120      -         */
      127 +
      128 +                /*
      129 +                 * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
      130 +                 * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
      131 +                 */
 121  132                  if (x > 1.0e120L)
 122      -                        return (invsqrtpi*cc)/sqrtl(x);
 123      -                u = pzero(x); v = qzero(x);
 124      -                return (invsqrtpi*(u*cc-v*ss)/sqrtl(x));
      133 +                        return ((invsqrtpi * cc) / sqrtl(x));
      134 +
      135 +                u = pzero(x);
      136 +                v = qzero(x);
      137 +                return (invsqrtpi * (u * cc - v * ss) / sqrtl(x));
 125  138          }
      139 +
 126  140          if (x <= small) {
 127      -            if (x <= tiny)
 128      -                        return (one-x);
 129      -            else
 130      -                        return (one-x*x*0.25L);
      141 +                if (x <= tiny)
      142 +                        return (one - x);
      143 +                else
      144 +                        return (one - x * x * 0.25L);
 131  145          }
 132      -        z = x*x;
 133      -        r = r0[6]; s = s0[6];
      146 +
      147 +        z = x * x;
      148 +        r = r0[6];
      149 +        s = s0[6];
      150 +
 134  151          for (i = 5; i >= 0; i--) {
 135      -            r = r*z + r0[i];
 136      -            s = s*z + s0[i];
      152 +                r = r * z + r0[i];
      153 +                s = s * z + s0[i];
 137  154          }
 138      -        return (one+z*(r/s));
      155 +
      156 +        return (one + z * (r / s));
 139  157  }
 140  158  
 141  159  static GENERIC u0[8] = {
 142      -  -7.380429510868722527434392794848301631220e-0002L,
 143      -   1.766855559625940791857536949301981816513e-0001L,
 144      -  -1.386470722701047923235553251240162839408e-0002L,
 145      -   3.520149242724811578636970811631224862615e-0004L,
 146      -  -3.978599663243790049853642275624951870025e-0006L,
 147      -   2.228801153263957224547222556806915479763e-0008L,
 148      -  -6.121246764298785018658597179498837316177e-0011L,
 149      -   6.677103629722678833475965810525587396596e-0014L,
      160 +        -7.380429510868722527434392794848301631220e-0002L,
      161 +        1.766855559625940791857536949301981816513e-0001L,
      162 +        -1.386470722701047923235553251240162839408e-0002L,
      163 +        3.520149242724811578636970811631224862615e-0004L,
      164 +        -3.978599663243790049853642275624951870025e-0006L,
      165 +        2.228801153263957224547222556806915479763e-0008L,
      166 +        -6.121246764298785018658597179498837316177e-0011L,
      167 +        6.677103629722678833475965810525587396596e-0014L,
 150  168  };
      169 +
 151  170  static GENERIC v0[8] = {
 152      -   1.0e0L,
 153      -   1.247164416539111311571676766127767127970e-0002L,
 154      -   7.829144749639791500052900281489367443576e-0005L,
 155      -   3.247126540422245330511218321013360336606e-0007L,
 156      -   9.750516724789499678567062572549568447869e-0010L,
 157      -   2.156713223173591212250543390258458098776e-0012L,
 158      -   3.322169561597890004231482431236452752624e-0015L,
 159      -   2.821213295314000924252226486305726805093e-0018L,
      171 +        1.0e0L,
      172 +        1.247164416539111311571676766127767127970e-0002L,
      173 +        7.829144749639791500052900281489367443576e-0005L,
      174 +        3.247126540422245330511218321013360336606e-0007L,
      175 +        9.750516724789499678567062572549568447869e-0010L,
      176 +        2.156713223173591212250543390258458098776e-0012L,
      177 +        3.322169561597890004231482431236452752624e-0015L,
      178 +        2.821213295314000924252226486305726805093e-0018L,
 160  179  };
 161  180  
 162  181  GENERIC
 163  182  y0l(GENERIC x)
 164  183  {
 165  184          GENERIC z, s, c, ss, cc, u, v;
 166  185          GENERIC d __unused;
 167  186          int i;
 168  187  
 169  188          if (isnanl(x))
 170      -                return (x+x);
      189 +                return (x + x);
      190 +
 171  191          if (x <= zero) {
 172  192                  if (x == zero)
 173      -                    d = -one/(x-x);
      193 +                        d = -one / (x - x);
 174  194                  else
 175      -                    d = zero/(x-x);
      195 +                        d = zero / (x - x);
 176  196          }
      197 +
 177  198          if (x > 1.28L) {
 178  199                  if (!finitel(x))
 179  200                          return (zero);
      201 +
 180  202                  s = sinl(x);
 181  203                  c = cosl(x);
 182      -        /*
 183      -         * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
 184      -         * where x0 = x-pi/4
 185      -         *      Better formula:
 186      -         *              cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
 187      -         *                      = 1/sqrt(2) * (cos(x) + sin(x))
 188      -         *              sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
 189      -         *                      = 1/sqrt(2) * (sin(x) - cos(x))
 190      -         * To avoid cancellation, use
 191      -         *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
 192      -         * to compute the worse one.
 193      -         */
      204 +
      205 +                /* BEGIN CSTYLED */
      206 +                /*
      207 +                 * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
      208 +                 * where x0 = x-pi/4
      209 +                 *      Better formula:
      210 +                 *              cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
      211 +                 *                      = 1/sqrt(2) * (cos(x) + sin(x))
      212 +                 *              sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
      213 +                 *                      = 1/sqrt(2) * (sin(x) - cos(x))
      214 +                 * To avoid cancellation, use
      215 +                 *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
      216 +                 * to compute the worse one.
      217 +                 */
      218 +                /* END CSTYLED */
 194  219                  if (x > 1.0e2450L) {    /* x+x may overflow */
 195      -                        ss = s-c;
 196      -                        cc = s+c;
      220 +                        ss = s - c;
      221 +                        cc = s + c;
 197  222                  } else if (signbitl(s) != signbitl(c)) {
 198  223                          ss = s - c;
 199      -                        cc = -cosl(x+x)/ss;
      224 +                        cc = -cosl(x + x) / ss;
 200  225                  } else {
 201  226                          cc = s + c;
 202      -                        ss = -cosl(x+x)/cc;
      227 +                        ss = -cosl(x + x) / cc;
 203  228                  }
 204      -        /*
 205      -         * j0(x) = 1/sqrt(pi*x) * (P(0,x)*cc - Q(0,x)*ss)
 206      -         * y0(x) = 1/sqrt(pi*x) * (P(0,x)*ss + Q(0,x)*cc)
 207      -         */
      229 +
      230 +                /*
      231 +                 * j0(x) = 1/sqrt(pi*x) * (P(0,x)*cc - Q(0,x)*ss)
      232 +                 * y0(x) = 1/sqrt(pi*x) * (P(0,x)*ss + Q(0,x)*cc)
      233 +                 */
 208  234                  if (x > 1.0e120L)
 209      -                        return (invsqrtpi*ss)/sqrtl(x);
 210      -                return (invsqrtpi*(pzero(x)*ss+qzero(x)*cc)/sqrtl(x));
      235 +                        return ((invsqrtpi * ss) / sqrtl(x));
 211  236  
      237 +                return (invsqrtpi * (pzero(x) * ss + qzero(x) * cc) / sqrtl(x));
 212  238          }
 213      -        if (x <= tiny) {
 214      -            return (u0[0] + tpi*logl(x));
 215      -        }
 216      -        z = x*x;
 217      -        u = u0[7]; v = v0[7];
      239 +
      240 +        if (x <= tiny)
      241 +                return (u0[0] + tpi * logl(x));
      242 +
      243 +        z = x * x;
      244 +        u = u0[7];
      245 +        v = v0[7];
      246 +
 218  247          for (i = 6; i >= 0; i--) {
 219      -            u = u*z + u0[i];
 220      -            v = v*z + v0[i];
      248 +                u = u * z + u0[i];
      249 +                v = v * z + v0[i];
 221  250          }
 222      -        return (u/v + tpi*(j0l(x)*logl(x)));
      251 +
      252 +        return (u / v + tpi * (j0l(x) * logl(x)));
 223  253  }
 224  254  
 225      -static GENERIC pr0[12] = {      /* [16 -- inf] */
 226      -   9.999999999999999999999999999999999997515e-0001L,
 227      -   1.065981615377273376425365823967550598358e+0003L,
 228      -   4.390991200927588978306374718984240719130e+0005L,
 229      -   9.072086218607986711847069407339321363103e+0007L,
 230      -   1.022552886177375367408408501046461671528e+0010L,
 231      -   6.420766912243658241570635854089597269031e+0011L,
 232      -   2.206451725126933913591080211081242266908e+0013L,
 233      -   3.928369596816895077363705478743346298368e+0014L,
 234      -   3.258159928874124597286701119721482876596e+0015L,
 235      -   1.025715808134188978860679130140685101348e+0016L,
 236      -   7.537170874795721255796001687024031280685e+0015L,
 237      -  -1.579413901450157332307745586004207687796e+0014L,
      255 +static GENERIC pr0[12] = {              /* [16 -- inf] */
      256 +        9.999999999999999999999999999999999997515e-0001L,
      257 +        1.065981615377273376425365823967550598358e+0003L,
      258 +        4.390991200927588978306374718984240719130e+0005L,
      259 +        9.072086218607986711847069407339321363103e+0007L,
      260 +        1.022552886177375367408408501046461671528e+0010L,
      261 +        6.420766912243658241570635854089597269031e+0011L,
      262 +        2.206451725126933913591080211081242266908e+0013L,
      263 +        3.928369596816895077363705478743346298368e+0014L,
      264 +        3.258159928874124597286701119721482876596e+0015L,
      265 +        1.025715808134188978860679130140685101348e+0016L,
      266 +        7.537170874795721255796001687024031280685e+0015L,
      267 +        -1.579413901450157332307745586004207687796e+0014L,
 238  268  };
      269 +
 239  270  static GENERIC ps0[11] = {
 240      -   1.0e0L,
 241      -   1.066051927877273376425365823967550512687e+0003L,
 242      -   4.391739647168381592399173804329266353038e+0005L,
 243      -   9.075162261801343671805658294123888867884e+0007L,
 244      -   1.023186118519904751819581912075985995058e+0010L,
 245      -   6.427861860414223746340515376512730275061e+0011L,
 246      -   2.210861503237823589735481303627993406235e+0013L,
 247      -   3.943247335784292905915956840901818177989e+0014L,
 248      -   3.283720976777545142150200110647270004481e+0015L,
 249      -   1.045346918812754048903645641538728986759e+0016L,
 250      -   8.043455468065618900750599584291193680463e+0015L,
 251      -};
 252      -static GENERIC pr1[12] = {      /* [8 -- 16] */
 253      -   9.999999999999999999999784422701108683618e-0001L,
 254      -   6.796098532948334207755488692777907062894e+0002L,
 255      -   1.840036112605722168824530758797169836042e+0005L,
 256      -   2.598490483191916637264894340635847598122e+0007L,
 257      -   2.105774863242707025525730249472054578523e+0009L,
 258      -   1.015822044230542426666314997796944979959e+0011L,
 259      -   2.931557457008110436764077699944189071875e+0012L,
 260      -   4.962885121125457633655259224179322808824e+0013L,
 261      -   4.705424055148223269155430598563351566279e+0014L,
 262      -   2.294439854910747229152056080910427001110e+0015L,
 263      -   4.905531843137486691500950019322475458629e+0015L,
 264      -   3.187543169710339218793442542845735994565e+0015L,
      271 +        1.0e0L,
      272 +        1.066051927877273376425365823967550512687e+0003L,
      273 +        4.391739647168381592399173804329266353038e+0005L,
      274 +        9.075162261801343671805658294123888867884e+0007L,
      275 +        1.023186118519904751819581912075985995058e+0010L,
      276 +        6.427861860414223746340515376512730275061e+0011L,
      277 +        2.210861503237823589735481303627993406235e+0013L,
      278 +        3.943247335784292905915956840901818177989e+0014L,
      279 +        3.283720976777545142150200110647270004481e+0015L,
      280 +        1.045346918812754048903645641538728986759e+0016L,
      281 +        8.043455468065618900750599584291193680463e+0015L,
      282 +};
      283 +
      284 +static GENERIC pr1[12] = {              /* [8 -- 16] */
      285 +        9.999999999999999999999784422701108683618e-0001L,
      286 +        6.796098532948334207755488692777907062894e+0002L,
      287 +        1.840036112605722168824530758797169836042e+0005L,
      288 +        2.598490483191916637264894340635847598122e+0007L,
      289 +        2.105774863242707025525730249472054578523e+0009L,
      290 +        1.015822044230542426666314997796944979959e+0011L,
      291 +        2.931557457008110436764077699944189071875e+0012L,
      292 +        4.962885121125457633655259224179322808824e+0013L,
      293 +        4.705424055148223269155430598563351566279e+0014L,
      294 +        2.294439854910747229152056080910427001110e+0015L,
      295 +        4.905531843137486691500950019322475458629e+0015L,
      296 +        3.187543169710339218793442542845735994565e+0015L,
 265  297  };
      298 +
 266  299  static GENERIC ps1[14] = {
 267      -   1.0e0L,
 268      -   6.796801657948334207754571576066758180288e+0002L,
 269      -   1.840512891201300567325421059826676366447e+0005L,
 270      -   2.599777028312918975306252167127695075221e+0007L,
 271      -   2.107582572771047636846811284634244892537e+0009L,
 272      -   1.017275794694156108975782763889979940348e+0011L,
 273      -   2.938487645192463845428059755454762316011e+0012L,
 274      -   4.982512164735557054521042916182317924466e+0013L,
 275      -   4.737639900153703274792677468264564361437e+0014L,
 276      -   2.323398719123742743524249528275097100646e+0015L,
 277      -   5.033419107069210577868909797896984419391e+0015L,
 278      -   3.409036105931068609601317076759804716059e+0015L,
 279      -   7.505655364352679737585745147753521662166e+0013L,
 280      -  -9.976837153983688250780198248297109118313e+0012L,
 281      -};
 282      -static GENERIC pr2[12] = {      /* [5 -- 8 ] */
 283      -   9.999999999999999937857236789277366320220e-0001L,
 284      -   3.692848765268649571651602420376358849214e+0002L,
 285      -   5.373022067535476576926715900057760985410e+0004L,
 286      -   4.038738891191314969971504035057219430725e+0006L,
 287      -   1.728285706306940523397385566659762646999e+0008L,
 288      -   4.375400819645889911158688737206054788534e+0009L,
 289      -   6.598950418204912408375591217782088567076e+0010L,
 290      -   5.827182039183238492480275401520072793783e+0011L,
 291      -   2.884222642913492390887572414999490975844e+0012L,
 292      -   7.373278873797767721932837830628688632775e+0012L,
 293      -   8.338295457568973761205077964397969230489e+0012L,
 294      -   2.911383183467288345772308817209806922143e+0012L,
      300 +        1.0e0L,
      301 +        6.796801657948334207754571576066758180288e+0002L,
      302 +        1.840512891201300567325421059826676366447e+0005L,
      303 +        2.599777028312918975306252167127695075221e+0007L,
      304 +        2.107582572771047636846811284634244892537e+0009L,
      305 +        1.017275794694156108975782763889979940348e+0011L,
      306 +        2.938487645192463845428059755454762316011e+0012L,
      307 +        4.982512164735557054521042916182317924466e+0013L,
      308 +        4.737639900153703274792677468264564361437e+0014L,
      309 +        2.323398719123742743524249528275097100646e+0015L,
      310 +        5.033419107069210577868909797896984419391e+0015L,
      311 +        3.409036105931068609601317076759804716059e+0015L,
      312 +        7.505655364352679737585745147753521662166e+0013L,
      313 +        -9.976837153983688250780198248297109118313e+0012L,
      314 +};
      315 +
      316 +static GENERIC pr2[12] = {              /* [5 -- 8 ] */
      317 +        9.999999999999999937857236789277366320220e-0001L,
      318 +        3.692848765268649571651602420376358849214e+0002L,
      319 +        5.373022067535476576926715900057760985410e+0004L,
      320 +        4.038738891191314969971504035057219430725e+0006L,
      321 +        1.728285706306940523397385566659762646999e+0008L,
      322 +        4.375400819645889911158688737206054788534e+0009L,
      323 +        6.598950418204912408375591217782088567076e+0010L,
      324 +        5.827182039183238492480275401520072793783e+0011L,
      325 +        2.884222642913492390887572414999490975844e+0012L,
      326 +        7.373278873797767721932837830628688632775e+0012L,
      327 +        8.338295457568973761205077964397969230489e+0012L,
      328 +        2.911383183467288345772308817209806922143e+0012L,
 295  329  };
      330 +
 296  331  static GENERIC ps2[14] = {
 297      -   1.0e0L,
 298      -   3.693551890268649477288896267171993213102e+0002L,
 299      -   5.375607880998361502474715133828068514297e+0004L,
 300      -   4.042477764024108249744998862572786367328e+0006L,
 301      -   1.731069838737016956685839588670132939513e+0008L,
 302      -   4.387147674049898778738226585935491417728e+0009L,
 303      -   6.628058659620653765349556940567715258165e+0010L,
 304      -   5.869659904164177740471685856367322160664e+0011L,
 305      -   2.919839445622817017058977559638969436383e+0012L,
 306      -   7.535314897696671402628203718612309253907e+0012L,
 307      -   8.696355561452933775773309859748610658935e+0012L,
 308      -   3.216155103141537221173601557697083216257e+0012L,
 309      -   4.756857081068942248246880159213789086363e+0010L,
 310      -  -3.496356619666608032231074866481472824067e+0009L,
 311      -};
 312      -static GENERIC pr3[13] = {      /* [3.5 -- 5 ] */
 313      -   9.999999999999916693107285612398196588247e-0001L,
 314      -   2.263975921282917721194425320484974336945e+0002L,
 315      -   1.994358386744245848889492762781484199966e+0004L,
 316      -   8.980067458430542243559962493831661323168e+0005L,
 317      -   2.282213787521372663705567756420087553508e+0007L,
 318      -   3.409784374889063618250288699908375135923e+0008L,
 319      -   3.024380857401448589254343517589811711108e+0009L,
 320      -   1.571110368046740246895071721443082286379e+0010L,
 321      -   4.603187020243604632153685300463160593768e+0010L,
 322      -   7.087196453409712719449549280664058793403e+0010L,
 323      -   5.046196021776346356803687409644239065041e+0010L,
 324      -   1.287758439080165765709154276618854799932e+0010L,
 325      -   5.900679773415023433787846658096813590784e+0008L,
      332 +        1.0e0L,
      333 +        3.693551890268649477288896267171993213102e+0002L,
      334 +        5.375607880998361502474715133828068514297e+0004L,
      335 +        4.042477764024108249744998862572786367328e+0006L,
      336 +        1.731069838737016956685839588670132939513e+0008L,
      337 +        4.387147674049898778738226585935491417728e+0009L,
      338 +        6.628058659620653765349556940567715258165e+0010L,
      339 +        5.869659904164177740471685856367322160664e+0011L,
      340 +        2.919839445622817017058977559638969436383e+0012L,
      341 +        7.535314897696671402628203718612309253907e+0012L,
      342 +        8.696355561452933775773309859748610658935e+0012L,
      343 +        3.216155103141537221173601557697083216257e+0012L,
      344 +        4.756857081068942248246880159213789086363e+0010L,
      345 +        -3.496356619666608032231074866481472824067e+0009L,
      346 +};
      347 +
      348 +static GENERIC pr3[13] = {              /* [3.5 -- 5 ] */
      349 +        9.999999999999916693107285612398196588247e-0001L,
      350 +        2.263975921282917721194425320484974336945e+0002L,
      351 +        1.994358386744245848889492762781484199966e+0004L,
      352 +        8.980067458430542243559962493831661323168e+0005L,
      353 +        2.282213787521372663705567756420087553508e+0007L,
      354 +        3.409784374889063618250288699908375135923e+0008L,
      355 +        3.024380857401448589254343517589811711108e+0009L,
      356 +        1.571110368046740246895071721443082286379e+0010L,
      357 +        4.603187020243604632153685300463160593768e+0010L,
      358 +        7.087196453409712719449549280664058793403e+0010L,
      359 +        5.046196021776346356803687409644239065041e+0010L,
      360 +        1.287758439080165765709154276618854799932e+0010L,
      361 +        5.900679773415023433787846658096813590784e+0008L,
 326  362  };
      363 +
 327  364  static GENERIC ps3[13] = {
 328      -   1.0e0L,
 329      -   2.264679046282855061328604619231774747116e+0002L,
 330      -   1.995939523988944553755653255389812103448e+0004L,
 331      -   8.993853144706348727038389967490183236820e+0005L,
 332      -   2.288326099634588843906989983704795468773e+0007L,
 333      -   3.424967100255240885169240956804790118282e+0008L,
 334      -   3.046311797972463991368023759640028910016e+0009L,
 335      -   1.589614961932826812790222479700797224003e+0010L,
 336      -   4.692406624527744816497089139325073939927e+0010L,
 337      -   7.320486495902008912866462849073108323948e+0010L,
 338      -   5.345945972828978289935309597742981360994e+0010L,
 339      -   1.444033091910423754121309915092247171008e+0010L,
 340      -   7.987714685115314668378957273824383610525e+0008L,
 341      -};
 342      -static GENERIC pr4[13] = {      /* [2.5, 3.5] */
 343      -   9.999999999986736677961118722747757712260e-0001L,
 344      -   1.453824980703800559037873123568378845663e+0002L,
 345      -   8.097327216430682288267610447006508661032e+0003L,
 346      -   2.273847252038264370231169686380192662135e+0005L,
 347      -   3.561056728046211111354759998976985449622e+0006L,
 348      -   3.244933588800096378434627029369680378599e+0007L,
 349      -   1.740112392860717950376210038908476792588e+0008L,
 350      -   5.426170187455893285197878563881579269524e+0008L,
 351      -   9.490107486454362321004377336020526281371e+0008L,
 352      -   8.688872439428470049801714121070005313806e+0008L,
 353      -   3.673315853166437222811910656900123215515e+0008L,
 354      -   5.577770470359303305164877446339693270239e+0007L,
 355      -   1.540438642031689641308197880181291865714e+0006L,
 356      -};
 357      -static GENERIC ps4[13] = {      /* [2.5, 3.5] */
 358      -   1.0e0L,
 359      -   1.454528105698159439773035951959131799816e+0002L,
 360      -   8.107442215200392397172179900434987859618e+0003L,
 361      -   2.279390393778242887574177096606328994140e+0005L,
 362      -   3.576251625592252008424781111770934135844e+0006L,
 363      -   3.267909499056932631405942058670933813863e+0007L,
 364      -   1.760021515330805537499778238099704648805e+0008L,
 365      -   5.525553787667353981242060222587465726729e+0008L,
 366      -   9.769870295912820457889384082671269328511e+0008L,
 367      -   9.110582071004774279226905629624018008454e+0008L,
 368      -   3.981857678621955599371967680343918454345e+0008L,
 369      -   6.482404686230769399073192961667697036706e+0007L,
 370      -   2.210046943095878402443535460329391782298e+0006L,
 371      -};
 372      -static GENERIC pr5[13] = {      /* [1.777..., 2.5] */
 373      -   9.999999999114986107951817871144655880699e-0001L,
 374      -   9.252583736048588342568344570315435947614e+0001L,
 375      -   3.218726757856078715214631502407386264637e+0003L,
 376      -   5.554009964621111656479588505862577040831e+0004L,
 377      -   5.269993115643664338253196944523510290175e+0005L,
 378      -   2.874613773778430691192912190618220544575e+0006L,
 379      -   9.133538151103658353874146919613442436035e+0006L,
 380      -   1.673067041410338922825193013077354249193e+0007L,
 381      -   1.706913873848398011744790289200151840498e+0007L,
 382      -   9.067766583853288534551600235576747618679e+0006L,
 383      -   2.216746733457884568532695355036338655872e+0006L,
 384      -   1.945753880802872541235703812722344514405e+0005L,
 385      -   3.132374412921948071539195638885330951749e+0003L,
 386      -};
 387      -static GENERIC ps5[13] = {      /* [1.777..., 2.5] */
 388      -   1.0e0L,
 389      -   9.259614983862181118883831670990340052982e+0001L,
 390      -   3.225125275462903384842124075132609290304e+0003L,
 391      -   5.575705362829101545292760055941855246492e+0004L,
 392      -   5.306049863037087855496170121958448492522e+0005L,
 393      -   2.907060758873509564309729903109018597215e+0006L,
 394      -   9.298059206584995898298257827131208539289e+0006L,
 395      -   1.720391071006963176836108026556547062980e+0007L,
 396      -   1.782614812922865190479394509487941920612e+0007L,
 397      -   9.708016389605273153536452032839879950155e+0006L,
 398      -   2.476495084688170096480215640962175140027e+0006L,
 399      -   2.363200660365585759668077790194604917187e+0005L,
 400      -   4.803239569848196077121203575704356936731e+0003L,
 401      -};
 402      -static GENERIC pr6[13] = {      /* [1.28, 1.777...] */
 403      -   9.999999969777095495998606925524322559556e-0001L,
 404      -   5.825486719466194430503283824096872219216e+0001L,
 405      -   1.248155491637757281915184824965379905380e+0003L,
 406      -   1.302093199842358609321338417071710477615e+0004L,
 407      -   7.353835804186292782840961999810543016039e+0004L,
 408      -   2.356471661113686180549195092555751341757e+0005L,
 409      -   4.350553267429009581632987060942780847101e+0005L,
 410      -   4.588762661876600638719159826652389418235e+0005L,
 411      -   2.675796398548523436544221045225290128611e+0005L,
 412      -   8.077649557108971388298292919988449940464e+0004L,
 413      -   1.117640459221306873519068741664054573776e+0004L,
 414      -   5.544400072396814695175787511557757885585e+0002L,
 415      -   5.072550541191480498431289089905822910718e+0000L,
 416      -};
 417      -static GENERIC ps6[13] = {      /* [1.28, 1.777...] */
 418      -   1.0e0L,
 419      -   5.832517925357165050639075848183613063291e+0001L,
 420      -   1.252144364743592128171256104364976466898e+0003L,
 421      -   1.310300234342216813579118022415585740772e+0004L,
 422      -   7.434667697093812197817292154032863632923e+0004L,
 423      -   2.398706595587719165726469002404004614711e+0005L,
 424      -   4.472737517625103157004869372427480602511e+0005L,
 425      -   4.786313523337761975294171429067037723611e+0005L,
 426      -   2.851161872872731228472536061865365370192e+0005L,
 427      -   8.891648269899148412331918021801385815586e+0004L,
 428      -   1.297097489535351517572978123584751042287e+0004L,
 429      -   7.096761640545975756202184143400469812618e+0002L,
 430      -   8.378049338590233325977702401733340820351e+0000L,
      365 +        1.0e0L,
      366 +        2.264679046282855061328604619231774747116e+0002L,
      367 +        1.995939523988944553755653255389812103448e+0004L,
      368 +        8.993853144706348727038389967490183236820e+0005L,
      369 +        2.288326099634588843906989983704795468773e+0007L,
      370 +        3.424967100255240885169240956804790118282e+0008L,
      371 +        3.046311797972463991368023759640028910016e+0009L,
      372 +        1.589614961932826812790222479700797224003e+0010L,
      373 +        4.692406624527744816497089139325073939927e+0010L,
      374 +        7.320486495902008912866462849073108323948e+0010L,
      375 +        5.345945972828978289935309597742981360994e+0010L,
      376 +        1.444033091910423754121309915092247171008e+0010L,
      377 +        7.987714685115314668378957273824383610525e+0008L,
      378 +};
      379 +
      380 +static GENERIC pr4[13] = {              /* [2.5, 3.5] */
      381 +        9.999999999986736677961118722747757712260e-0001L,
      382 +        1.453824980703800559037873123568378845663e+0002L,
      383 +        8.097327216430682288267610447006508661032e+0003L,
      384 +        2.273847252038264370231169686380192662135e+0005L,
      385 +        3.561056728046211111354759998976985449622e+0006L,
      386 +        3.244933588800096378434627029369680378599e+0007L,
      387 +        1.740112392860717950376210038908476792588e+0008L,
      388 +        5.426170187455893285197878563881579269524e+0008L,
      389 +        9.490107486454362321004377336020526281371e+0008L,
      390 +        8.688872439428470049801714121070005313806e+0008L,
      391 +        3.673315853166437222811910656900123215515e+0008L,
      392 +        5.577770470359303305164877446339693270239e+0007L,
      393 +        1.540438642031689641308197880181291865714e+0006L,
      394 +};
      395 +
      396 +static GENERIC ps4[13] = {              /* [2.5, 3.5] */
      397 +        1.0e0L,
      398 +        1.454528105698159439773035951959131799816e+0002L,
      399 +        8.107442215200392397172179900434987859618e+0003L,
      400 +        2.279390393778242887574177096606328994140e+0005L,
      401 +        3.576251625592252008424781111770934135844e+0006L,
      402 +        3.267909499056932631405942058670933813863e+0007L,
      403 +        1.760021515330805537499778238099704648805e+0008L,
      404 +        5.525553787667353981242060222587465726729e+0008L,
      405 +        9.769870295912820457889384082671269328511e+0008L,
      406 +        9.110582071004774279226905629624018008454e+0008L,
      407 +        3.981857678621955599371967680343918454345e+0008L,
      408 +        6.482404686230769399073192961667697036706e+0007L,
      409 +        2.210046943095878402443535460329391782298e+0006L,
      410 +};
      411 +
      412 +static GENERIC pr5[13] = {              /* [1.777..., 2.5] */
      413 +        9.999999999114986107951817871144655880699e-0001L,
      414 +        9.252583736048588342568344570315435947614e+0001L,
      415 +        3.218726757856078715214631502407386264637e+0003L,
      416 +        5.554009964621111656479588505862577040831e+0004L,
      417 +        5.269993115643664338253196944523510290175e+0005L,
      418 +        2.874613773778430691192912190618220544575e+0006L,
      419 +        9.133538151103658353874146919613442436035e+0006L,
      420 +        1.673067041410338922825193013077354249193e+0007L,
      421 +        1.706913873848398011744790289200151840498e+0007L,
      422 +        9.067766583853288534551600235576747618679e+0006L,
      423 +        2.216746733457884568532695355036338655872e+0006L,
      424 +        1.945753880802872541235703812722344514405e+0005L,
      425 +        3.132374412921948071539195638885330951749e+0003L,
      426 +};
      427 +
      428 +static GENERIC ps5[13] = {              /* [1.777..., 2.5] */
      429 +        1.0e0L,
      430 +        9.259614983862181118883831670990340052982e+0001L,
      431 +        3.225125275462903384842124075132609290304e+0003L,
      432 +        5.575705362829101545292760055941855246492e+0004L,
      433 +        5.306049863037087855496170121958448492522e+0005L,
      434 +        2.907060758873509564309729903109018597215e+0006L,
      435 +        9.298059206584995898298257827131208539289e+0006L,
      436 +        1.720391071006963176836108026556547062980e+0007L,
      437 +        1.782614812922865190479394509487941920612e+0007L,
      438 +        9.708016389605273153536452032839879950155e+0006L,
      439 +        2.476495084688170096480215640962175140027e+0006L,
      440 +        2.363200660365585759668077790194604917187e+0005L,
      441 +        4.803239569848196077121203575704356936731e+0003L,
      442 +};
      443 +
      444 +static GENERIC pr6[13] = {              /* [1.28, 1.777...] */
      445 +        9.999999969777095495998606925524322559556e-0001L,
      446 +        5.825486719466194430503283824096872219216e+0001L,
      447 +        1.248155491637757281915184824965379905380e+0003L,
      448 +        1.302093199842358609321338417071710477615e+0004L,
      449 +        7.353835804186292782840961999810543016039e+0004L,
      450 +        2.356471661113686180549195092555751341757e+0005L,
      451 +        4.350553267429009581632987060942780847101e+0005L,
      452 +        4.588762661876600638719159826652389418235e+0005L,
      453 +        2.675796398548523436544221045225290128611e+0005L,
      454 +        8.077649557108971388298292919988449940464e+0004L,
      455 +        1.117640459221306873519068741664054573776e+0004L,
      456 +        5.544400072396814695175787511557757885585e+0002L,
      457 +        5.072550541191480498431289089905822910718e+0000L,
      458 +};
      459 +
      460 +static GENERIC ps6[13] = {              /* [1.28, 1.777...] */
      461 +        1.0e0L,
      462 +        5.832517925357165050639075848183613063291e+0001L,
      463 +        1.252144364743592128171256104364976466898e+0003L,
      464 +        1.310300234342216813579118022415585740772e+0004L,
      465 +        7.434667697093812197817292154032863632923e+0004L,
      466 +        2.398706595587719165726469002404004614711e+0005L,
      467 +        4.472737517625103157004869372427480602511e+0005L,
      468 +        4.786313523337761975294171429067037723611e+0005L,
      469 +        2.851161872872731228472536061865365370192e+0005L,
      470 +        8.891648269899148412331918021801385815586e+0004L,
      471 +        1.297097489535351517572978123584751042287e+0004L,
      472 +        7.096761640545975756202184143400469812618e+0002L,
      473 +        8.378049338590233325977702401733340820351e+0000L,
 431  474  };
      475 +
 432  476  static GENERIC sixteen = 16.0L;
 433      -static GENERIC huge    = 1.0e30L;
      477 +static GENERIC huge = 1.0e30L;
 434  478  
 435      -static GENERIC pzero(x)
 436      -GENERIC x;
      479 +static GENERIC
      480 +pzero(x)
      481 +    GENERIC x;
 437  482  {
 438  483          GENERIC s, r, t, z;
 439  484          int i;
      485 +
 440  486          if (x > huge)
 441  487                  return (one);
 442      -        t = one/x; z = t*t;
      488 +
      489 +        t = one / x;
      490 +        z = t * t;
      491 +
 443  492          if (x > sixteen) {
 444      -            r = z*pr0[11]+pr0[10]; s = ps0[10];
 445      -            for (i = 9; i >= 0; i--) {
 446      -                r = z*r + pr0[i];
 447      -                s = z*s + ps0[i];
 448      -            }
      493 +                r = z * pr0[11] + pr0[10];
      494 +                s = ps0[10];
      495 +
      496 +                for (i = 9; i >= 0; i--) {
      497 +                        r = z * r + pr0[i];
      498 +                        s = z * s + ps0[i];
      499 +                }
 449  500          } else if (x > eight) {
 450      -            r = pr1[11]; s = ps1[11]+z*(ps1[12]+z*ps1[13]);
 451      -            for (i = 10; i >= 0; i--) {
 452      -                r = z*r + pr1[i];
 453      -                s = z*s + ps1[i];
 454      -            }
 455      -        } else if (x > five) {  /* x > 5.0 */
 456      -            r = pr2[11]; s = ps2[11]+z*(ps2[12]+z*ps2[13]);
 457      -            for (i = 10; i >= 0; i--) {
 458      -                r = z*r + pr2[i];
 459      -                s = z*s + ps2[i];
 460      -            }
      501 +                r = pr1[11];
      502 +                s = ps1[11] + z * (ps1[12] + z * ps1[13]);
      503 +
      504 +                for (i = 10; i >= 0; i--) {
      505 +                        r = z * r + pr1[i];
      506 +                        s = z * s + ps1[i];
      507 +                }
      508 +        } else if (x > five) {          /* x > 5.0 */
      509 +                r = pr2[11];
      510 +                s = ps2[11] + z * (ps2[12] + z * ps2[13]);
      511 +
      512 +                for (i = 10; i >= 0; i--) {
      513 +                        r = z * r + pr2[i];
      514 +                        s = z * s + ps2[i];
      515 +                }
 461  516          } else if (x > 3.5L) {
 462      -            r = pr3[12]; s = ps3[12];
 463      -            for (i = 11; i >= 0; i--) {
 464      -                r = z*r + pr3[i];
 465      -                s = z*s + ps3[i];
 466      -            }
      517 +                r = pr3[12];
      518 +                s = ps3[12];
      519 +
      520 +                for (i = 11; i >= 0; i--) {
      521 +                        r = z * r + pr3[i];
      522 +                        s = z * s + ps3[i];
      523 +                }
 467  524          } else if (x > 2.5L) {
 468      -            r = pr4[12]; s = ps4[12];
 469      -            for (i = 11; i >= 0; i--) {
 470      -                r = z*r + pr4[i];
 471      -                s = z*s + ps4[i];
 472      -            }
 473      -        } else if (x > (1.0L/0.5625L)) {
 474      -            r = pr5[12]; s = ps5[12];
 475      -            for (i = 11; i >= 0; i--) {
 476      -                r = z*r + pr5[i];
 477      -                s = z*s + ps5[i];
 478      -            }
 479      -        } else {        /* assume x > 1.28 */
 480      -            r = pr6[12]; s = ps6[12];
 481      -            for (i = 11; i >= 0; i--) {
 482      -                r = z*r + pr6[i];
 483      -                s = z*s + ps6[i];
 484      -            }
 485      -        }
 486      -        return (r/s);
 487      -}
      525 +                r = pr4[12];
      526 +                s = ps4[12];
 488  527  
      528 +                for (i = 11; i >= 0; i--) {
      529 +                        r = z * r + pr4[i];
      530 +                        s = z * s + ps4[i];
      531 +                }
      532 +        } else if (x > (1.0L / 0.5625L)) {
      533 +                r = pr5[12];
      534 +                s = ps5[12];
      535 +
      536 +                for (i = 11; i >= 0; i--) {
      537 +                        r = z * r + pr5[i];
      538 +                        s = z * s + ps5[i];
      539 +                }
      540 +        } else {                        /* assume x > 1.28 */
      541 +                r = pr6[12];
      542 +                s = ps6[12];
      543 +
      544 +                for (i = 11; i >= 0; i--) {
      545 +                        r = z * r + pr6[i];
      546 +                        s = z * s + ps6[i];
      547 +                }
      548 +        }
 489  549  
 490      -static GENERIC qr0[12] = {      /* [16, inf] */
 491      -  -1.249999999999999999999999999999999972972e-0001L,
 492      -  -1.425179595545670577414395762503991596897e+0002L,
 493      -  -6.312499645625970845534460257936222407219e+0004L,
 494      -  -1.411374326457208384315121243698814446848e+0007L,
 495      -  -1.735034212758873581410984757860787252842e+0009L,
 496      -  -1.199777647512789489421826342485055280680e+0011L,
 497      -  -4.596025334081655714499860409699100373644e+0012L,
 498      -  -9.262525628201284107792924477031653399187e+0013L,
 499      -  -8.858394728685039245344398842180662867639e+0014L,
 500      -  -3.267527953687534887623740622709505972113e+0015L,
 501      -  -2.664222971186311967587129347029450062019e+0015L,
 502      -   3.442464060723987869585180095344504100204e+0014L,
      550 +        return (r / s);
      551 +}
      552 +static GENERIC qr0[12] = {              /* [16, inf] */
      553 +        -1.249999999999999999999999999999999972972e-0001L,
      554 +        -1.425179595545670577414395762503991596897e+0002L,
      555 +        -6.312499645625970845534460257936222407219e+0004L,
      556 +        -1.411374326457208384315121243698814446848e+0007L,
      557 +        -1.735034212758873581410984757860787252842e+0009L,
      558 +        -1.199777647512789489421826342485055280680e+0011L,
      559 +        -4.596025334081655714499860409699100373644e+0012L,
      560 +        -9.262525628201284107792924477031653399187e+0013L,
      561 +        -8.858394728685039245344398842180662867639e+0014L,
      562 +        -3.267527953687534887623740622709505972113e+0015L,
      563 +        -2.664222971186311967587129347029450062019e+0015L,
      564 +        3.442464060723987869585180095344504100204e+0014L,
 503  565  };
      566 +
 504  567  static GENERIC qs0[11] = {
 505      -   1.0e0L,
 506      -   1.140729613936536461931516610003185687881e+0003L,
 507      -   5.056665510442299351009198186490085803580e+0005L,
 508      -   1.132041763825642787943941650522718199115e+0008L,
 509      -   1.394570111872581606392620678214246479767e+0010L,
 510      -   9.677945218152264789534431079563744378421e+0011L,
 511      -   3.731140327851536828225143058896348502096e+0013L,
 512      -   7.612785951064869291722846681020881676410e+0014L,
 513      -   7.476077016406764891730191004811863975940e+0015L,
 514      -   2.951246482613592035421503427100393831709e+0016L,
 515      -   3.108361803691811711136854587074302034901e+0016L,
 516      -};
 517      -static GENERIC qr1[12] = {      /* [8, 16 ] */
 518      -  -1.249999999999999999997949010383433818157e-0001L,
 519      -  -9.051215166393822640636752244895124126934e+0001L,
 520      -  -2.620782703428148837671179031904208303947e+0004L,
 521      -  -3.975571261553504457766177974508785790884e+0006L,
 522      -  -3.479029330759311306270072218074074994090e+0008L,
 523      -  -1.823955008124268573036216746186239829089e+0010L,
 524      -  -5.765932697111801375765156029221568664435e+0011L,
 525      -  -1.079843680798742592954002192417934779114e+0013L,
 526      -  -1.146893630504592739082205764611581332897e+0014L,
 527      -  -6.367016059683898464936104447282880704182e+0014L,
 528      -  -1.583109041961213490464459111903484209098e+0015L,
 529      -  -1.230149555764242473103128650135795639412e+0015L,
      568 +        1.0e0L,
      569 +        1.140729613936536461931516610003185687881e+0003L,
      570 +        5.056665510442299351009198186490085803580e+0005L,
      571 +        1.132041763825642787943941650522718199115e+0008L,
      572 +        1.394570111872581606392620678214246479767e+0010L,
      573 +        9.677945218152264789534431079563744378421e+0011L,
      574 +        3.731140327851536828225143058896348502096e+0013L,
      575 +        7.612785951064869291722846681020881676410e+0014L,
      576 +        7.476077016406764891730191004811863975940e+0015L,
      577 +        2.951246482613592035421503427100393831709e+0016L,
      578 +        3.108361803691811711136854587074302034901e+0016L,
      579 +};
      580 +
      581 +static GENERIC qr1[12] = {              /* [8, 16 ] */
      582 +        -1.249999999999999999997949010383433818157e-0001L,
      583 +        -9.051215166393822640636752244895124126934e+0001L,
      584 +        -2.620782703428148837671179031904208303947e+0004L,
      585 +        -3.975571261553504457766177974508785790884e+0006L,
      586 +        -3.479029330759311306270072218074074994090e+0008L,
      587 +        -1.823955008124268573036216746186239829089e+0010L,
      588 +        -5.765932697111801375765156029221568664435e+0011L,
      589 +        -1.079843680798742592954002192417934779114e+0013L,
      590 +        -1.146893630504592739082205764611581332897e+0014L,
      591 +        -6.367016059683898464936104447282880704182e+0014L,
      592 +        -1.583109041961213490464459111903484209098e+0015L,
      593 +        -1.230149555764242473103128650135795639412e+0015L,
 530  594  };
      595 +
 531  596  static GENERIC qs1[14] = {
 532      -   1.0e0L,
 533      -   7.246831508115058112438579847778014458432e+0002L,
 534      -   2.100854184439168518399383786306927037611e+0005L,
 535      -   3.192636418837951507430188285940994235122e+0007L,
 536      -   2.801558443383354674538443461124434216152e+0009L,
 537      -   1.475026997664373739293483927250653467487e+0011L,
 538      -   4.694486824913954608552363821799927145318e+0012L,
 539      -   8.890350100919200250838438709601547334021e+0013L,
 540      -   9.626844429082905144874701068760469752067e+0014L,
 541      -   5.541110744600460773528263862687521642140e+0015L,
 542      -   1.486500494789452556727470329232123096563e+0016L,
 543      -   1.415840104845959400365430773732093899210e+0016L,
 544      -   1.780866095241517418081312567239682336483e+0015L,
 545      -  -2.359230917384889357887631544079990129494e+0014L,
 546      -};
 547      -static GENERIC qr2[12] = {      /* [5, 8] */
 548      -  -1.249999999999999531937744362527772181614e-0001L,
 549      -  -4.944373897356969774839375977239241573966e+0001L,
 550      -  -7.728449175433465285314261650078450473909e+0003L,
 551      -  -6.262574329612752346336901434651220705903e+0005L,
 552      -  -2.900948220220943306027235217424380672732e+0007L,
 553      -  -7.988719647634192770463917157562874119535e+0008L,
 554      -  -1.318228171927181389547760026626357012375e+0010L,
 555      -  -1.282439773983029245309263271945424928196e+0011L,
 556      -  -7.050925570827818040186149940257918845138e+0011L,
 557      -  -2.021751882573871990004205616874202684429e+0012L,
 558      -  -2.592939962400668552384333900573812635658e+0012L,
 559      -  -1.038267109518891262840601514932972850326e+0012L,
      597 +        1.0e0L,
      598 +        7.246831508115058112438579847778014458432e+0002L,
      599 +        2.100854184439168518399383786306927037611e+0005L,
      600 +        3.192636418837951507430188285940994235122e+0007L,
      601 +        2.801558443383354674538443461124434216152e+0009L,
      602 +        1.475026997664373739293483927250653467487e+0011L,
      603 +        4.694486824913954608552363821799927145318e+0012L,
      604 +        8.890350100919200250838438709601547334021e+0013L,
      605 +        9.626844429082905144874701068760469752067e+0014L,
      606 +        5.541110744600460773528263862687521642140e+0015L,
      607 +        1.486500494789452556727470329232123096563e+0016L,
      608 +        1.415840104845959400365430773732093899210e+0016L,
      609 +        1.780866095241517418081312567239682336483e+0015L,
      610 +        -2.359230917384889357887631544079990129494e+0014L,
      611 +};
      612 +
      613 +static GENERIC qr2[12] = {              /* [5, 8] */
      614 +        -1.249999999999999531937744362527772181614e-0001L,
      615 +        -4.944373897356969774839375977239241573966e+0001L,
      616 +        -7.728449175433465285314261650078450473909e+0003L,
      617 +        -6.262574329612752346336901434651220705903e+0005L,
      618 +        -2.900948220220943306027235217424380672732e+0007L,
      619 +        -7.988719647634192770463917157562874119535e+0008L,
      620 +        -1.318228171927181389547760026626357012375e+0010L,
      621 +        -1.282439773983029245309263271945424928196e+0011L,
      622 +        -7.050925570827818040186149940257918845138e+0011L,
      623 +        -2.021751882573871990004205616874202684429e+0012L,
      624 +        -2.592939962400668552384333900573812635658e+0012L,
      625 +        -1.038267109518891262840601514932972850326e+0012L,
 560  626  };
      627 +
 561  628  static GENERIC qs2[14] = {
 562      -   1.0e0L,
 563      -   3.961358492885570003202784022894248952116e+0002L,
 564      -   6.205788738864701882828752634586510926968e+0004L,
 565      -   5.045715603932670286550673813011764406749e+0006L,
 566      -   2.349248611362658323353343389430968751429e+0008L,
 567      -   6.520244524415828635917683553721880063911e+0009L,
 568      -   1.089111211223507719337067159886281887722e+0011L,
 569      -   1.080406000905359867958779409414903018610e+0012L,
 570      -   6.135645280895514703514154680623769562148e+0012L,
 571      -   1.862433040246625874245867151368643668215e+0013L,
 572      -   2.667780805786648888840777888702193708994e+0013L,
 573      -   1.394401107289087774765300711809313112824e+0013L,
 574      -   1.093247500616320375562898297156722445484e+0012L,
 575      -  -7.228875530378928722826604216491493780775e+0010L,
 576      -};
 577      -static GENERIC qr3[13] = {      /* [3.5 5] */
 578      -  -1.249999999999473067748420379578481661075e-0001L,
 579      -  -3.044549048635289351913574324803250977998e+0001L,
 580      -  -2.890081140649769078496693003524681440869e+0003L,
 581      -  -1.404922456817202235879343275330529107684e+0005L,
 582      -  -3.862746614385573443518177403617349281869e+0006L,
 583      -  -6.257517309110249049201133708911155047689e+0007L,
 584      -  -6.031451330920839916987079782727323477520e+0008L,
 585      -  -3.411542405173830611454025765755854382346e+0009L,
 586      -  -1.089392478149726672133014498723021526099e+0010L,
 587      -  -1.824934078420210941290140903415956782726e+0010L,
 588      -  -1.400780278304358710423481070486939531139e+0010L,
 589      -  -3.716484136064917363926635716743771092093e+0009L,
 590      -  -1.397591075296425529970434890954904331580e+0008L,
      629 +        1.0e0L,
      630 +        3.961358492885570003202784022894248952116e+0002L,
      631 +        6.205788738864701882828752634586510926968e+0004L,
      632 +        5.045715603932670286550673813011764406749e+0006L,
      633 +        2.349248611362658323353343389430968751429e+0008L,
      634 +        6.520244524415828635917683553721880063911e+0009L,
      635 +        1.089111211223507719337067159886281887722e+0011L,
      636 +        1.080406000905359867958779409414903018610e+0012L,
      637 +        6.135645280895514703514154680623769562148e+0012L,
      638 +        1.862433040246625874245867151368643668215e+0013L,
      639 +        2.667780805786648888840777888702193708994e+0013L,
      640 +        1.394401107289087774765300711809313112824e+0013L,
      641 +        1.093247500616320375562898297156722445484e+0012L,
      642 +        -7.228875530378928722826604216491493780775e+0010L,
      643 +};
      644 +
      645 +static GENERIC qr3[13] = {              /* [3.5 5] */
      646 +        -1.249999999999473067748420379578481661075e-0001L,
      647 +        -3.044549048635289351913574324803250977998e+0001L,
      648 +        -2.890081140649769078496693003524681440869e+0003L,
      649 +        -1.404922456817202235879343275330529107684e+0005L,
      650 +        -3.862746614385573443518177403617349281869e+0006L,
      651 +        -6.257517309110249049201133708911155047689e+0007L,
      652 +        -6.031451330920839916987079782727323477520e+0008L,
      653 +        -3.411542405173830611454025765755854382346e+0009L,
      654 +        -1.089392478149726672133014498723021526099e+0010L,
      655 +        -1.824934078420210941290140903415956782726e+0010L,
      656 +        -1.400780278304358710423481070486939531139e+0010L,
      657 +        -3.716484136064917363926635716743771092093e+0009L,
      658 +        -1.397591075296425529970434890954904331580e+0008L,
 591  659  };
      660 +
 592  661  static GENERIC qs3[13] = {
 593      -   1.0e0L,
 594      -   2.441498613904962049391000187014945858042e+0002L,
 595      -   2.326188882072370711500164222341514337043e+0004L,
 596      -   1.137138213121231338494977104659239578165e+0006L,
 597      -   3.152918070735662728722998452605364253517e+0007L,
 598      -   5.172877993426507259314270488444013595108e+0008L,
 599      -   5.083086439731669807455961078856470774115e+0009L,
 600      -   2.961842732066434123119325521139476909941e+0010L,
 601      -   9.912185866862440735829781856081353151390e+0010L,
 602      -   1.793560561251622234430564181567297983598e+0011L,
 603      -   1.577090119341228122525265108497940403073e+0011L,
 604      -   5.509910306780166194333889999985463681636e+0010L,
 605      -   4.761691134078874491202320181517936758141e+0009L,
 606      -};
 607      -static GENERIC qr4[13] = {      /* [2.5 3.5] */
 608      -  -1.249999999928567734339745043490705340835e-0001L,
 609      -  -1.967201748731419063051601624435565528481e+0001L,
 610      -  -1.186329146714562236407099740615528170707e+0003L,
 611      -  -3.607736959222941810356301491152457934060e+0004L,
 612      -  -6.119200717978104904932828468575194267125e+0005L,
 613      -  -6.037847781158358226670305078652205586384e+0006L,
 614      -  -3.503558153336140359700536720393565984740e+0007L,
 615      -  -1.180196478268225718757218523746787309773e+0008L,
 616      -  -2.221860232085134915841426363505169680528e+0008L,
 617      -  -2.173372505452747585296176761701746236760e+0008L,
 618      -  -9.649364865061237558517730539506568013963e+0007L,
 619      -  -1.465429227847933034546039640094862650385e+0007L,
 620      -  -3.083003197920262085170581866246663380607e+0005L,
 621      -};
 622      -static GENERIC qs4[13] = {      /* [2.5 3.5] */
 623      -   1.0e0L,
 624      -   1.579620773732259142752614142139986854055e+0002L,
 625      -   9.581372220329138733203879503753685054968e+0003L,
 626      -   2.939598672379108095776114131010825885308e+0005L,
 627      -   5.052183049314542218630341818692588448168e+0006L,
 628      -   5.083497695595206639433839326338971980149e+0007L,
 629      -   3.036385361800553388049719014005099206516e+0008L,
 630      -   1.067826481452753409910563785161661492137e+0009L,
 631      -   2.145644125557118044720741775125319669272e+0009L,
 632      -   2.324115615959719949363946673491552216799e+0009L,
 633      -   1.223262962112070757966959855619847011146e+0009L,
 634      -   2.569765553318495423738478585947110270709e+0008L,
 635      -   1.354744744299227127897905787732636565504e+0007L,
 636      -};
 637      -static GENERIC qr5[13] = {      /* [1.777.., 2.5] */
 638      -  -1.249999995936639697637680428174576069971e-0001L,
 639      -  -1.260846055371311453485891923426489068315e+0001L,
 640      -  -4.772398467544467480801174330290141578895e+0002L,
 641      -  -8.939852599990298486613760833996490599724e+0003L,
 642      -  -9.184070787149542050979542226446134243197e+0004L,
 643      -  -5.406038945018274458362637897739280435171e+0005L,
 644      -  -1.845896544705190261018653728678171084418e+0006L,
 645      -  -3.613616990680809501878667570653308071547e+0006L,
 646      -  -3.908782978135693252252557720414348623779e+0006L,
 647      -  -2.173711022517323927109138170588442768176e+0006L,
 648      -  -5.431253130679918485836408549007856244495e+0005L,
 649      -  -4.591098546452684510082591587275940765959e+0004L,
 650      -  -5.244711364168207806835520057792229646578e+0002L,
 651      -};
 652      -static GENERIC qs5[13] = {      /* [1.777.., 2.5] */
 653      -   1.0e0L,
 654      -   1.014536210851290878350892750972474861447e+0002L,
 655      -   3.875547510687135314064434160096139681076e+0003L,
 656      -   7.361913122670079814955259281995617732580e+0004L,
 657      -   7.720288944218771126581086539585529314636e+0005L,
 658      -   4.681529554446752496404431433608306558038e+0006L,
 659      -   1.667882621940503925455031252308367745820e+0007L,
 660      -   3.469403153761399881888272620855305156241e+0007L,
 661      -   4.096992047964210711867089384719947863019e+0007L,
 662      -   2.596804755829217449311530735959560630554e+0007L,
 663      -   7.983933774697889238154465064019410763845e+0006L,
 664      -   9.818133816979900819087242425280757938152e+0005L,
 665      -   3.061083930868694396013541535670745443560e+0004L,
 666      -};
 667      -
 668      -static GENERIC qr6[13] = {      /* [1.28, 1.777..] */
 669      -  -1.249999881577289001807137282824929082771e-0001L,
 670      -  -7.998273510053110759610810594119533619282e+0000L,
 671      -  -1.872481955335172543369089617771565632719e+0002L,
 672      -  -2.122116786726300805079874003303799646812e+0003L,
 673      -  -1.293850285839529282503178263484773478457e+0004L,
 674      -  -4.445024742266316181033354192262529356093e+0004L,
 675      -  -8.730161378334357767668344467356505347070e+0004L,
 676      -  -9.706222895172078442801444972505315054736e+0004L,
 677      -  -5.896325518259858270165531513618195321041e+0004L,
 678      -  -1.823172034368108822276420827074668832233e+0004L,
 679      -  -2.509304178635055926638833040337472387175e+0003L,
 680      -  -1.156608965715779237316769828941729964099e+0002L,
 681      -  -7.028005789650731396887346826397785210442e-0001L,
 682      -};
 683      -static GENERIC qs6[13] = {      /* [1.28, 1.777..] */
 684      -   1.0e0L,
 685      -   6.457211085058064845601261321277721075900e+0001L,
 686      -   1.534005216588011210342824555136008682950e+0003L,
 687      -   1.777217999176441782593357660462379097171e+0004L,
 688      -   1.118372652642469468091084810263231199696e+0005L,
 689      -   4.015242433858461813142365748386473605294e+0005L,
 690      -   8.377081045517098645448616514388280497673e+0005L,
 691      -   1.011495020008010352575398009604164287337e+0006L,
 692      -   6.886722075290430568652227875200208955970e+0005L,
 693      -   2.504735189948021472047157148613171956537e+0005L,
 694      -   4.408138920171044846941001844352009817062e+0004L,
 695      -   3.105572178072115145673058722853640854884e+0003L,
 696      -   5.588294821118916113437396504573817033678e+0001L,
      662 +        1.0e0L,
      663 +        2.441498613904962049391000187014945858042e+0002L,
      664 +        2.326188882072370711500164222341514337043e+0004L,
      665 +        1.137138213121231338494977104659239578165e+0006L,
      666 +        3.152918070735662728722998452605364253517e+0007L,
      667 +        5.172877993426507259314270488444013595108e+0008L,
      668 +        5.083086439731669807455961078856470774115e+0009L,
      669 +        2.961842732066434123119325521139476909941e+0010L,
      670 +        9.912185866862440735829781856081353151390e+0010L,
      671 +        1.793560561251622234430564181567297983598e+0011L,
      672 +        1.577090119341228122525265108497940403073e+0011L,
      673 +        5.509910306780166194333889999985463681636e+0010L,
      674 +        4.761691134078874491202320181517936758141e+0009L,
      675 +};
      676 +
      677 +static GENERIC qr4[13] = {              /* [2.5 3.5] */
      678 +        -1.249999999928567734339745043490705340835e-0001L,
      679 +        -1.967201748731419063051601624435565528481e+0001L,
      680 +        -1.186329146714562236407099740615528170707e+0003L,
      681 +        -3.607736959222941810356301491152457934060e+0004L,
      682 +        -6.119200717978104904932828468575194267125e+0005L,
      683 +        -6.037847781158358226670305078652205586384e+0006L,
      684 +        -3.503558153336140359700536720393565984740e+0007L,
      685 +        -1.180196478268225718757218523746787309773e+0008L,
      686 +        -2.221860232085134915841426363505169680528e+0008L,
      687 +        -2.173372505452747585296176761701746236760e+0008L,
      688 +        -9.649364865061237558517730539506568013963e+0007L,
      689 +        -1.465429227847933034546039640094862650385e+0007L,
      690 +        -3.083003197920262085170581866246663380607e+0005L,
      691 +};
      692 +
      693 +static GENERIC qs4[13] = {              /* [2.5 3.5] */
      694 +        1.0e0L,
      695 +        1.579620773732259142752614142139986854055e+0002L,
      696 +        9.581372220329138733203879503753685054968e+0003L,
      697 +        2.939598672379108095776114131010825885308e+0005L,
      698 +        5.052183049314542218630341818692588448168e+0006L,
      699 +        5.083497695595206639433839326338971980149e+0007L,
      700 +        3.036385361800553388049719014005099206516e+0008L,
      701 +        1.067826481452753409910563785161661492137e+0009L,
      702 +        2.145644125557118044720741775125319669272e+0009L,
      703 +        2.324115615959719949363946673491552216799e+0009L,
      704 +        1.223262962112070757966959855619847011146e+0009L,
      705 +        2.569765553318495423738478585947110270709e+0008L,
      706 +        1.354744744299227127897905787732636565504e+0007L,
      707 +};
      708 +
      709 +static GENERIC qr5[13] = {              /* [1.777.., 2.5] */
      710 +        -1.249999995936639697637680428174576069971e-0001L,
      711 +        -1.260846055371311453485891923426489068315e+0001L,
      712 +        -4.772398467544467480801174330290141578895e+0002L,
      713 +        -8.939852599990298486613760833996490599724e+0003L,
      714 +        -9.184070787149542050979542226446134243197e+0004L,
      715 +        -5.406038945018274458362637897739280435171e+0005L,
      716 +        -1.845896544705190261018653728678171084418e+0006L,
      717 +        -3.613616990680809501878667570653308071547e+0006L,
      718 +        -3.908782978135693252252557720414348623779e+0006L,
      719 +        -2.173711022517323927109138170588442768176e+0006L,
      720 +        -5.431253130679918485836408549007856244495e+0005L,
      721 +        -4.591098546452684510082591587275940765959e+0004L,
      722 +        -5.244711364168207806835520057792229646578e+0002L,
      723 +};
      724 +
      725 +static GENERIC qs5[13] = {              /* [1.777.., 2.5] */
      726 +        1.0e0L,
      727 +        1.014536210851290878350892750972474861447e+0002L,
      728 +        3.875547510687135314064434160096139681076e+0003L,
      729 +        7.361913122670079814955259281995617732580e+0004L,
      730 +        7.720288944218771126581086539585529314636e+0005L,
      731 +        4.681529554446752496404431433608306558038e+0006L,
      732 +        1.667882621940503925455031252308367745820e+0007L,
      733 +        3.469403153761399881888272620855305156241e+0007L,
      734 +        4.096992047964210711867089384719947863019e+0007L,
      735 +        2.596804755829217449311530735959560630554e+0007L,
      736 +        7.983933774697889238154465064019410763845e+0006L,
      737 +        9.818133816979900819087242425280757938152e+0005L,
      738 +        3.061083930868694396013541535670745443560e+0004L,
      739 +};
      740 +
      741 +static GENERIC qr6[13] = {              /* [1.28, 1.777..] */
      742 +        -1.249999881577289001807137282824929082771e-0001L,
      743 +        -7.998273510053110759610810594119533619282e+0000L,
      744 +        -1.872481955335172543369089617771565632719e+0002L,
      745 +        -2.122116786726300805079874003303799646812e+0003L,
      746 +        -1.293850285839529282503178263484773478457e+0004L,
      747 +        -4.445024742266316181033354192262529356093e+0004L,
      748 +        -8.730161378334357767668344467356505347070e+0004L,
      749 +        -9.706222895172078442801444972505315054736e+0004L,
      750 +        -5.896325518259858270165531513618195321041e+0004L,
      751 +        -1.823172034368108822276420827074668832233e+0004L,
      752 +        -2.509304178635055926638833040337472387175e+0003L,
      753 +        -1.156608965715779237316769828941729964099e+0002L,
      754 +        -7.028005789650731396887346826397785210442e-0001L,
      755 +};
      756 +
      757 +static GENERIC qs6[13] = {              /* [1.28, 1.777..] */
      758 +        1.0e0L,
      759 +        6.457211085058064845601261321277721075900e+0001L,
      760 +        1.534005216588011210342824555136008682950e+0003L,
      761 +        1.777217999176441782593357660462379097171e+0004L,
      762 +        1.118372652642469468091084810263231199696e+0005L,
      763 +        4.015242433858461813142365748386473605294e+0005L,
      764 +        8.377081045517098645448616514388280497673e+0005L,
      765 +        1.011495020008010352575398009604164287337e+0006L,
      766 +        6.886722075290430568652227875200208955970e+0005L,
      767 +        2.504735189948021472047157148613171956537e+0005L,
      768 +        4.408138920171044846941001844352009817062e+0004L,
      769 +        3.105572178072115145673058722853640854884e+0003L,
      770 +        5.588294821118916113437396504573817033678e+0001L,
 697  771  };
 698      -static GENERIC qzero(x)
 699      -GENERIC x;
      772 +
      773 +static GENERIC
      774 +qzero(x)
      775 +    GENERIC x;
 700  776  {
 701  777          GENERIC s, r, t, z;
 702  778          int i;
      779 +
 703  780          if (x > huge)
 704      -                return (-0.125L/x);
 705      -        t = one/x; z = t*t;
      781 +                return (-0.125L / x);
      782 +
      783 +        t = one / x;
      784 +        z = t * t;
      785 +
 706  786          if (x > sixteen) {
 707      -            r = z*qr0[11]+qr0[10]; s = qs0[10];
 708      -            for (i = 9; i >= 0; i--) {
 709      -                r = z*r + qr0[i];
 710      -                s = z*s + qs0[i];
 711      -            }
      787 +                r = z * qr0[11] + qr0[10];
      788 +                s = qs0[10];
      789 +
      790 +                for (i = 9; i >= 0; i--) {
      791 +                        r = z * r + qr0[i];
      792 +                        s = z * s + qs0[i];
      793 +                }
 712  794          } else if (x > eight) {
 713      -            r = qr1[11]; s = qs1[11]+z*(qs1[12]+z*qs1[13]);
 714      -            for (i = 10; i >= 0; i--) {
 715      -                r = z*r + qr1[i];
 716      -                s = z*s + qs1[i];
 717      -            }
 718      -        } else if (x > five) {  /* assume x > 5.0 */
 719      -            r = qr2[11]; s = qs2[11]+z*(qs2[12]+z*qs2[13]);
 720      -            for (i = 10; i >= 0; i--) {
 721      -                r = z*r + qr2[i];
 722      -                s = z*s + qs2[i];
 723      -            }
      795 +                r = qr1[11];
      796 +                s = qs1[11] + z * (qs1[12] + z * qs1[13]);
      797 +
      798 +                for (i = 10; i >= 0; i--) {
      799 +                        r = z * r + qr1[i];
      800 +                        s = z * s + qs1[i];
      801 +                }
      802 +        } else if (x > five) {          /* assume x > 5.0 */
      803 +                r = qr2[11];
      804 +                s = qs2[11] + z * (qs2[12] + z * qs2[13]);
      805 +
      806 +                for (i = 10; i >= 0; i--) {
      807 +                        r = z * r + qr2[i];
      808 +                        s = z * s + qs2[i];
      809 +                }
 724  810          } else if (x > 3.5L) {
 725      -            r = qr3[12]; s = qs3[12];
 726      -            for (i = 11; i >= 0; i--) {
 727      -                r = z*r + qr3[i];
 728      -                s = z*s + qs3[i];
 729      -            }
      811 +                r = qr3[12];
      812 +                s = qs3[12];
      813 +
      814 +                for (i = 11; i >= 0; i--) {
      815 +                        r = z * r + qr3[i];
      816 +                        s = z * s + qs3[i];
      817 +                }
 730  818          } else if (x > 2.5L) {
 731      -            r = qr4[12]; s = qs4[12];
 732      -            for (i = 11; i >= 0; i--) {
 733      -                r = z*r + qr4[i];
 734      -                s = z*s + qs4[i];
 735      -            }
 736      -        } else if (x > (1.0L/0.5625L)) {
 737      -            r = qr5[12]; s = qs5[12];
 738      -            for (i = 11; i >= 0; i--) {
 739      -                r = z*r + qr5[i];
 740      -                s = z*s + qs5[i];
 741      -            }
 742      -        } else {        /* assume x > 1.28 */
 743      -            r = qr6[12]; s = qs6[12];
 744      -            for (i = 11; i >= 0; i--) {
 745      -                r = z*r + qr6[i];
 746      -                s = z*s + qs6[i];
 747      -            }
      819 +                r = qr4[12];
      820 +                s = qs4[12];
      821 +
      822 +                for (i = 11; i >= 0; i--) {
      823 +                        r = z * r + qr4[i];
      824 +                        s = z * s + qs4[i];
      825 +                }
      826 +        } else if (x > (1.0L / 0.5625L)) {
      827 +                r = qr5[12];
      828 +                s = qs5[12];
      829 +
      830 +                for (i = 11; i >= 0; i--) {
      831 +                        r = z * r + qr5[i];
      832 +                        s = z * s + qs5[i];
      833 +                }
      834 +        } else {                        /* assume x > 1.28 */
      835 +                r = qr6[12];
      836 +                s = qs6[12];
      837 +
      838 +                for (i = 11; i >= 0; i--) {
      839 +                        r = z * r + qr6[i];
      840 +                        s = z * s + qs6[i];
      841 +                }
 748  842          }
 749      -        return (t*(r/s));
      843 +
      844 +        return (t * (r / s));
 750  845  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX