home *** CD-ROM | disk | FTP | other *** search
- function y = cosh(xin)
- %COSH Hyperbolic cosine.
- % COSH(X) is the hyperbolic cosine of the elements of X.
-
- % J.M. Hammond, 6-17-92
- % Copyright (c) 1984-93 by the MathWorks, Inc.
-
- % 21 Oct 92 (jmh) -- fixed for matrix inputs
-
- % Complex argument
- if any(any(imag(xin) ~= 0))
- x = real(xin);
- y = imag(xin);
- y = cosh(x).*cos(y) + i*sinh(x).*sin(y);
-
- % Real argument
- else
- % Reference: W. J. Cody and W. Waite, "Software Manual
- % for the Elementary Functions", 1980, chapter 12.
-
- lnv = 0.6931610107421875; % v is close to 2, log(v) is exact
- xbar = 7.083964185322641e+02; % log(1/realmin)
- vf = 0.138302778796019e-04; % v/2-1, where v is as above
-
- x = abs(xin);
- y = zeros(size(x));
-
- % Use regular formula
- k = (x <= xbar) | isnan(x);
- if any(any(k)) % 21 Oct 92 (jmh)
- y(k) = (exp(x(k)) + exp(-x(k)))/2;
- end
-
- % Dodge overflow problem for answers close to realmax
- k = (xbar < x);
- if any(any(k)) % 21 Oct 92 (jmh)
- x(k) = x(k) - lnv;
- y(k) = exp(x(k)) + vf .* exp(x(k));
- end
- end
-