FYL2X Compute Y * log2(x) Exceptions: P (operands not checked) FYL2X C3 C2 C1 C0: ? ? * ?
Logic ST(1) ← ST(1) * Log2(ST) pop ST
FYL2X computes the base-2 logarithm of ST, multiplies the logarithm by ST(1), and puts the result in ST(1). Then it pops the stack. The operand in ST cannot be negative.
Note If the operand in ST is negative, the invalid-operation exception is raised. The 80486+ checks for interrupts while executing this instruction. It will abort FYL2X to service interrupts.
If the operand is very close to 1, use FYL2XP1 instead of FYL2XP.
Example Many math applications require natural logarithms (log base e) or common logarithms (log base 10). These are easy to calculate by using the following equation to change the base of a logarithm to a new base n: log(n)X = log(n)2 * log(2)X
In this case, n is e or 10. The following programs assume that X is on the top of the stack; they replace X with its natural logarithm. The program that produces natural logs is:
fldln2 ; push log base e of 2 fxch ; swap ST and ST(1) fyl2x ; pop ST, replace it with natual log
The program that produces common logs is:
fldlg2 ; push log base e of 10 fxch ; swap ST and ST(1) fyl2x ; pop ST, replace it with common log