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

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libm/common/LD/j1l.c
          +++ new/usr/src/lib/libm/common/LD/j1l.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: j1(x),y1(x);
  33   34   *
  34   35   * Special cases:
↓ open down ↓ 4 lines elided ↑ open up ↑
  39   40  #pragma weak __j1l = j1l
  40   41  #pragma weak __y1l = y1l
  41   42  
  42   43  #include "libm.h"
  43   44  #include "longdouble.h"
  44   45  #include <math.h>
  45   46  #if defined(__SUNPRO_C)
  46   47  #include <sunmath.h>
  47   48  #endif
  48   49  
  49      -#define GENERIC long double
  50      -static GENERIC
  51      -zero    = 0.0L,
  52      -small   = 1.0e-9L,
  53      -tiny    = 1.0e-38L,
  54      -one     = 1.0L,
  55      -five    = 5.0L,
  56      -invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
  57      -tpi     = 0.636619772367581343075535053490057448L;
       50 +#define GENERIC long double
       51 +
       52 +static GENERIC zero = 0.0L,
       53 +        small = 1.0e-9L,
       54 +        tiny = 1.0e-38L,
       55 +        one = 1.0L,
       56 +        five = 5.0L,
       57 +        invsqrtpi = 5.641895835477562869480794515607725858441e-0001L,
       58 +        tpi = 0.636619772367581343075535053490057448L;
  58   59  
  59   60  static GENERIC pone(), qone();
       61 +
  60   62  static GENERIC r0[7] = {
  61      -  -6.249999999999999999999999999999999627320e-0002L,
  62      -   1.940606727194041716205384618494641565464e-0003L,
  63      -  -3.005630423155733701856481469986459043883e-0005L,
  64      -   2.345586219403918667468341047369572169358e-0007L,
  65      -  -9.976809285885253587529010109133336669724e-0010L,
  66      -   2.218743258363623946078958783775107473381e-0012L,
  67      -  -2.071079656218700604767650924103578046280e-0015L,
       63 +        -6.249999999999999999999999999999999627320e-0002L,
       64 +        1.940606727194041716205384618494641565464e-0003L,
       65 +        -3.005630423155733701856481469986459043883e-0005L,
       66 +        2.345586219403918667468341047369572169358e-0007L,
       67 +        -9.976809285885253587529010109133336669724e-0010L,
       68 +        2.218743258363623946078958783775107473381e-0012L,
       69 +        -2.071079656218700604767650924103578046280e-0015L,
  68   70  };
       71 +
  69   72  static GENERIC s0[7] = {
  70      -   1.0e0L,
  71      -   1.061695903156199920738051277075003059555e-0002L,
  72      -   5.521860513111180371566951179398862692060e-0005L,
  73      -   1.824214367413754193524107877084979441407e-0007L,
  74      -   4.098957778439576834818838198039029353925e-0010L,
  75      -   6.047735079699666389853240090925264056197e-0013L,
  76      -   4.679044728878836197247923279512047035041e-0016L,
       73 +        1.0e0L,
       74 +        1.061695903156199920738051277075003059555e-0002L,
       75 +        5.521860513111180371566951179398862692060e-0005L,
       76 +        1.824214367413754193524107877084979441407e-0007L,
       77 +        4.098957778439576834818838198039029353925e-0010L,
       78 +        6.047735079699666389853240090925264056197e-0013L,
       79 +        4.679044728878836197247923279512047035041e-0016L,
  77   80  };
  78   81  
  79   82  GENERIC
  80      -j1l(x) GENERIC x; {
       83 +j1l(GENERIC x)
       84 +{
  81   85          GENERIC z, d, s, c, ss, cc, r;
  82   86          int i, sgn;
  83   87  
  84   88          if (!finitel(x))
  85      -                return (one/x);
       89 +                return (one / x);
       90 +
  86   91          sgn = signbitl(x);
  87   92          x = fabsl(x);
       93 +
  88   94          if (x > 1.28L) {
  89   95                  s = sinl(x);
  90   96                  c = cosl(x);
  91      -        /*
  92      -         * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
  93      -         * where x0 = x-3pi/4
  94      -         *      Better formula:
  95      -         *              cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
  96      -         *                      =  1/sqrt(2) * (sin(x) - cos(x))
  97      -         *              sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
  98      -         *                      = -1/sqrt(2) * (cos(x) + sin(x))
  99      -         * To avoid cancellation, use
 100      -         *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
 101      -         * to compute the worse one.
 102      -         */
       97 +
       98 +                /* BEGIN CSTYLED */
       99 +                /*
      100 +                 * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
      101 +                 * where x0 = x-3pi/4
      102 +                 *      Better formula:
      103 +                 *              cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
      104 +                 *                      =  1/sqrt(2) * (sin(x) - cos(x))
      105 +                 *              sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
      106 +                 *                      = -1/sqrt(2) * (cos(x) + sin(x))
      107 +                 * To avoid cancellation, use
      108 +                 *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
      109 +                 * to compute the worse one.
      110 +                 */
      111 +                /* END CSTYLED */
 103  112                  if (x > 1.0e2450L) {    /* x+x may overflow */
 104      -                        ss = -s-c;
 105      -                        cc =  s-c;
      113 +                        ss = -s - c;
      114 +                        cc = s - c;
 106  115                  } else if (signbitl(s) != signbitl(c)) {
 107  116                          cc = s - c;
 108      -                        ss = cosl(x+x)/cc;
      117 +                        ss = cosl(x + x) / cc;
 109  118                  } else {
 110      -                        ss = -s-c;
 111      -                        cc = cosl(x+x)/ss;
      119 +                        ss = -s - c;
      120 +                        cc = cosl(x + x) / ss;
 112  121                  }
 113      -        /*
 114      -         * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
 115      -         * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
 116      -         */
 117      -                if (x > 1.0e120L)
 118      -                                        return (invsqrtpi*cc)/sqrtl(x);
 119      -                d =  invsqrtpi*(pone(x)*cc-qone(x)*ss)/sqrtl(x);
      122 +
      123 +                /*
      124 +                 * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
      125 +                 * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
      126 +                 */
      127 +                if (x > 1.0e120L)
      128 +                        return ((invsqrtpi * cc) / sqrtl(x));
      129 +
      130 +                d = invsqrtpi * (pone(x) * cc - qone(x) * ss) / sqrtl(x);
      131 +
 120  132                  if (sgn == 0)
 121  133                          return (d);
 122  134                  else
 123  135                          return (-d);
 124  136          }
      137 +
 125  138          if (x <= small) {
 126      -            if (x <= tiny) d = 0.5L*x;
 127      -            else d =  x*(0.5L-x*x*0.125L);
 128      -            if (sgn == 0)
      139 +                if (x <= tiny)
      140 +                        d = 0.5L * x;
      141 +                else
      142 +                        d = x * (0.5L - x * x * 0.125L);
      143 +
      144 +                if (sgn == 0)
 129  145                          return (d);
 130  146                  else
 131  147                          return (-d);
 132      -        }
 133      -        z = x*x;
 134      -            r = r0[6];
 135      -            s = s0[6];
 136      -            for (i = 5; i >= 0; i--) {
 137      -                r = r*z + r0[i];
 138      -                s = s*z + s0[i];
 139      -            }
 140      -        d = x*0.5L+x*(z*(r/s));
      148 +        }
      149 +
      150 +        z = x * x;
      151 +        r = r0[6];
      152 +        s = s0[6];
      153 +
      154 +        for (i = 5; i >= 0; i--) {
      155 +                r = r * z + r0[i];
      156 +                s = s * z + s0[i];
      157 +        }
      158 +
      159 +        d = x * 0.5L + x * (z * (r / s));
      160 +
 141  161          if (sgn == 0)
 142  162                  return (d);
 143  163          else
 144  164                  return (-d);
 145  165  }
 146  166  
 147  167  static GENERIC u0[7] = {
 148      -  -1.960570906462389484060557273467558703503e-0001L,
 149      -   5.166389353148318460304315890665450006495e-0002L,
 150      -  -2.229699464105910913337190798743451115604e-0003L,
 151      -   3.625437034548863342715657067759078267158e-0005L,
 152      -  -2.689902826993117212255524537353883987171e-0007L,
 153      -   9.304570592456930912969387719010256018466e-0010L,
 154      -  -1.234878126794286643318321347997500346131e-0012L,
      168 +        -1.960570906462389484060557273467558703503e-0001L,
      169 +        5.166389353148318460304315890665450006495e-0002L,
      170 +        -2.229699464105910913337190798743451115604e-0003L,
      171 +        3.625437034548863342715657067759078267158e-0005L,
      172 +        -2.689902826993117212255524537353883987171e-0007L,
      173 +        9.304570592456930912969387719010256018466e-0010L,
      174 +        -1.234878126794286643318321347997500346131e-0012L,
 155  175  };
      176 +
 156  177  static GENERIC v0[8] = {
 157      -   1.0e0L,
 158      -   1.369394302535807332517110204820556695644e-0002L,
 159      -   9.508438148097659501433367062605935379588e-0005L,
 160      -   4.399007309420092056052714797296467565655e-0007L,
 161      -   1.488083087443756398305819693177715000787e-0009L,
 162      -   3.751609832625793536245746965768587624922e-0012L,
 163      -   6.680926434086257291872903276124244131448e-0015L,
 164      -   6.676602383908906988160099057991121446058e-0018L,
      178 +        1.0e0L,
      179 +        1.369394302535807332517110204820556695644e-0002L,
      180 +        9.508438148097659501433367062605935379588e-0005L,
      181 +        4.399007309420092056052714797296467565655e-0007L,
      182 +        1.488083087443756398305819693177715000787e-0009L,
      183 +        3.751609832625793536245746965768587624922e-0012L,
      184 +        6.680926434086257291872903276124244131448e-0015L,
      185 +        6.676602383908906988160099057991121446058e-0018L,
 165  186  };
 166  187  
 167  188  GENERIC
 168      -y1l(x) GENERIC x; {
      189 +y1l(GENERIC x)
      190 +{
 169  191          GENERIC z, s, c, ss, cc, u, v;
 170  192          int i;
 171  193  
 172  194          if (isnanl(x))
 173      -                return (x+x);
      195 +                return (x + x);
      196 +
 174  197          if (x <= zero) {
 175  198                  if (x == zero)
 176      -                    return (-one/zero);
      199 +                        return (-one / zero);
 177  200                  else
 178      -                    return (zero/zero);
      201 +                        return (zero / zero);
 179  202          }
      203 +
 180  204          if (x > 1.28L) {
 181  205                  if (!finitel(x))
 182  206                          return (zero);
      207 +
 183  208                  s = sinl(x);
 184  209                  c = cosl(x);
 185      -        /*
 186      -         * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
 187      -         * where x0 = x-3pi/4
 188      -         *      Better formula:
 189      -         *              cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
 190      -         *                      =  1/sqrt(2) * (sin(x) - cos(x))
 191      -         *              sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
 192      -         *                      = -1/sqrt(2) * (cos(x) + sin(x))
 193      -         * To avoid cancellation, use
 194      -         *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
 195      -         * to compute the worse one.
 196      -         */
      210 +
      211 +                /* BEGIN CSTYLED */
      212 +                /*
      213 +                 * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x0)-q1(x)*sin(x0))
      214 +                 * where x0 = x-3pi/4
      215 +                 *      Better formula:
      216 +                 *              cos(x0) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
      217 +                 *                      =  1/sqrt(2) * (sin(x) - cos(x))
      218 +                 *              sin(x0) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
      219 +                 *                      = -1/sqrt(2) * (cos(x) + sin(x))
      220 +                 * To avoid cancellation, use
      221 +                 *              sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
      222 +                 * to compute the worse one.
      223 +                 */
      224 +                /* END CSTYLED */
 197  225                  if (x > 1.0e2450L) {    /* x+x may overflow */
 198      -                        ss = -s-c;
 199      -                        cc =  s-c;
      226 +                        ss = -s - c;
      227 +                        cc = s - c;
 200  228                  } else if (signbitl(s) != signbitl(c)) {
 201  229                          cc = s - c;
 202      -                        ss = cosl(x+x)/cc;
      230 +                        ss = cosl(x + x) / cc;
 203  231                  } else {
 204      -                        ss = -s-c;
 205      -                        cc = cosl(x+x)/ss;
      232 +                        ss = -s - c;
      233 +                        cc = cosl(x + x) / ss;
 206  234                  }
 207      -        /*
 208      -         * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
 209      -         * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
 210      -         */
      235 +
      236 +                /*
      237 +                 * j1(x) = 1/sqrt(pi*x) * (P(1,x)*cc - Q(1,x)*ss)
      238 +                 * y1(x) = 1/sqrt(pi*x) * (P(1,x)*ss + Q(1,x)*cc)
      239 +                 */
 211  240                  if (x > 1.0e91L)
 212      -                        return (invsqrtpi*ss)/sqrtl(x);
 213      -        return (invsqrtpi*(pone(x)*ss+qone(x)*cc)/sqrtl(x));
      241 +                        return ((invsqrtpi * ss) / sqrtl(x));
      242 +
      243 +                return (invsqrtpi * (pone(x) * ss + qone(x) * cc) / sqrtl(x));
      244 +        }
      245 +
      246 +        if (x <= tiny)
      247 +                return (-tpi / x);
      248 +
      249 +        z = x * x;
      250 +        u = u0[6];
      251 +        v = v0[6] + z * v0[7];
      252 +
      253 +        for (i = 5; i >= 0; i--) {
      254 +                u = u * z + u0[i];
      255 +                v = v * z + v0[i];
 214  256          }
 215      -        if (x <= tiny) {
 216      -            return (-tpi/x);
 217      -        }
 218      -        z = x*x;
 219      -            u = u0[6]; v = v0[6]+z*v0[7];
 220      -            for (i = 5; i >= 0; i--) {
 221      -                u = u*z + u0[i];
 222      -                v = v*z + v0[i];
 223      -            }
 224      -        return (x*(u/v) + tpi*(j1l(x)*logl(x)-one/x));
      257 +
      258 +        return (x * (u / v) + tpi * (j1l(x) * logl(x) - one / x));
 225  259  }
 226  260  
 227  261  static GENERIC pr0[12] = {
 228      -   1.000000000000000000000000000000000000267e+0000L,
 229      -   1.060717875045891455602180843276758003035e+0003L,
 230      -   4.344347542892127024446687712181105852335e+0005L,
 231      -   8.915680220724007016377924252717410457094e+0007L,
 232      -   9.969502259938406062809873257569171272819e+0009L,
 233      -   6.200290193138613035646510338707386316595e+0011L,
 234      -   2.105978548788015119851815854422247330118e+0013L,
 235      -   3.696635772784601239371730810311998368948e+0014L,
 236      -   3.015913097920694682057958412534134515156e+0015L,
 237      -   9.370298471339353098123277427328592725921e+0015L,
 238      -   7.190349005196335967340799265074029443057e+0015L,
 239      -   2.736097786240689996880391074927552517982e+0014L,
      262 +        1.000000000000000000000000000000000000267e+0000L,
      263 +        1.060717875045891455602180843276758003035e+0003L,
      264 +        4.344347542892127024446687712181105852335e+0005L,
      265 +        8.915680220724007016377924252717410457094e+0007L,
      266 +        9.969502259938406062809873257569171272819e+0009L,
      267 +        6.200290193138613035646510338707386316595e+0011L,
      268 +        2.105978548788015119851815854422247330118e+0013L,
      269 +        3.696635772784601239371730810311998368948e+0014L,
      270 +        3.015913097920694682057958412534134515156e+0015L,
      271 +        9.370298471339353098123277427328592725921e+0015L,
      272 +        7.190349005196335967340799265074029443057e+0015L,
      273 +        2.736097786240689996880391074927552517982e+0014L,
 240  274  };
      275 +
 241  276  static GENERIC ps0[11] = {
 242      -   1.0e0L,
 243      -   1.060600687545891455602180843276758095107e+0003L,
 244      -   4.343106093416975589147153906505338900961e+0005L,
 245      -   8.910605869002176566582072242244353399059e+0007L,
 246      -   9.959122058635087888690713917622056540190e+0009L,
 247      -   6.188744967234948231792482949171041843894e+0011L,
 248      -   2.098863976953783506401759873801990304907e+0013L,
 249      -   3.672870357018063196746729751479938908450e+0014L,
 250      -   2.975538419246824921049011529574385888420e+0015L,
 251      -   9.063657659995043205018686029284479837091e+0015L,
 252      -   6.401953344314747916729366441508892711691e+0015L,
      277 +        1.0e0L,
      278 +        1.060600687545891455602180843276758095107e+0003L,
      279 +        4.343106093416975589147153906505338900961e+0005L,
      280 +        8.910605869002176566582072242244353399059e+0007L,
      281 +        9.959122058635087888690713917622056540190e+0009L,
      282 +        6.188744967234948231792482949171041843894e+0011L,
      283 +        2.098863976953783506401759873801990304907e+0013L,
      284 +        3.672870357018063196746729751479938908450e+0014L,
      285 +        2.975538419246824921049011529574385888420e+0015L,
      286 +        9.063657659995043205018686029284479837091e+0015L,
      287 +        6.401953344314747916729366441508892711691e+0015L,
 253  288  };
      289 +
 254  290  static GENERIC pr1[12] = {
 255      -   1.000000000000000000000023667524130660984e+0000L,
 256      -   6.746154419979618754354803488126452971204e+0002L,
 257      -   1.811210781083390154857018330296145970502e+0005L,
 258      -   2.533098390379924268038005329095287842244e+0007L,
 259      -   2.029683619805342145252338570875424600729e+0009L,
 260      -   9.660859662192711465301069401598929980319e+0010L,
 261      -   2.743396238644831519934098967716621316316e+0012L,
 262      -   4.553097354140854377931023170263455246288e+0013L,
 263      -   4.210245069852219757476169864974870720374e+0014L,
 264      -   1.987334056229596485076645967176169801727e+0015L,
 265      -   4.067120052787096893838970455751338930462e+0015L,
 266      -   2.486539606380406398310845264910691398133e+0015L,
      291 +        1.000000000000000000000023667524130660984e+0000L,
      292 +        6.746154419979618754354803488126452971204e+0002L,
      293 +        1.811210781083390154857018330296145970502e+0005L,
      294 +        2.533098390379924268038005329095287842244e+0007L,
      295 +        2.029683619805342145252338570875424600729e+0009L,
      296 +        9.660859662192711465301069401598929980319e+0010L,
      297 +        2.743396238644831519934098967716621316316e+0012L,
      298 +        4.553097354140854377931023170263455246288e+0013L,
      299 +        4.210245069852219757476169864974870720374e+0014L,
      300 +        1.987334056229596485076645967176169801727e+0015L,
      301 +        4.067120052787096893838970455751338930462e+0015L,
      302 +        2.486539606380406398310845264910691398133e+0015L,
 267  303  };
      304 +
 268  305  static GENERIC ps1[14] = {
 269      -   1.0e0L,
 270      -   6.744982544979618754355808680196859521782e+0002L,
 271      -   1.810421795396966762032155290441364740350e+0005L,
 272      -   2.530986460644310651529583759699988435573e+0007L,
 273      -   2.026743276048023121360249288818290224145e+0009L,
 274      -   9.637461924407405935245269407052641341836e+0010L,
 275      -   2.732378628423766417402292797028314160831e+0012L,
 276      -   4.522345274960527124354844364012184278488e+0013L,
 277      -   4.160650668341743132685335758415469856545e+0014L,
 278      -   1.943730242988858208243492424892435901211e+0015L,
 279      -   3.880228532692127989901131618598067450001e+0015L,
 280      -   2.178020816161154615841000173683302999728e+0015L,
 281      -  -8.994062666842225551554346698171600634173e+0013L,
 282      -   1.368520368508851253495764806934619574990e+0013L,
      306 +        1.0e0L,
      307 +        6.744982544979618754355808680196859521782e+0002L,
      308 +        1.810421795396966762032155290441364740350e+0005L,
      309 +        2.530986460644310651529583759699988435573e+0007L,
      310 +        2.026743276048023121360249288818290224145e+0009L,
      311 +        9.637461924407405935245269407052641341836e+0010L,
      312 +        2.732378628423766417402292797028314160831e+0012L,
      313 +        4.522345274960527124354844364012184278488e+0013L,
      314 +        4.160650668341743132685335758415469856545e+0014L,
      315 +        1.943730242988858208243492424892435901211e+0015L,
      316 +        3.880228532692127989901131618598067450001e+0015L,
      317 +        2.178020816161154615841000173683302999728e+0015L,
      318 +        -8.994062666842225551554346698171600634173e+0013L,
      319 +        1.368520368508851253495764806934619574990e+0013L,
 283  320  };
      321 +
 284  322  static GENERIC pr2[12] = {
 285      -   1.000000000000000006938651621840396237282e+0000L,
 286      -   3.658416291850404981407101077037948144698e+0002L,
 287      -   5.267073772170356547709794670602812447537e+0004L,
 288      -   3.912012101226837463014925210735894620442e+0006L,
 289      -   1.651295648974103957193874928714180765625e+0008L,
 290      -   4.114901144480797609972484998142146783499e+0009L,
 291      -   6.092524309766036681542980572526335147672e+0010L,
 292      -   5.263913178071282616719249969074134570577e+0011L,
 293      -   2.538408581124324223367341020538081330994e+0012L,
 294      -   6.288607929360291027895126983015365677648e+0012L,
 295      -   6.848330048211148419047055075386525945280e+0012L,
 296      -   2.290309646838867941423178163991423244690e+0012L,
      323 +        1.000000000000000006938651621840396237282e+0000L,
      324 +        3.658416291850404981407101077037948144698e+0002L,
      325 +        5.267073772170356547709794670602812447537e+0004L,
      326 +        3.912012101226837463014925210735894620442e+0006L,
      327 +        1.651295648974103957193874928714180765625e+0008L,
      328 +        4.114901144480797609972484998142146783499e+0009L,
      329 +        6.092524309766036681542980572526335147672e+0010L,
      330 +        5.263913178071282616719249969074134570577e+0011L,
      331 +        2.538408581124324223367341020538081330994e+0012L,
      332 +        6.288607929360291027895126983015365677648e+0012L,
      333 +        6.848330048211148419047055075386525945280e+0012L,
      334 +        2.290309646838867941423178163991423244690e+0012L,
 297  335  };
      336 +
 298  337  static GENERIC ps2[14] = {
 299      -   1.0e0L,
 300      -   3.657244416850405086459410165762319861856e+0002L,
 301      -   5.262802358425023243992387075861237306312e+0004L,
 302      -   3.905896813959919648136295861661483848364e+0006L,
 303      -   1.646791907791461220742694842108202772763e+0008L,
 304      -   4.096132803064256022224954120208201437344e+0009L,
 305      -   6.046665195915950447544429445730680236759e+0010L,
 306      -   5.198061739781991313414052212328653295168e+0011L,
 307      -   2.484233851814333966401527626421254279796e+0012L,
 308      -   6.047868806925315879339651539434315255940e+0012L,
 309      -   6.333103831254091652501642567294101813354e+0012L,
 310      -   1.875143098754284994467609936924685024968e+0012L,
 311      -  -5.238330920563392692965412762508813601534e+0010L,
 312      -   4.656888609439364725427789198383779259957e+0009L,
      338 +        1.0e0L,
      339 +        3.657244416850405086459410165762319861856e+0002L,
      340 +        5.262802358425023243992387075861237306312e+0004L,
      341 +        3.905896813959919648136295861661483848364e+0006L,
      342 +        1.646791907791461220742694842108202772763e+0008L,
      343 +        4.096132803064256022224954120208201437344e+0009L,
      344 +        6.046665195915950447544429445730680236759e+0010L,
      345 +        5.198061739781991313414052212328653295168e+0011L,
      346 +        2.484233851814333966401527626421254279796e+0012L,
      347 +        6.047868806925315879339651539434315255940e+0012L,
      348 +        6.333103831254091652501642567294101813354e+0012L,
      349 +        1.875143098754284994467609936924685024968e+0012L,
      350 +        -5.238330920563392692965412762508813601534e+0010L,
      351 +        4.656888609439364725427789198383779259957e+0009L,
 313  352  };
      353 +
 314  354  static GENERIC pr3[13] = {
 315      -   1.000000000000009336887318068056137842897e+0000L,
 316      -   2.242719942728459588488051572002835729183e+0002L,
 317      -   1.955450611382026550266257737331095691092e+0004L,
 318      -   8.707143293993619899395400562409175590739e+0005L,
 319      -   2.186267894487004565948324289010954505316e+0007L,
 320      -   3.224328510541957792360691585667502864688e+0008L,
 321      -   2.821057355151380597331792896882741364897e+0009L,
 322      -   1.445371387295422404365584793796028979840e+0010L,
 323      -   4.181743160669891357783011002656658107864e+0010L,
 324      -   6.387371088767993119325536137794535513922e+0010L,
 325      -   4.575619999412716078064070587767416436396e+0010L,
 326      -   1.228415651211639160620284441690503550842e+0010L,
 327      -   7.242170349875563053436050532153112882072e+0008L,
      355 +        1.000000000000009336887318068056137842897e+0000L,
      356 +        2.242719942728459588488051572002835729183e+0002L,
      357 +        1.955450611382026550266257737331095691092e+0004L,
      358 +        8.707143293993619899395400562409175590739e+0005L,
      359 +        2.186267894487004565948324289010954505316e+0007L,
      360 +        3.224328510541957792360691585667502864688e+0008L,
      361 +        2.821057355151380597331792896882741364897e+0009L,
      362 +        1.445371387295422404365584793796028979840e+0010L,
      363 +        4.181743160669891357783011002656658107864e+0010L,
      364 +        6.387371088767993119325536137794535513922e+0010L,
      365 +        4.575619999412716078064070587767416436396e+0010L,
      366 +        1.228415651211639160620284441690503550842e+0010L,
      367 +        7.242170349875563053436050532153112882072e+0008L,
 328  368  };
      369 +
 329  370  static GENERIC ps3[13] = {
 330      -   1.0e0L,
 331      -   2.241548067728529551049804610486061401070e+0002L,
 332      -   1.952838216795552145132137932931237181307e+0004L,
 333      -   8.684574926493185744628127341069974575526e+0005L,
 334      -   2.176357771067037962940853412819852189164e+0007L,
 335      -   3.199958682356132977319258783167122100567e+0008L,
 336      -   2.786218931525334687844675219914201872570e+0009L,
 337      -   1.416283776951741549631417572317916039767e+0010L,
 338      -   4.042962659271567948735676834609348842922e+0010L,
 339      -   6.028168462646694510083847222968444402161e+0010L,
 340      -   4.118410226794641413833887606580085281111e+0010L,
 341      -   9.918735736297038430744161253338202230263e+0009L,
 342      -   4.092967198238098023219124487437130332038e+0008L,
      371 +        1.0e0L,
      372 +        2.241548067728529551049804610486061401070e+0002L,
      373 +        1.952838216795552145132137932931237181307e+0004L,
      374 +        8.684574926493185744628127341069974575526e+0005L,
      375 +        2.176357771067037962940853412819852189164e+0007L,
      376 +        3.199958682356132977319258783167122100567e+0008L,
      377 +        2.786218931525334687844675219914201872570e+0009L,
      378 +        1.416283776951741549631417572317916039767e+0010L,
      379 +        4.042962659271567948735676834609348842922e+0010L,
      380 +        6.028168462646694510083847222968444402161e+0010L,
      381 +        4.118410226794641413833887606580085281111e+0010L,
      382 +        9.918735736297038430744161253338202230263e+0009L,
      383 +        4.092967198238098023219124487437130332038e+0008L,
 343  384  };
      385 +
 344  386  static GENERIC pr4[13] = {
 345      -   1.000000000001509220978157399042059553390e+0000L,
 346      -   1.437551868378147851133499996323782607787e+0002L,
 347      -   7.911335537418177296041518061404505428004e+0003L,
 348      -   2.193710939115317214716518908935756104804e+0005L,
 349      -   3.390662495136730962513489796538274984382e+0006L,
 350      -   3.048655347929348891006070609293884274789e+0007L,
 351      -   1.613781633489496606354045161527450975195e+0008L,
 352      -   4.975089835037230277110156150038482159988e+0008L,
 353      -   8.636047087015115403880904418339566323264e+0008L,
 354      -   7.918202912328366140110671223076949101509e+0008L,
 355      -   3.423294665798984733439650311722794853294e+0008L,
 356      -   5.621904953441963961040503934782662613621e+0007L,
 357      -   2.086303543310240260758670404509484499793e+0006L,
      387 +        1.000000000001509220978157399042059553390e+0000L,
      388 +        1.437551868378147851133499996323782607787e+0002L,
      389 +        7.911335537418177296041518061404505428004e+0003L,
      390 +        2.193710939115317214716518908935756104804e+0005L,
      391 +        3.390662495136730962513489796538274984382e+0006L,
      392 +        3.048655347929348891006070609293884274789e+0007L,
      393 +        1.613781633489496606354045161527450975195e+0008L,
      394 +        4.975089835037230277110156150038482159988e+0008L,
      395 +        8.636047087015115403880904418339566323264e+0008L,
      396 +        7.918202912328366140110671223076949101509e+0008L,
      397 +        3.423294665798984733439650311722794853294e+0008L,
      398 +        5.621904953441963961040503934782662613621e+0007L,
      399 +        2.086303543310240260758670404509484499793e+0006L,
 358  400  };
      401 +
 359  402  static GENERIC ps4[13] = {
 360      -   1.0e0L,
 361      -   1.436379993384532371670493319591847362304e+0002L,
 362      -   7.894647154785430678061053848847436659499e+0003L,
 363      -   2.184659753392097529008981741550878586174e+0005L,
 364      -   3.366109083305465176803513738147049499361e+0006L,
 365      -   3.011911545968996817697665866587226343186e+0007L,
 366      -   1.582262913779689851316760148459414895301e+0008L,
 367      -   4.819268809494937919217938589530138201770e+0008L,
 368      -   8.201355762990450679702837123432527154830e+0008L,
 369      -   7.268232093982510937417446421282341425212e+0008L,
 370      -   2.950911909015572933262131323934036480462e+0008L,
 371      -   4.242839924305934423010858966540621219396e+0007L,
 372      -   1.064387620445090779182117666330405186866e+0006L,
      403 +        1.0e0L,
      404 +        1.436379993384532371670493319591847362304e+0002L,
      405 +        7.894647154785430678061053848847436659499e+0003L,
      406 +        2.184659753392097529008981741550878586174e+0005L,
      407 +        3.366109083305465176803513738147049499361e+0006L,
      408 +        3.011911545968996817697665866587226343186e+0007L,
      409 +        1.582262913779689851316760148459414895301e+0008L,
      410 +        4.819268809494937919217938589530138201770e+0008L,
      411 +        8.201355762990450679702837123432527154830e+0008L,
      412 +        7.268232093982510937417446421282341425212e+0008L,
      413 +        2.950911909015572933262131323934036480462e+0008L,
      414 +        4.242839924305934423010858966540621219396e+0007L,
      415 +        1.064387620445090779182117666330405186866e+0006L,
 373  416  };
      417 +
 374  418  static GENERIC pr5[13] = {
 375      -   1.000000000102434805241171427253847353861e+0000L,
 376      -   9.129332257083629259060502249025963234821e+0001L,
 377      -   3.132238483586953037576119377504557191413e+0003L,
 378      -   5.329782528269307971278943122454171107861e+0004L,
 379      -   4.988460157184117790692873002103052944145e+0005L,
 380      -   2.686602071615786816147010334256047469378e+0006L,
 381      -   8.445418526028961197703799808701268301831e+0006L,
 382      -   1.536575358646141157475725889907900827390e+0007L,
 383      -   1.568405818236523821796862770586544811945e+0007L,
 384      -   8.450876239888770102387618667362302173547e+0006L,
 385      -   2.154414900139567328424026827163203446077e+0006L,
 386      -   2.105656926565043898888460254808062352205e+0005L,
 387      -   4.739165011023396507022134303736862812975e+0003L,
      419 +        1.000000000102434805241171427253847353861e+0000L,
      420 +        9.129332257083629259060502249025963234821e+0001L,
      421 +        3.132238483586953037576119377504557191413e+0003L,
      422 +        5.329782528269307971278943122454171107861e+0004L,
      423 +        4.988460157184117790692873002103052944145e+0005L,
      424 +        2.686602071615786816147010334256047469378e+0006L,
      425 +        8.445418526028961197703799808701268301831e+0006L,
      426 +        1.536575358646141157475725889907900827390e+0007L,
      427 +        1.568405818236523821796862770586544811945e+0007L,
      428 +        8.450876239888770102387618667362302173547e+0006L,
      429 +        2.154414900139567328424026827163203446077e+0006L,
      430 +        2.105656926565043898888460254808062352205e+0005L,
      431 +        4.739165011023396507022134303736862812975e+0003L,
 388  432  };
      433 +
 389  434  static GENERIC ps5[13] = {
 390      -   1.0e0L,
 391      -   9.117613509595327476509152673394703847793e+0001L,
 392      -   3.121697972484015639301279229281770795147e+0003L,
 393      -   5.294447222735893568040911873834576440255e+0004L,
 394      -   4.930368882192772335798256684110887882807e+0005L,
 395      -   2.634854685641165298302167435798357437768e+0006L,
 396      -   8.185462775400326393555896157031818280918e+0006L,
 397      -   1.462417423080215192609668642663030667086e+0007L,
 398      -   1.450624993985851675982860844153954896015e+0007L,
 399      -   7.460467647561995283219086567162006113864e+0006L,
 400      -   1.754210981405612478869227142579056338965e+0006L,
 401      -   1.463286721155271971526264914524746699596e+0005L,
 402      -   2.155894725796702015341211116579827039459e+0003L,
      435 +        1.0e0L,
      436 +        9.117613509595327476509152673394703847793e+0001L,
      437 +        3.121697972484015639301279229281770795147e+0003L,
      438 +        5.294447222735893568040911873834576440255e+0004L,
      439 +        4.930368882192772335798256684110887882807e+0005L,
      440 +        2.634854685641165298302167435798357437768e+0006L,
      441 +        8.185462775400326393555896157031818280918e+0006L,
      442 +        1.462417423080215192609668642663030667086e+0007L,
      443 +        1.450624993985851675982860844153954896015e+0007L,
      444 +        7.460467647561995283219086567162006113864e+0006L,
      445 +        1.754210981405612478869227142579056338965e+0006L,
      446 +        1.463286721155271971526264914524746699596e+0005L,
      447 +        2.155894725796702015341211116579827039459e+0003L,
 403  448  };
      449 +
 404  450  static GENERIC pr6[13] = {
 405      -   1.000000003564855546741735920315743157129e+0000L,
 406      -   5.734003934862540458119423509909510288366e+0001L,
 407      -   1.209572491935850486086559692291796887976e+0003L,
 408      -   1.243398391422281247933674779163660286838e+0004L,
 409      -   6.930996755181437937258220998601708278787e+0004L,
 410      -   2.198067659532757598646722249966767620099e+0005L,
 411      -   4.033659432712058633933179115820576858455e+0005L,
 412      -   4.257759657219008027016047206574574358678e+0005L,
 413      -   2.511917395876004349480721277445763916389e+0005L,
 414      -   7.813756153070623654178731651381881953552e+0004L,
 415      -   1.152069173381127881385588092905864352891e+0004L,
 416      -   6.548580782804088553777816037551523398082e+0002L,
 417      -   8.668725370116906132327542766127938496880e+0000L,
      451 +        1.000000003564855546741735920315743157129e+0000L,
      452 +        5.734003934862540458119423509909510288366e+0001L,
      453 +        1.209572491935850486086559692291796887976e+0003L,
      454 +        1.243398391422281247933674779163660286838e+0004L,
      455 +        6.930996755181437937258220998601708278787e+0004L,
      456 +        2.198067659532757598646722249966767620099e+0005L,
      457 +        4.033659432712058633933179115820576858455e+0005L,
      458 +        4.257759657219008027016047206574574358678e+0005L,
      459 +        2.511917395876004349480721277445763916389e+0005L,
      460 +        7.813756153070623654178731651381881953552e+0004L,
      461 +        1.152069173381127881385588092905864352891e+0004L,
      462 +        6.548580782804088553777816037551523398082e+0002L,
      463 +        8.668725370116906132327542766127938496880e+0000L,
 418  464  };
      465 +
 419  466  static GENERIC ps6[13] = {
 420      -   1.0e0L,
 421      -   5.722285236357114566499221525736286205184e+0001L,
 422      -   1.203010842878317935444582950620339570506e+0003L,
 423      -   1.230058335378583550155825502172435371208e+0004L,
 424      -   6.800998550607861288865300438648089894412e+0004L,
 425      -   2.130767829599304262987769347536850885921e+0005L,
 426      -   3.840483466643916681759936972992155310026e+0005L,
 427      -   3.947432373459225542861819148108081160393e+0005L,
 428      -   2.237816239393081111481588434457838526738e+0005L,
 429      -   6.545820495124419723398946273790921540774e+0004L,
 430      -   8.729563630320892741500726213278834737196e+0003L,
 431      -   4.130762660291894753450174794196998813709e+0002L,
 432      -   3.480368898672684645130335786015075595598e+0000L,
      467 +        1.0e0L,
      468 +        5.722285236357114566499221525736286205184e+0001L,
      469 +        1.203010842878317935444582950620339570506e+0003L,
      470 +        1.230058335378583550155825502172435371208e+0004L,
      471 +        6.800998550607861288865300438648089894412e+0004L,
      472 +        2.130767829599304262987769347536850885921e+0005L,
      473 +        3.840483466643916681759936972992155310026e+0005L,
      474 +        3.947432373459225542861819148108081160393e+0005L,
      475 +        2.237816239393081111481588434457838526738e+0005L,
      476 +        6.545820495124419723398946273790921540774e+0004L,
      477 +        8.729563630320892741500726213278834737196e+0003L,
      478 +        4.130762660291894753450174794196998813709e+0002L,
      479 +        3.480368898672684645130335786015075595598e+0000L,
 433  480  };
      481 +
 434  482  static GENERIC sixteen = 16.0L;
 435      -static GENERIC eight   = 8.0L;
 436      -static GENERIC huge    = 1.0e30L;
      483 +static GENERIC eight = 8.0L;
      484 +static GENERIC huge = 1.0e30L;
 437  485  
 438      -static GENERIC pone(x)
 439      -GENERIC x;
      486 +static GENERIC
      487 +pone(x)
      488 +    GENERIC x;
 440  489  {
 441  490          GENERIC s, r, t, z;
 442  491          int i;
      492 +
 443  493          if (x > huge)
 444  494                  return (one);
 445      -        t = one/x; z = t*t;
      495 +
      496 +        t = one / x;
      497 +        z = t * t;
      498 +
 446  499          if (x > sixteen) {
 447      -            r = z*pr0[11]+pr0[10]; s = ps0[10];
 448      -            for (i = 9; i >= 0; i--) {
 449      -                r = z*r + pr0[i];
 450      -                s = z*s + ps0[i];
 451      -            }
      500 +                r = z * pr0[11] + pr0[10];
      501 +                s = ps0[10];
      502 +
      503 +                for (i = 9; i >= 0; i--) {
      504 +                        r = z * r + pr0[i];
      505 +                        s = z * s + ps0[i];
      506 +                }
 452  507          } else if (x > eight) {
 453      -            r = pr1[11]; s = ps1[11]+z*(ps1[12]+z*ps1[13]);
 454      -            for (i = 10; i >= 0; i--) {
 455      -                r = z*r + pr1[i];
 456      -                s = z*s + ps1[i];
 457      -            }
      508 +                r = pr1[11];
      509 +                s = ps1[11] + z * (ps1[12] + z * ps1[13]);
      510 +
      511 +                for (i = 10; i >= 0; i--) {
      512 +                        r = z * r + pr1[i];
      513 +                        s = z * s + ps1[i];
      514 +                }
 458  515          } else if (x > five) {
 459      -            r = pr2[11]; s = ps2[11]+z*(ps2[12]+z*ps2[13]);
 460      -            for (i = 10; i >= 0; i--) {
 461      -                r = z*r + pr2[i];
 462      -                s = z*s + ps2[i];
 463      -            }
 464      -        } else if (x > 3.5L) {
 465      -            r = pr3[12]; s = ps3[12];
 466      -            for (i = 11; i >= 0; i--) {
 467      -                r = z*r + pr3[i];
 468      -                s = z*s + ps3[i];
 469      -            }
 470      -        } else if (x > 2.5L) {
 471      -            r = pr4[12]; s = ps4[12];
 472      -            for (i = 11; i >= 0; i--) {
 473      -                r = z*r + pr4[i];
 474      -                s = z*s + ps4[i];
 475      -            }
 476      -        } else if (x > (1.0L/0.5625L)) {
 477      -            r = pr5[12]; s = ps5[12];
 478      -            for (i = 11; i >= 0; i--) {
 479      -                r = z*r + pr5[i];
 480      -                s = z*s + ps5[i];
 481      -            }
 482      -        } else {                /* assume x > 1.28 */
 483      -            r = pr6[12]; s = ps6[12];
 484      -            for (i = 11; i >= 0; i--) {
 485      -                r = z*r + pr6[i];
 486      -                s = z*s + ps6[i];
 487      -            }
 488      -        }
 489      -        return (r/s);
 490      -}
      516 +                r = pr2[11];
      517 +                s = ps2[11] + z * (ps2[12] + z * ps2[13]);
 491  518  
      519 +                for (i = 10; i >= 0; i--) {
      520 +                        r = z * r + pr2[i];
      521 +                        s = z * s + ps2[i];
      522 +                }
      523 +        } else if (x > 3.5L) {
      524 +                r = pr3[12];
      525 +                s = ps3[12];
      526 +
      527 +                for (i = 11; i >= 0; i--) {
      528 +                        r = z * r + pr3[i];
      529 +                        s = z * s + ps3[i];
      530 +                }
      531 +        } else if (x > 2.5L) {
      532 +                r = pr4[12];
      533 +                s = ps4[12];
      534 +
      535 +                for (i = 11; i >= 0; i--) {
      536 +                        r = z * r + pr4[i];
      537 +                        s = z * s + ps4[i];
      538 +                }
      539 +        } else if (x > (1.0L / 0.5625L)) {
      540 +                r = pr5[12];
      541 +                s = ps5[12];
      542 +
      543 +                for (i = 11; i >= 0; i--) {
      544 +                        r = z * r + pr5[i];
      545 +                        s = z * s + ps5[i];
      546 +                }
      547 +        } else {                        /* assume x > 1.28 */
      548 +                r = pr6[12];
      549 +                s = ps6[12];
      550 +
      551 +                for (i = 11; i >= 0; i--) {
      552 +                        r = z * r + pr6[i];
      553 +                        s = z * s + ps6[i];
      554 +                }
      555 +        }
 492  556  
      557 +        return (r / s);
      558 +}
 493  559  static GENERIC qr0[12] = {
 494      -   3.749999999999999999999999999999999971033e-0001L,
 495      -   4.256726035237050601607682277433094262226e+0002L,
 496      -   1.875976490812878489192409978945401066066e+0005L,
 497      -   4.170314268048041914273603680317745592790e+0007L,
 498      -   5.092750132543855817293451118974555746551e+0009L,
 499      -   3.494749676278488654103505795794139483404e+0011L,
 500      -   1.327062148257437316997667817096694173709e+0013L,
 501      -   2.648993138273427226907503742066551150490e+0014L,
 502      -   2.511695665909547412222430494473998127684e+0015L,
 503      -   9.274694506662289043224310499164702306096e+0015L,
 504      -   8.150904170663663829331320302911792892002e+0015L,
 505      -  -5.001918733707662355772037829620388765122e+0014L,
      560 +        3.749999999999999999999999999999999971033e-0001L,
      561 +        4.256726035237050601607682277433094262226e+0002L,
      562 +        1.875976490812878489192409978945401066066e+0005L,
      563 +        4.170314268048041914273603680317745592790e+0007L,
      564 +        5.092750132543855817293451118974555746551e+0009L,
      565 +        3.494749676278488654103505795794139483404e+0011L,
      566 +        1.327062148257437316997667817096694173709e+0013L,
      567 +        2.648993138273427226907503742066551150490e+0014L,
      568 +        2.511695665909547412222430494473998127684e+0015L,
      569 +        9.274694506662289043224310499164702306096e+0015L,
      570 +        8.150904170663663829331320302911792892002e+0015L,
      571 +        -5.001918733707662355772037829620388765122e+0014L,
 506  572  };
      573 +
 507  574  static GENERIC qs0[11] = {
 508      -   1.0e0L,
 509      -   1.135400380229880160428715273982155760093e+0003L,
 510      -   5.005701183877126164326765545516590744360e+0005L,
 511      -   1.113444200113712167984337603933040102987e+0008L,
 512      -   1.361074819925223062778717565699039471124e+0010L,
 513      -   9.355750985802849484438933905325982809653e+0011L,
 514      -   3.563462786008988825003965543857998084828e+0013L,
 515      -   7.155145113900094163648726863803802910454e+0014L,
 516      -   6.871266835834472758055559013851843654113e+0015L,
 517      -   2.622030899226736712644974988157345234092e+0016L,
 518      -   2.602912729172876330650077021706139707746e+0016L,
      575 +        1.0e0L,
      576 +        1.135400380229880160428715273982155760093e+0003L,
      577 +        5.005701183877126164326765545516590744360e+0005L,
      578 +        1.113444200113712167984337603933040102987e+0008L,
      579 +        1.361074819925223062778717565699039471124e+0010L,
      580 +        9.355750985802849484438933905325982809653e+0011L,
      581 +        3.563462786008988825003965543857998084828e+0013L,
      582 +        7.155145113900094163648726863803802910454e+0014L,
      583 +        6.871266835834472758055559013851843654113e+0015L,
      584 +        2.622030899226736712644974988157345234092e+0016L,
      585 +        2.602912729172876330650077021706139707746e+0016L,
 519  586  };
      587 +
 520  588  static GENERIC qr1[12] = {
 521      -   3.749999999999999999997762458207284405806e-0001L,
 522      -   2.697883998881706839929255517498189980485e+0002L,
 523      -   7.755195925781028489386938870473834411019e+0004L,
 524      -   1.166777762104017777198211072895528968355e+0007L,
 525      -   1.011504772984321168320010084520261069362e+0009L,
 526      -   5.246007703574156853577754571720205550010e+0010L,
 527      -   1.637692549885592683166116551691266537647e+0012L,
 528      -   3.022303623698185669912990310925039382495e+0013L,
 529      -   3.154769927290655684846107030265909987946e+0014L,
 530      -   1.715819913441554770089730934808123360921e+0015L,
 531      -   4.165044355759732622273534445131736188510e+0015L,
 532      -   3.151381420874174705643100381708086287596e+0015L,
      589 +        3.749999999999999999997762458207284405806e-0001L,
      590 +        2.697883998881706839929255517498189980485e+0002L,
      591 +        7.755195925781028489386938870473834411019e+0004L,
      592 +        1.166777762104017777198211072895528968355e+0007L,
      593 +        1.011504772984321168320010084520261069362e+0009L,
      594 +        5.246007703574156853577754571720205550010e+0010L,
      595 +        1.637692549885592683166116551691266537647e+0012L,
      596 +        3.022303623698185669912990310925039382495e+0013L,
      597 +        3.154769927290655684846107030265909987946e+0014L,
      598 +        1.715819913441554770089730934808123360921e+0015L,
      599 +        4.165044355759732622273534445131736188510e+0015L,
      600 +        3.151381420874174705643100381708086287596e+0015L,
 533  601  };
      602 +
 534  603  static GENERIC qs1[14] = {
 535      -   1.0e0L,
 536      -   7.197091705351218239785633172408276982828e+0002L,
 537      -   2.070012799599548685544883041297609861055e+0005L,
 538      -   3.117014815317656221871840152778458754516e+0007L,
 539      -   2.705719678902554974863325877025902971727e+0009L,
 540      -   1.406113614727345726925060648750867264098e+0011L,
 541      -   4.403777536067131320363005978631674817359e+0012L,
 542      -   8.170725690209322283061499386703167242894e+0013L,
 543      -   8.609458844975495289227794126964431210566e+0014L,
 544      -   4.766766367015473481257280600694952920204e+0015L,
 545      -   1.202286587943342194863557940888115641650e+0016L,
 546      -   1.012474328306200909525063936061756024120e+0016L,
 547      -   6.183552022678917858273222879615824070703e+0014L,
 548      -  -9.756731548558226997573737400988225722740e+0013L,
      604 +        1.0e0L,
      605 +        7.197091705351218239785633172408276982828e+0002L,
      606 +        2.070012799599548685544883041297609861055e+0005L,
      607 +        3.117014815317656221871840152778458754516e+0007L,
      608 +        2.705719678902554974863325877025902971727e+0009L,
      609 +        1.406113614727345726925060648750867264098e+0011L,
      610 +        4.403777536067131320363005978631674817359e+0012L,
      611 +        8.170725690209322283061499386703167242894e+0013L,
      612 +        8.609458844975495289227794126964431210566e+0014L,
      613 +        4.766766367015473481257280600694952920204e+0015L,
      614 +        1.202286587943342194863557940888115641650e+0016L,
      615 +        1.012474328306200909525063936061756024120e+0016L,
      616 +        6.183552022678917858273222879615824070703e+0014L,
      617 +        -9.756731548558226997573737400988225722740e+0013L,
 549  618  };
      619 +
 550  620  static GENERIC qr2[12] = {
 551      -   3.749999999999999481245647262226994293189e-0001L,
 552      -   1.471366807289771354491181140167359026735e+0002L,
 553      -   2.279432486768448220142080962843526951250e+0004L,
 554      -   1.828943048523771225163804043356958285893e+0006L,
 555      -   8.379828388647823135832220596417725010837e+0007L,
 556      -   2.279814029335044024585393671278378022053e+0009L,
 557      -   3.711653952257118120832817785271466441420e+0010L,
 558      -   3.557650914518554549916730572553105048068e+0011L,
 559      -   1.924583483146095896259774329498934160650e+0012L,
 560      -   5.424386256063736390759567088291887140278e+0012L,
 561      -   6.839325621241776786206509704671746841737e+0012L,
 562      -   2.702169563144001166291686452305436313971e+0012L,
      621 +        3.749999999999999481245647262226994293189e-0001L,
      622 +        1.471366807289771354491181140167359026735e+0002L,
      623 +        2.279432486768448220142080962843526951250e+0004L,
      624 +        1.828943048523771225163804043356958285893e+0006L,
      625 +        8.379828388647823135832220596417725010837e+0007L,
      626 +        2.279814029335044024585393671278378022053e+0009L,
      627 +        3.711653952257118120832817785271466441420e+0010L,
      628 +        3.557650914518554549916730572553105048068e+0011L,
      629 +        1.924583483146095896259774329498934160650e+0012L,
      630 +        5.424386256063736390759567088291887140278e+0012L,
      631 +        6.839325621241776786206509704671746841737e+0012L,
      632 +        2.702169563144001166291686452305436313971e+0012L,
 563  633  };
      634 +
 564  635  static GENERIC qs2[14] = {
 565      -   1.0e0L,
 566      -   3.926379194439388135703211933895203191089e+0002L,
 567      -   6.089148804106598297488336063007609312276e+0004L,
 568      -   4.893546162973278583711376356041614150645e+0006L,
 569      -   2.247571119114497845046388801813832219404e+0008L,
 570      -   6.137635663350177751290469334200757872645e+0009L,
 571      -   1.005115019784102856424493519524998953678e+0011L,
 572      -   9.725664462014503832860151384604677240620e+0011L,
 573      -   5.345525100485511116148634192844434636072e+0012L,
 574      -   1.549944007398946691720862738173956994779e+0013L,
 575      -   2.067148441178952625710302124163264760362e+0013L,
 576      -   9.401565402641963611295119487242595462301e+0012L,
 577      -   3.548217088622398274748837287769709374385e+0011L,
 578      -  -2.934470341719047120076509938432417352365e+0010L,
      636 +        1.0e0L,
      637 +        3.926379194439388135703211933895203191089e+0002L,
      638 +        6.089148804106598297488336063007609312276e+0004L,
      639 +        4.893546162973278583711376356041614150645e+0006L,
      640 +        2.247571119114497845046388801813832219404e+0008L,
      641 +        6.137635663350177751290469334200757872645e+0009L,
      642 +        1.005115019784102856424493519524998953678e+0011L,
      643 +        9.725664462014503832860151384604677240620e+0011L,
      644 +        5.345525100485511116148634192844434636072e+0012L,
      645 +        1.549944007398946691720862738173956994779e+0013L,
      646 +        2.067148441178952625710302124163264760362e+0013L,
      647 +        9.401565402641963611295119487242595462301e+0012L,
      648 +        3.548217088622398274748837287769709374385e+0011L,
      649 +        -2.934470341719047120076509938432417352365e+0010L,
 579  650  };
      651 +
 580  652  static GENERIC qr3[13] = {
 581      -   3.749999999999412724084579833297451472091e-0001L,
 582      -   9.058478580291706212422978492938435582527e+0001L,
 583      -   8.524056033161038750461083666711724381171e+0003L,
 584      -   4.105967158629109427753434569223631014730e+0005L,
 585      -   1.118326603378531348259783091972623333657e+0007L,
 586      -   1.794636683403578918528064904714132329343e+0008L,
 587      -   1.714314157463635959556133236004368896724e+0009L,
 588      -   9.622092032236084846572067257267661456030e+0009L,
 589      -   3.057759524485859159957762858780768355020e+0010L,
 590      -   5.129306780754798531609621454415938890020e+0010L,
 591      -   3.999122002794961070680636194346316041352e+0010L,
 592      -   1.122298454643493485989721564358100345388e+0010L,
 593      -   5.603981987645989709668830968522362582221e+0008L,
      653 +        3.749999999999412724084579833297451472091e-0001L,
      654 +        9.058478580291706212422978492938435582527e+0001L,
      655 +        8.524056033161038750461083666711724381171e+0003L,
      656 +        4.105967158629109427753434569223631014730e+0005L,
      657 +        1.118326603378531348259783091972623333657e+0007L,
      658 +        1.794636683403578918528064904714132329343e+0008L,
      659 +        1.714314157463635959556133236004368896724e+0009L,
      660 +        9.622092032236084846572067257267661456030e+0009L,
      661 +        3.057759524485859159957762858780768355020e+0010L,
      662 +        5.129306780754798531609621454415938890020e+0010L,
      663 +        3.999122002794961070680636194346316041352e+0010L,
      664 +        1.122298454643493485989721564358100345388e+0010L,
      665 +        5.603981987645989709668830968522362582221e+0008L,
 594  666  };
      667 +
 595  668  static GENERIC qs3[13] = {
 596      -   1.0e0L,
 597      -   2.418328663076578169836155170053634419922e+0002L,
 598      -   2.279620205900121042587523541281272875520e+0004L,
 599      -   1.100984222585729521470129014992217092794e+0006L,
 600      -   3.010743223679247091004262516286654516282e+0007L,
 601      -   4.860925542827367817289619265215599433996e+0008L,
 602      -   4.686668111035348691982715864307839581243e+0009L,
 603      -   2.668701788405102017427214705946730894074e+0010L,
 604      -   8.677395746106802640390580944836650584903e+0010L,
 605      -   1.511936455574951790658498795945106643036e+0011L,
 606      -   1.260845604432623478002018696873608353093e+0011L,
 607      -   4.052692278419853853911440231600864589805e+0010L,
 608      -   2.965516519212226064983267822243329694729e+0009L,
      669 +        1.0e0L,
      670 +        2.418328663076578169836155170053634419922e+0002L,
      671 +        2.279620205900121042587523541281272875520e+0004L,
      672 +        1.100984222585729521470129014992217092794e+0006L,
      673 +        3.010743223679247091004262516286654516282e+0007L,
      674 +        4.860925542827367817289619265215599433996e+0008L,
      675 +        4.686668111035348691982715864307839581243e+0009L,
      676 +        2.668701788405102017427214705946730894074e+0010L,
      677 +        8.677395746106802640390580944836650584903e+0010L,
      678 +        1.511936455574951790658498795945106643036e+0011L,
      679 +        1.260845604432623478002018696873608353093e+0011L,
      680 +        4.052692278419853853911440231600864589805e+0010L,
      681 +        2.965516519212226064983267822243329694729e+0009L,
 609  682  };
      683 +
 610  684  static GENERIC qr4[13] = {
 611      -   3.749999999919234164154669754440123072618e-0001L,
 612      -   5.844218580776819864791168253485055101858e+0001L,
 613      -   3.489273514092912982675669411371435670220e+0003L,
 614      -   1.050523637774575684509663430018995479594e+0005L,
 615      -   1.764549172059701565500717319792780115289e+0006L,
 616      -   1.725532438844133795028063102681497371154e+0007L,
 617      -   9.938114847359778539965140247590176334874e+0007L,
 618      -   3.331710808184595545396883770200772842314e+0008L,
 619      -   6.271970557641881511609560444872797282698e+0008L,
 620      -   6.188529798677357075020774923903737913285e+0008L,
 621      -   2.821905302742849974509982167877885011629e+0008L,
 622      -   4.615467358646911976773290256984329814896e+0007L,
 623      -   1.348140608731546467396685802693380693275e+0006L,
      685 +        3.749999999919234164154669754440123072618e-0001L,
      686 +        5.844218580776819864791168253485055101858e+0001L,
      687 +        3.489273514092912982675669411371435670220e+0003L,
      688 +        1.050523637774575684509663430018995479594e+0005L,
      689 +        1.764549172059701565500717319792780115289e+0006L,
      690 +        1.725532438844133795028063102681497371154e+0007L,
      691 +        9.938114847359778539965140247590176334874e+0007L,
      692 +        3.331710808184595545396883770200772842314e+0008L,
      693 +        6.271970557641881511609560444872797282698e+0008L,
      694 +        6.188529798677357075020774923903737913285e+0008L,
      695 +        2.821905302742849974509982167877885011629e+0008L,
      696 +        4.615467358646911976773290256984329814896e+0007L,
      697 +        1.348140608731546467396685802693380693275e+0006L,
 624  698  };
      699 +
 625  700  static GENERIC qs4[13] = {
 626      -   1.0e0L,
 627      -   1.561192663112345185261418296389902133372e+0002L,
 628      -   9.346678031144098270547225423124213083072e+0003L,
 629      -   2.825851246482293547838023847601704751590e+0005L,
 630      -   4.776572711622156091710902891124911556293e+0006L,
 631      -   4.715106953717135402977938048006267859302e+0007L,
 632      -   2.753962350894311316439652227611209035193e+0008L,
 633      -   9.428501434615463207768964787500411575223e+0008L,
 634      -   1.832650858775206787088236896454141572617e+0009L,
 635      -   1.901697378939743226948920874296595242257e+0009L,
 636      -   9.433322226854293780627188599226380812725e+0008L,
 637      -   1.808520540608671608680284520798858587370e+0008L,
 638      -   7.983342331736662753157217446919462398008e+0006L,
      701 +        1.0e0L,
      702 +        1.561192663112345185261418296389902133372e+0002L,
      703 +        9.346678031144098270547225423124213083072e+0003L,
      704 +        2.825851246482293547838023847601704751590e+0005L,
      705 +        4.776572711622156091710902891124911556293e+0006L,
      706 +        4.715106953717135402977938048006267859302e+0007L,
      707 +        2.753962350894311316439652227611209035193e+0008L,
      708 +        9.428501434615463207768964787500411575223e+0008L,
      709 +        1.832650858775206787088236896454141572617e+0009L,
      710 +        1.901697378939743226948920874296595242257e+0009L,
      711 +        9.433322226854293780627188599226380812725e+0008L,
      712 +        1.808520540608671608680284520798858587370e+0008L,
      713 +        7.983342331736662753157217446919462398008e+0006L,
 639  714  };
      715 +
 640  716  static GENERIC qr5[13] = {
 641      -      3.749999995331364437028988850515190446719e-0001L,
 642      -      3.739356381766559882677514593041627547911e+0001L,
 643      -      1.399562500629413529355265462912819802551e+0003L,
 644      -      2.594154053098947925345332218062210111753e+0004L,
 645      -      2.640149879297408640394163979394594318371e+0005L,
 646      -      1.542471854873199142031889093591449397995e+0006L,
 647      -      5.242272868972053374067572098992335425895e+0006L,
 648      -      1.025834487769410221329633071426044839935e+0007L,
 649      -      1.116553924239448940142230579060124209622e+0007L,
 650      -      6.318076065595910176374916303525884653514e+0006L,
 651      -      1.641218086168640408527639735915512881785e+0006L,
 652      -      1.522369793529178644168813882912134706444e+0005L,
 653      -      2.526530541062297200914180060208669584055e+0003L,
      717 +        3.749999995331364437028988850515190446719e-0001L,
      718 +        3.739356381766559882677514593041627547911e+0001L,
      719 +        1.399562500629413529355265462912819802551e+0003L,
      720 +        2.594154053098947925345332218062210111753e+0004L,
      721 +        2.640149879297408640394163979394594318371e+0005L,
      722 +        1.542471854873199142031889093591449397995e+0006L,
      723 +        5.242272868972053374067572098992335425895e+0006L,
      724 +        1.025834487769410221329633071426044839935e+0007L,
      725 +        1.116553924239448940142230579060124209622e+0007L,
      726 +        6.318076065595910176374916303525884653514e+0006L,
      727 +        1.641218086168640408527639735915512881785e+0006L,
      728 +        1.522369793529178644168813882912134706444e+0005L,
      729 +        2.526530541062297200914180060208669584055e+0003L,
 654  730  };
      731 +
 655  732  static GENERIC qs5[13] = {
 656      -      1.0e0L,
 657      -      9.998960735935075380397545659016287506660e+0001L,
 658      -      3.758767417842043742686475060540416737562e+0003L,
 659      -      7.013652806952306520121959742519780781653e+0004L,
 660      -      7.208949808818615099246529616211730446850e+0005L,
 661      -      4.272753927109614455417836186072202009252e+0006L,
 662      -      1.482524411356470699336129814111025434703e+0007L,
 663      -      2.988750366665678233425279237627700803473e+0007L,
 664      -      3.396957890261080492694709150553619185065e+0007L,
 665      -      2.050652487738593004111578091156304540386e+0007L,
 666      -      5.900504120811732547616511555946279451316e+0006L,
 667      -      6.563391409260160897024498082273183468347e+0005L,
 668      -      1.692629845012790205348966731477187041419e+0004L,
      733 +        1.0e0L,
      734 +        9.998960735935075380397545659016287506660e+0001L,
      735 +        3.758767417842043742686475060540416737562e+0003L,
      736 +        7.013652806952306520121959742519780781653e+0004L,
      737 +        7.208949808818615099246529616211730446850e+0005L,
      738 +        4.272753927109614455417836186072202009252e+0006L,
      739 +        1.482524411356470699336129814111025434703e+0007L,
      740 +        2.988750366665678233425279237627700803473e+0007L,
      741 +        3.396957890261080492694709150553619185065e+0007L,
      742 +        2.050652487738593004111578091156304540386e+0007L,
      743 +        5.900504120811732547616511555946279451316e+0006L,
      744 +        6.563391409260160897024498082273183468347e+0005L,
      745 +        1.692629845012790205348966731477187041419e+0004L,
 669  746  };
      747 +
 670  748  static GENERIC qr6[13] = {
 671      -    3.749999861516664133157566870858975421296e-0001L,
 672      -    2.367863756747764863120797431599473468918e+0001L,
 673      -    5.476715802114976248882067325630793143777e+0002L,
 674      -    6.143190357869842894025012945444096170251e+0003L,
 675      -    3.716250534677997850513733595140463851730e+0004L,
 676      -    1.270883463823876752138326905022875657430e+0005L,
 677      -    2.495301449636814481646371665429083801388e+0005L,
 678      -    2.789578988212952248340486296254398601942e+0005L,
 679      -    1.718247946911109055931819087137397324634e+0005L,
 680      -    5.458973214011665714330326732204106364229e+0004L,
 681      -    7.912102686687948786048943339759596652813e+0003L,
 682      -    4.077961006160866935722030715149087938091e+0002L,
 683      -    3.765206972770245085551057237882528510428e+0000L,
      749 +        3.749999861516664133157566870858975421296e-0001L,
      750 +        2.367863756747764863120797431599473468918e+0001L,
      751 +        5.476715802114976248882067325630793143777e+0002L,
      752 +        6.143190357869842894025012945444096170251e+0003L,
      753 +        3.716250534677997850513733595140463851730e+0004L,
      754 +        1.270883463823876752138326905022875657430e+0005L,
      755 +        2.495301449636814481646371665429083801388e+0005L,
      756 +        2.789578988212952248340486296254398601942e+0005L,
      757 +        1.718247946911109055931819087137397324634e+0005L,
      758 +        5.458973214011665714330326732204106364229e+0004L,
      759 +        7.912102686687948786048943339759596652813e+0003L,
      760 +        4.077961006160866935722030715149087938091e+0002L,
      761 +        3.765206972770245085551057237882528510428e+0000L,
 684  762  };
      763 +
 685  764  static GENERIC qs6[13] = {
 686      -    1.0e0L,
 687      -    6.341646532940517305641893852673926809601e+0001L,
 688      -    1.477058277414040790932597537920671025359e+0003L,
 689      -    1.674406564031044491436044253393536487604e+0004L,
 690      -    1.028516501369755949895050806908994650768e+0005L,
 691      -    3.593620042532885295087463507733285434207e+0005L,
 692      -    7.267924991381020915185873399453724799625e+0005L,
 693      -    8.462277510768818399961191426205006083088e+0005L,
 694      -    5.514399892230892163373611895645500250514e+0005L,
 695      -    1.898084241009259353540620272932188102299e+0005L,
 696      -    3.102941242117739015721984123081026253068e+0004L,
 697      -    1.958971184431466907681440650181421086143e+0003L,
 698      -    2.878853357310495087181721613889455121867e+0001L,
      765 +        1.0e0L,
      766 +        6.341646532940517305641893852673926809601e+0001L,
      767 +        1.477058277414040790932597537920671025359e+0003L,
      768 +        1.674406564031044491436044253393536487604e+0004L,
      769 +        1.028516501369755949895050806908994650768e+0005L,
      770 +        3.593620042532885295087463507733285434207e+0005L,
      771 +        7.267924991381020915185873399453724799625e+0005L,
      772 +        8.462277510768818399961191426205006083088e+0005L,
      773 +        5.514399892230892163373611895645500250514e+0005L,
      774 +        1.898084241009259353540620272932188102299e+0005L,
      775 +        3.102941242117739015721984123081026253068e+0004L,
      776 +        1.958971184431466907681440650181421086143e+0003L,
      777 +        2.878853357310495087181721613889455121867e+0001L,
 699  778  };
 700      -static GENERIC qone(x)
 701      -GENERIC x;
      779 +
      780 +static GENERIC
      781 +qone(x)
      782 +    GENERIC x;
 702  783  {
 703  784          GENERIC s, r, t, z;
 704  785          int i;
      786 +
 705  787          if (x > huge)
 706      -                return (0.375L/x);
 707      -        t = one/x; z = t*t;
      788 +                return (0.375L / x);
      789 +
      790 +        t = one / x;
      791 +        z = t * t;
      792 +
 708  793          if (x > sixteen) {
 709      -            r = z*qr0[11]+qr0[10]; s = qs0[10];
 710      -            for (i = 9; i >= 0; i--) {
 711      -                r = z*r + qr0[i];
 712      -                s = z*s + qs0[i];
 713      -            }
      794 +                r = z * qr0[11] + qr0[10];
      795 +                s = qs0[10];
      796 +
      797 +                for (i = 9; i >= 0; i--) {
      798 +                        r = z * r + qr0[i];
      799 +                        s = z * s + qs0[i];
      800 +                }
 714  801          } else if (x > eight) {
 715      -            r = qr1[11]; s = qs1[11]+z*(qs1[12]+z*qs1[13]);
 716      -            for (i = 10; i >= 0; i--) {
 717      -                r = z*r + qr1[i];
 718      -                s = z*s + qs1[i];
 719      -            }
 720      -        } else if (x > five) {  /* x > 5.0 */
 721      -            r = qr2[11]; s = qs2[11]+z*(qs2[12]+z*qs2[13]);
 722      -            for (i = 10; i >= 0; i--) {
 723      -                r = z*r + qr2[i];
 724      -                s = z*s + qs2[i];
 725      -            }
 726      -        } else if (x > 3.5L) {
 727      -            r = qr3[12]; s = qs3[12];
 728      -            for (i = 11; i >= 0; i--) {
 729      -                r = z*r + qr3[i];
 730      -                s = z*s + qs3[i];
 731      -            }
 732      -        } else if (x > 2.5L) {
 733      -            r = qr4[12]; s = qs4[12];
 734      -            for (i = 11; i >= 0; i--) {
 735      -                r = z*r + qr4[i];
 736      -                s = z*s + qs4[i];
 737      -            }
 738      -        } else if (x > (1.0L/0.5625L)) {
 739      -            r = qr5[12]; s = qs5[12];
 740      -            for (i = 11; i >= 0; i--) {
 741      -                r = z*r + qr5[i];
 742      -                s = z*s + qs5[i];
 743      -            }
 744      -        } else {                /* assume x > 1.28 */
 745      -            r = qr6[12]; s = qs6[12];
 746      -            for (i = 11; i >= 0; i--) {
 747      -                r = z*r + qr6[i];
 748      -                s = z*s + qs6[i];
 749      -            }
 750      -        }
 751      -        return (t*(r/s));
      802 +                r = qr1[11];
      803 +                s = qs1[11] + z * (qs1[12] + z * qs1[13]);
      804 +
      805 +                for (i = 10; i >= 0; i--) {
      806 +                        r = z * r + qr1[i];
      807 +                        s = z * s + qs1[i];
      808 +                }
      809 +        } else if (x > five) {          /* x > 5.0 */
      810 +                r = qr2[11];
      811 +                s = qs2[11] + z * (qs2[12] + z * qs2[13]);
      812 +
      813 +                for (i = 10; i >= 0; i--) {
      814 +                        r = z * r + qr2[i];
      815 +                        s = z * s + qs2[i];
      816 +                }
      817 +        } else if (x > 3.5L) {
      818 +                r = qr3[12];
      819 +                s = qs3[12];
      820 +
      821 +                for (i = 11; i >= 0; i--) {
      822 +                        r = z * r + qr3[i];
      823 +                        s = z * s + qs3[i];
      824 +                }
      825 +        } else if (x > 2.5L) {
      826 +                r = qr4[12];
      827 +                s = qs4[12];
      828 +
      829 +                for (i = 11; i >= 0; i--) {
      830 +                        r = z * r + qr4[i];
      831 +                        s = z * s + qs4[i];
      832 +                }
      833 +        } else if (x > (1.0L / 0.5625L)) {
      834 +                r = qr5[12];
      835 +                s = qs5[12];
      836 +
      837 +                for (i = 11; i >= 0; i--) {
      838 +                        r = z * r + qr5[i];
      839 +                        s = z * s + qs5[i];
      840 +                }
      841 +        } else {                        /* assume x > 1.28 */
      842 +                r = qr6[12];
      843 +                s = qs6[12];
      844 +
      845 +                for (i = 11; i >= 0; i--) {
      846 +                        r = z * r + qr6[i];
      847 +                        s = z * s + qs6[i];
      848 +                }
      849 +        }
      850 +
      851 +        return (t * (r / s));
 752  852  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX