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