      double precision function dacosh (x)
c june 1977 edition.   w. fullerton, c3, los alamos scientific lab.
      double precision x, dln2, xmax,  d1mach, dlog, dsqrt
      external d1mach, dlog, dsqrt
      data dln2 / 0.6931471805 5994530941 7232121458 18 d0 /
      data xmax / 0.d0 /
c
      if (xmax.eq.0.d0) xmax = 1.0d0/dsqrt(d1mach(3))
c
      if (x.lt.1.d0) call seteru (21hdacosh  x less than 1, 21, 1, 2)
c
      if (x.lt.xmax) dacosh = dlog (x+dsqrt(x*x-1.0d0))
      if (x.ge.xmax) dacosh = dln2 + dlog(x)
c
      return
      end