2008-03-28 14:56:47 -06:00
|
|
|
// 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.
|
|
|
|
|
2008-06-27 18:06:23 -06:00
|
|
|
package math
|
2008-03-28 14:56:47 -06:00
|
|
|
|
2008-07-12 16:56:06 -06:00
|
|
|
import math "math"
|
2008-03-28 14:56:47 -06:00
|
|
|
export tanh
|
|
|
|
|
|
|
|
/*
|
2008-07-08 21:48:41 -06:00
|
|
|
* 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.
|
2008-03-28 14:56:47 -06:00
|
|
|
*/
|
|
|
|
|
|
|
|
func
|
2008-07-08 21:48:41 -06:00
|
|
|
tanh(arg float64) float64
|
2008-03-28 14:56:47 -06:00
|
|
|
{
|
|
|
|
if arg < 0 {
|
|
|
|
arg = -arg;
|
|
|
|
if arg > 21 {
|
|
|
|
return -1;
|
|
|
|
}
|
2008-06-27 18:06:23 -06:00
|
|
|
return -sinh(arg)/cosh(arg);
|
2008-03-28 14:56:47 -06:00
|
|
|
}
|
|
|
|
if arg > 21 {
|
|
|
|
return 1;
|
|
|
|
}
|
2008-06-27 18:06:23 -06:00
|
|
|
return sinh(arg)/cosh(arg);
|
2008-03-28 14:56:47 -06:00
|
|
|
}
|