1*9939Ssam /* @(#)sinh.c 4.1 12/25/82 */ 2*9939Ssam 3*9939Ssam /* 4*9939Ssam sinh(arg) returns the hyperbolic sine of its floating- 5*9939Ssam point argument. 6*9939Ssam 7*9939Ssam The exponential function is called for arguments 8*9939Ssam greater in magnitude than 0.5. 9*9939Ssam 10*9939Ssam A series is used for arguments smaller in magnitude than 0.5. 11*9939Ssam The coefficients are #2029 from Hart & Cheney. (20.36D) 12*9939Ssam 13*9939Ssam cosh(arg) is computed from the exponential function for 14*9939Ssam all arguments. 15*9939Ssam */ 16*9939Ssam 17*9939Ssam double exp(); 18*9939Ssam 19*9939Ssam static double p0 = -0.6307673640497716991184787251e+6; 20*9939Ssam static double p1 = -0.8991272022039509355398013511e+5; 21*9939Ssam static double p2 = -0.2894211355989563807284660366e+4; 22*9939Ssam static double p3 = -0.2630563213397497062819489e+2; 23*9939Ssam static double q0 = -0.6307673640497716991212077277e+6; 24*9939Ssam static double q1 = 0.1521517378790019070696485176e+5; 25*9939Ssam static double q2 = -0.173678953558233699533450911e+3; 26*9939Ssam 27*9939Ssam double sinh(arg)28*9939Ssamsinh(arg) 29*9939Ssam double arg; 30*9939Ssam { 31*9939Ssam double temp, argsq; 32*9939Ssam register sign; 33*9939Ssam 34*9939Ssam sign = 1; 35*9939Ssam if(arg < 0) { 36*9939Ssam arg = - arg; 37*9939Ssam sign = -1; 38*9939Ssam } 39*9939Ssam 40*9939Ssam if(arg > 21.) { 41*9939Ssam temp = exp(arg)/2; 42*9939Ssam if (sign>0) 43*9939Ssam return(temp); 44*9939Ssam else 45*9939Ssam return(-temp); 46*9939Ssam } 47*9939Ssam 48*9939Ssam if(arg > 0.5) { 49*9939Ssam return(sign*(exp(arg) - exp(-arg))/2); 50*9939Ssam } 51*9939Ssam 52*9939Ssam argsq = arg*arg; 53*9939Ssam temp = (((p3*argsq+p2)*argsq+p1)*argsq+p0)*arg; 54*9939Ssam temp /= (((argsq+q2)*argsq+q1)*argsq+q0); 55*9939Ssam return(sign*temp); 56*9939Ssam } 57*9939Ssam 58*9939Ssam double cosh(arg)59*9939Ssamcosh(arg) 60*9939Ssam double arg; 61*9939Ssam { 62*9939Ssam if(arg < 0) 63*9939Ssam arg = - arg; 64*9939Ssam if(arg > 21.) { 65*9939Ssam return(exp(arg)/2); 66*9939Ssam } 67*9939Ssam 68*9939Ssam return((exp(arg) + exp(-arg))/2); 69*9939Ssam } 70