Команды этого класса (Таблица 17-6) производят занимающие большое количество времени вычисления для всех обычных тригонометрических, обратных тригонометрических, гиперболических, обратных гиперболических, логарифмических и степенных функций. Трансцендентные команды работают с верхними одним или двумя элементами стека и возвращают результат обратно в стек. Тригонометрические команды предполагают, что их аргументы выражены в радианах. Логарифмические и степенные функции работают по основанию 2. Результаты трансцендентных команд очень точны. Абсолютное значение относительной ошибки вычисления трансцендентной функции гарантированно меньше чем 2**(-62). (Относительная ошибка - это отношение между абсолютной ошибкой и точным значением.)
Таблица 17-5. Константы Сравнения для Условного Ветвления +---------------------------------------------------------------+| Порядок | Константа | Переход |+--------------------+--------------------+---------------------|| | | || ST > Операнд | 4500H | JZ || | | || ST < Операнд | 0100H | JNZ || | | || ST = Операнд | 4000H | JNZ || | | || Неупорядочено | 0400H | JNZ || | | |+---------------------------------------------------------------+
Некоторые тригонометрические функции принимают практически неограниченный диапазон значений, в то время как другие трансцендентные команды требуют, чтобы аргументы были более сжаты в диапазоне. Команды FPREM или FPREM1 можно использовать для того, чтобы преобразовать допустимый операнд периодической функции к требуемому диапазону. Программные продукты, имеющие начальные и конечные приготовления, могут быть использованы для сокращения аргументов до ожидаемого диапазона и, если необходимо, для отладки результата, чтобы он соответствовал начальным аргументам. Описание команд в справочной части Главы 26 дано вместе с разрешенным диапазоном операндов для каждой команды.
Таблица 17-6. Трансцендентные Команды+---------------------------------------------------------------+| Мнемоника | Команды |+-----------+---------------------------------------------------|| | || FSIN* | Синус || | || FCOS* | Косинус || | || FSINCOS* | Синус и Косинус || | || FPTAN** | Тангенс || | || FPATAN | Арктангенс от ST(1) / ST || | || | x || F2XM1** | 2 - 1; X находится в ST || | || FYL3X | Y x log X; Y находится ST, X - в ST || | 2 || | || FYL2XP1 | Y x log (X+1); Y находится ST, X - в ST || | 2 |+---------------------------------------------------------------+ * Недоступно для математического сопроцессора 80287/8087.** Операнды из расширенного диапазона математического сопроцессора 80287/8087
Когда аргумент тригонометрической функции попадает в диапазон допустимых значений, он автоматически сокращается соответствующим делением на 2Пи (при точности в 66 битов), используя для этого точно такой же механизм как и команды FPREM и FPREM1. Значение числа Пи, используемое в автоматическом сокращении, выбирается так, чтобы гарантировать, что не будет потери значимости операнда, представленного в определенном диапазоне. Внутреннее значение числа Пи:
4 * 0.C90FDAA2 2168C234 C H
Программа может использовать явное значение для числа Пи в вычислениях, результат которых будет использоваться как аргумент для дальнейших тригонометрических функций. В таких случаях (например, результат явного сокращения тригонометрического операнда выходит за рамки определенного диапазона) значение, используемое для Пи, должно быть такое же как полное встроенное 66-ти битовое Пи. Это застрахует от того, что результаты будут последовательно сокращаться при обращении к следующей тригонометрической функции. Число Пи в 66 битов не может быть представлено как расширенное вещественное значение, так как оно должно кодироваться как два или более чисел. Обычное решение - представить число Пи как сумму верхнего Пи, которое содержит 33 высшие значащие бита, и нижнего Пи, которое содержит 33 низшие значащие бита. При использовании этого двухчастного Пи, все вычисления следут выполнять над каждой частью отдельно и результаты складывать только в конце.
Трудностей установления последовательных значений Пи для сокрашаемого аргумента можно избежать либо применением тригонометрических функций только к аргументам из диапазона механизма автоматического сокращения, либо выполнением всех сокращений аргумента (до значения меньшего чем Пи/4) непосредственно в программном обеспечении.