xref: /csrg-svn/old/libm/libom/tanh.c (revision 9942)
1*9942Ssam /*	@(#)tanh.c	4.1	12/25/82	*/
2*9942Ssam 
3*9942Ssam /*
4*9942Ssam 	tanh(arg) computes the hyperbolic tangent of its floating
5*9942Ssam 	point argument.
6*9942Ssam 
7*9942Ssam 	sinh and cosh are called except for large arguments, which
8*9942Ssam 	would cause overflow improperly.
9*9942Ssam */
10*9942Ssam 
11*9942Ssam double sinh(), cosh();
12*9942Ssam 
13*9942Ssam double
tanh(arg)14*9942Ssam tanh(arg)
15*9942Ssam double arg;
16*9942Ssam {
17*9942Ssam 	double sign;
18*9942Ssam 
19*9942Ssam 	sign = 1.;
20*9942Ssam 	if(arg < 0.){
21*9942Ssam 		arg = -arg;
22*9942Ssam 		sign = -1.;
23*9942Ssam 	}
24*9942Ssam 
25*9942Ssam 	if(arg > 21.)
26*9942Ssam 		return(sign);
27*9942Ssam 
28*9942Ssam 	return(sign*sinh(arg)/cosh(arg));
29*9942Ssam }
30