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