/*
===========================================================================
Hyperbolic tangent Function
tanh(x) = (e^x - e^-x) / (e^x + e^-x)
= (A-B) / (A+B)
= C / D
where:
A = e^x
B = e^-x
C = A-B
D = A+B
ERRORS:
Returns FALSE if argument is non-numeric.
DEPENDENCY: BC_Exp()
===========================================================================
*/
function BC_Tanh ($xArg, $Decimals=16)
{
$Q = 100;
$q = trim($Decimals);
$x = trim($xArg); if (!Is_Numeric($x)) {return FALSE;}
$S = (bcComp($x, '0', $Q) < 0)? '-':'';
$x = Str_Replace('+', '', Str_Replace('-', '', $x));
$q = trim($Decimals); if ($q < 1) {$q = 1;} if ($q > 100) {$q = 100;}
$A = BC_Exp($x, $Q);
$B = bcDiv('1', $A, $Q);
$C = bcSub($A, $B, $Q);
$D = bcAdd($A, $B, $Q);
return $S . bcAdd(bcDiv($C,$D,$Q), '0.' . Str_Repeat('0',$q) . '5', $q);
}