diff options
Diffstat (limited to 'src/lib/math/tanh.go')
-rw-r--r-- | src/lib/math/tanh.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/math/tanh.go b/src/lib/math/tanh.go new file mode 100644 index 000000000..8d1748205 --- /dev/null +++ b/src/lib/math/tanh.go @@ -0,0 +1,32 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package tanh + +import sinh "sinh" +export tanh + +/* + tanh(arg) computes the hyperbolic tangent of its floating + point argument. + + sinh and cosh are called except for large arguments, which + would cause overflow improperly. + */ + +func +tanh(arg double) double +{ + if arg < 0 { + arg = -arg; + if arg > 21 { + return -1; + } + return -sinh.sinh(arg)/sinh.cosh(arg); + } + if arg > 21 { + return 1; + } + return sinh.sinh(arg)/sinh.cosh(arg); +} |