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