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