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