Трансцендентные команды

МНЕМОНИКА ОПИСАНИЕ
FPTAN Частичный tg
FPATAN Частичный arctg
FYL2X y*log2(x)
FYL2XP1 y*log2(x)
F2XM1 2x-1

FPTAN дает в качестве результата два таких числа х и у, что у/х=tg (ST(0)). У - заменяет старое содержимое ST(0), а х включается сверху.

Для модели математического сопроцессора 80287 аргумент команды FPTAN должен быть нормализован; денормализованные и ненормализованные числа, бесконечность и нечисла недопустимы в качестве аргументов у всех трансцендентных команд. Кроме того, аргумент должен находиться в диапазоне 0<ST(0)<p/4. Если аргумент недопустим или находится вне диапазона, FPTAN дает неправильный результат, не сигнализируя об особом случае (то же самое верно и для других трансцендентных команд). Программист сам должен заботится о допустимости аргумента и приведении его в диапазон. Допустимость может быть проверена с помощью команды FXAM. Для модели математического сопроцессора 80387 и устройств FPU команда FPTAN в ST(1) возвращает тангенс исходного угла, а в ST(0) возвращается единица. Сделано так из-за совместимости с сопроцессором 80287.

FPATAN - вычисляет ST(0)=arctg (ST(1)/ST(0)). Два верхних элемента извлекаются из стека, результат включается в стек. Упрощает вычисление остальных тригонометрических функций. Для аргументов должно выполняться следующее условие: 0<ST(1)<ST(0)<¥ для модели математического сопроцессора 80287, с модели математического сопроцессора 80387 ограничений на аргумент нет.

FYL2X - вычисляет функцию ST(0) = ST(1)*log2ST(0). Два операнда извлекаются из стека, а затем результат включается в стек. Условие для аргументов ST(0) > 0 должно быть выполнено.

FYL2XP1 - вычисляет функцию ST(0) = ST(1)*log2(ST(0)+1). Должно быть выполнено следующее условие: . Причина появления этой команды - более высокая точность вычисления функции log2(1+x) при малых х. Удобна для вычисления обратных гиперболических функций.

F2XM1 вычисляет ST(0) = 2ST(0)-1, причем ST(0) должно находиться в диапазоне: 0 < ST(0) < 0.5 модели математического сопроцессора 80287. Для модели математического сопроцессора 80387 и устройств FPU условие для аргумента функции -1 < ST(0) < +1. Вычисление 2х-1 вместо 2х позволяет избежать потери точности, при х близких к нулю (при этом 2х близко к 1). Удобна для вычисления гиперболических функций.

Новые трансцендентные команды

Для модели математического сопроцессора 80387 были разработаны новые трансцендентные команды:

FSIN - без операндов. Вычисляет синус действительного числа из вершины стека, результат записывается в вершину стека. Для величины угла нет ограничений.

FSINCOS - без операндов. Одновременно вычисляет синус и косинус угла в вершине стека. Синус - в ST(1), косинус- в ST(0). Ограничений величины угла нет.

FCOS - без операндов. Вычисляет косинус действительного числа из вершины стека. Результат помещается в новую вершину стека. Ограничений величины угла нет.