      function sinh (x)
c august 1977 edition.  w. fullerton, c3, los alamos scientific lab.
      dimension sinhcs(8)
      external csevl, exp, inits, r1mach, sqrt
c
c series for sinh       on the interval  0.          to  1.00000d+00
c                                        with weighted error   9.47e-17
c                                         log weighted error  16.02
c                               significant figures required  15.11
c                                    decimal places required  16.48
c
      data sinhcs( 1) /    .1730421940 471796e0 /
      data sinhcs( 2) /    .0875942219 2276048e0 /
      data sinhcs( 3) /    .0010794777 7456713e0 /
      data sinhcs( 4) /    .0000063748 4926075e0 /
      data sinhcs( 5) /    .0000000220 2366404e0 /
      data sinhcs( 6) /    .0000000000 4987940e0 /
      data sinhcs( 7) /    .0000000000 0007973e0 /
      data sinhcs( 8) /    .0000000000 0000009e0 /
c
      data nterms, sqeps, ymax / 0, 2*0.0 /
c
      if (nterms.ne.0) go to 10
      nterms = inits (sinhcs, 8, 0.1*r1mach(3))
      sqeps = sqrt (6.0*r1mach(3))
      ymax = 1.0/sqrt(r1mach(3))
c
 10   y = abs(x)
      if (y.gt.1.0) go to 20
c
      sinh = x
      if (y.gt.sqeps) sinh = x*(1.0 + csevl (2.*x*x-1., sinhcs, nterms))
      return
c
 20   y = exp(y)
      if (y.ge.ymax) sinh = sign (0.5*y, x)
      if (y.lt.ymax) sinh = sign (0.5*(y-1.0/y), x)
c
      return
      end