|
| stanh.sa 3.1 12/10/90
|
| The entry point sTanh computes the hyperbolic tangent of
| an input argument; sTanhd does the same except for denormalized
| input.
|
| Input: Double-extended number X in location pointed to
| by address register a0.
|
| Output: The value tanh(X) returned in floating-point register Fp0.
|
| Accuracy and Monotonicity: The returned result is within 3 ulps in
| 64 significant bit, i.e. within 0.5001 ulp to 53 bits if the
| result is subsequently rounded to double precision. The
| result is provably monotonic in double precision.
|
| Speed: The program stanh takes approximately 270 cycles.
|
| Algorithm:
|
| TANH
| 1. If |X| >= (5/2) log2 or |X| <= 2**(-40), go to 3.
|
| 2. (2**(-40) < |X| < (5/2) log2) Calculate tanh(X) by
| sgn := sign(X), y := 2|X|, z := expm1(Y), and
| tanh(X) = sgn*( z/(2+z) ).
| Exit.
|
| 3. (|X| <= 2**(-40) or |X| >= (5/2) log2). If |X| < 1,
| go to 7.
|
| 4. (|X| >= (5/2) log2) If |X| >= 50 log2, go to 6.
|
| 5. ((5/2) log2 <= |X| < 50 log2) Calculate tanh(X) by
| sgn := sign(X), y := 2|X|, z := exp(Y),
| tanh(X) = sgn - [ sgn*2/(1+z) ].
| Exit.
|
| 6. (|X| >= 50 log2) Tanh(X) = +-1 (round to nearest). Thus, we
| calculate Tanh(X) by
| sgn := sign(X), Tiny := 2**(-126),
| tanh(X) := sgn - sgn*Tiny.
| Exit.
|
| 7. (|X| < 2**(-40)). Tanh(X) = X. Exit.
|
| Copyright (C) Motorola, Inc. 1990
| All Rights Reserved
|
| For details on the license for this file, please see the
| file, README, in this same directory.
|STANH idnt 2,1 | Motorola 040 Floating Point Software Package
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.