"Оптимизация для PENTIUM процессора" - читать интересную книгу автора

Тест на "больше":

FLD [a]
FCOMP [b]
FNSTSW AX
AND AH,41H
JZ AGreaterThanB

Не используйте TEST AH,41H - эта инструкция не спариться. Не используйте
TEST AX, 4100H - он вызывает потери на PentiumPro. Не тестируйте флаги после
многократных сдвигов, т.к. это приводит к потерям на PentiumPro.

Обычно быстрее использовать целочисленные операции для сравнения чисел с
плавающей точкой, как указано в разделе 18, ниже.

17.12 FISTP
-----------
Конвертирование чисел с плавающей точкой обычно делается так:
FISTP DWORD PTR [TEMP]
MOV EAX, [TEMP]

А вот - альтернативный метод:

.DATA
ALIGN 8
TEMP DQ ?
MAGIC DD 59C00000H ; п.т. представление 2^51 + 2^52

.CODE
FADD [MAGIC]
FSTP QWORD PTR [TEMP]
MOV EAX, DWORD PTR [TEMP]

Добавляя "волшебное число" 2^51 + 2^52 мы получим эффект, при котором целое
число, лежащее в пределах -2^31 до +2^31 будет выравненно в младших 32 битах,
храня при этом двойную точность в виде с плавающей точкой. Результат
аналогичен FISTP, при всех методах округления, кроме округления к нулю.
Результат отличается от FISTP, если управляющее слово определяет округление в
случае переполнения. Вам может потребоваться инструкция WAIT для
совместимости с другими процессорами. См. раздел 17.10.

Этот метод не быстрее FISTP, но он дает больше возможности для планирования,
т.к. есть 3 такта между FADD и FSTP, которые можно занять другими инструкциями.
Вы можете многократно умножить или разделить число, кратное 2, используя
"волшебное число". Вы можете, также, добавить константу, добавляя ее к
"волшебному числу", результат получиться с двойной точностью.

17.13 FPTAN
-----------
Согласно описанию FPTAN возвращает два значения X и Y, оставляя програмисту