redo and clean up math.
R=r
DELTA=243 (60 added, 72 deleted, 111 changed)
OCL=22909
CL=22912
diff --git a/src/lib/math/sinh.go b/src/lib/math/sinh.go
index 622467e..e0201ee 100644
--- a/src/lib/math/sinh.go
+++ b/src/lib/math/sinh.go
@@ -14,25 +14,25 @@
* greater in magnitude than 0.5.
*
* A series is used for arguments smaller in magnitude than 0.5.
- * The coefficients are #2029 from Hart & Cheney. (20.36D)
*
* cosh(arg) is computed from the exponential func for
* all arguments.
*/
-const
-(
- shp0 = -0.6307673640497716991184787251e+6;
- shp1 = -0.8991272022039509355398013511e+5;
- shp2 = -0.2894211355989563807284660366e+4;
- shp3 = -0.2630563213397497062819489e+2;
- shq0 = -0.6307673640497716991212077277e+6;
- shq1 = 0.1521517378790019070696485176e+5;
- shq2 = -0.173678953558233699533450911e+3;
-)
-
export func Sinh(arg float64) float64 {
- sign := false;
+ // The coefficients are #2029 from Hart & Cheney. (20.36D)
+ const
+ (
+ P0 = -0.6307673640497716991184787251e+6;
+ P1 = -0.8991272022039509355398013511e+5;
+ P2 = -0.2894211355989563807284660366e+4;
+ P3 = -0.2630563213397497062819489e+2;
+ Q0 = -0.6307673640497716991212077277e+6;
+ Q1 = 0.1521517378790019070696485176e+5;
+ Q2 = -0.173678953558233699533450911e+3;
+ )
+
+ sign := false;
if arg < 0 {
arg = -arg;
sign = true;
@@ -47,9 +47,9 @@
temp = (Exp(arg) - Exp(-arg))/2;
default:
- argsq := arg*arg;
- temp = (((shp3*argsq+shp2)*argsq+shp1)*argsq+shp0)*arg;
- temp = temp/(((argsq+shq2)*argsq+shq1)*argsq+shq0);
+ sq := arg*arg;
+ temp = (((P3*sq+P2)*sq+P1)*sq+P0)*arg;
+ temp = temp/(((sq+Q2)*sq+Q1)*sq+Q0);
}
if sign {