FPTAN
Partial Tangent
stableVMJITAOTinstruction
Encodings
| Opcode | Instruction | Op/En | 64-bit | Compat/Legacy | Description |
|---|---|---|---|---|---|
D9 F2 | FPTAN | Valid | Valid | Replace ST(0) with its approximate tangent and push 1 onto the FPU stack. |
Measured cost
Loading measurements from arch-data...
Description
Computes the approximate tangent of the source operand in register ST(0), stores the result in ST(0), and pushes a 1.0 onto the FPU register stack. The source operand must be given in radians and must be less than +/-263. The
following table shows the unmasked results obtained when computing the partial tangent of various classes of
numbers, assuming that underflow does not occur.
FPTAN Results
| ST(0) SRC | ST(0) DEST |
|---|---|
| - | * |
| -F | - F to + F |
| -0 | -0 |
| +0 | +0 |
| +F | - F to + F |
| + | * |
| NaN | NaN |
Operation
IF ST(0) < 263
THEN
C2 := 0;
ST(0) := fptan(ST(0)); // approximation of tan
TOP := TOP - 1;
ST(0) := 1.0;
ELSE (* Source operand is out-of-range *)
C2 := 1;
FI;
FPU Flags Affected
C1 Set to 0 if stack underflow occurred; set to 1 if stack overflow occurred.
Set if result was rounded up; cleared otherwise.
C2 Set to 1 if outside range (-263 < source operand < +263); otherwise, set to 0.
C0, C3 Undefined.Floating-Point Exceptions
#IS Stack underflow or overflow occurred.#IA Source operand is an SNaN value, , or unsupported format.#D Source operand is a denormal value.#U Result is too small for destination format.#P Value cannot be represented exactly in destination format.Exceptions
Protected mode
#NM | CR0.EM[bit 2] or CR0.TS[bit 3] = 1. |
#MF | If there is a pending x87 FPU exception. |
#UD | If the LOCK prefix is used. |
Real address mode
| Same exceptions as in protected mode. |
Virtual-8086 mode
| Same exceptions as in protected mode. |
Compatibility mode
| Same exceptions as in protected mode. |
64-bit mode
| Same exceptions as in protected mode. |