Intel 253666-024US User Manual

Page 403

Advertising
background image

Vol. 2A 3-357

INSTRUCTION SET REFERENCE, A-M

FPATAN—Partial Arctangent

There is no restriction on the range of source operands that FPATAN can accept.
This instruction’s operation is the same in non-64-bit modes and 64-bit mode.

IA-32 Architecture Compatibility

The source operands for this instruction are restricted for the 80287 math copro-
cessor to the following range:

0 ≤ |ST(1)| < |ST(0)| < +∞

Operation

ST(1) ← arctan(ST(1) / ST(0));

PopRegisterStack;

FPU Flags Affected

C1

Set to 0 if stack underflow occurred.
Set if result was rounded up; cleared otherwise.

C0, C2, C3

Undefined.

Table 3-35. FPATAN Results

ST(0)

-

−F

−0

+0

+F

+

NaN

-

−3π/ 4

*

−π/2

−π/2

−π/2

−π/2

−π/4

*

NaN

ST(1) −F

-p

−π to −π/ 2

−π/2

−π/2

−π/ 2 to −0 -0

NaN

−0

-p

-p

-p

*

−0

*

−0

−0

NaN

+0

+p

+p

*

+0

*

+0

+0

NaN

+F

+p

+π to +π/ 2

+π/ 2

+π/ 2

+π/ 2 to +0 +0

NaN

+

+3π/ 4

*

+π/ 2

+π/ 2

+π/ 2

+π/ 2

+π/4

*

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NaN

NOTES:

F Means finite floating-point value.
* Table 8-10 in the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1,

specifies that the ratios 0/0 and •/• generate the floating-point invalid arithmetic-operation

exception and, if this exception is masked, the floating-point QNaN indefinite value is returned.

With the FPATAN instruction, the 0/0 or •/• value is actually not calculated using division.

Instead, the arctangent of the two variables is derived from a standard mathematical formula-

tion that is generalized to allow complex numbers as arguments. In this complex variable formu-

lation, arctangent(0,0) etc. has well defined values. These values are needed to develop a library

to compute transcendental functions with complex arguments, based on the FPU functions that

only allow floating-point values as arguments.

Advertising