logo search
несколько программ / bsp33

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

Трансцендентные команды предназначены для вычисления таких функций, как тригонометрические (sin, cos, tg,...), обратные тригонометрические (arcsin, arccos,...), показательные (xy, 2x, 10x, ex), гиперболические (sh, ch, th,...), обратные гиперболические (arsh, arch, arcth,...).

В следующей таблице приведены все трансцендентные команды сопроцессора:

Команда

Описание

FPTAN

Вычисление частичного тангенса

FPATAN

Вычисление частичного арктангенса

FYL2X

Вычисление y*log2(x)

FYL2XP1

Вычисление y*log2(x+1)

F2XM1

Вычисление 2x-1

FCOS

Вычисление cos(x)

FSIN

Вычисление sin(x)

FSINCOS

Вычисление sin(x) и cos(x) одновременно

Команда FPTAN вычисляет частичный тангенс ST(0), размещая в стеке такие два числа x и y, что y/x = tg(ST(0)).

После выполнения команды число y располагается в ST(0), а число x включается в стек сверху (то есть записывается в ST(1)). Аргумент команды FPTAN должен находится в пределах:

0 <= ST(0) <= pi/4

Пользуясь полученным значением частичного тангенса, можно вычислить другие тригонометрические функции по следующим формулам:

sin(z) = 2*(y/x) / (1 + (y/x)2)

cos(z) = (1 - (y/x)2) / (1 + (y/x)2)

tg(z/2) = y/x;

ctg(z/2) = x/y;

cosec(z) = (1 + (y/x)2) / 2*(y/x)

sec(z) = (1 + (y/x)2) / (1 - (y/x)2)

В этой таблице z - значение, находившееся в ST(0) до выполнения команды FPTAN, x и y - значения в регистрах ST(0) и ST(1), соответственно.

Команда FPATAN вычисляет частичный арктангенс:

z=arctg(ST(0)/ST(1))=arctg(x/y).

Перед выполнением команды числа x и y располагаются в ST(0) и ST(1), сответственно. Аргументы команды FPATAN должен находится в пределах:

0 < y < x

Результат записывается в ST(0).

Команда FYL2X вычисляет выражение y*log2(x), операнды x и y размещаются, соответственно, в ST(0) и ST(1). Операнды извлекаются из стека, а результат записывается в стек. параметр x должен быть положительным числом.

Пользуясь результатом выполнения этой команды, можно вычислить следующим образом логарифмические функции:

log2(x) = FYL2(x)

loge(x) = loge(2) * log2(x) = FYL2X(loge(2), x) =

= FYL2X(FLDLN2, x)

log2(x) = log10(2) * log2(x) = FYL2X (log10(2), x) =

= FYL2X(FLDLG2, x)

Функция FYL2XP1 вычисляет выражение y*log2(x+1), где x соответствует ST(0), а y - ST(1). Результат записывается в ST(0), оба операнда выталкиваются из стека и теряются.

На операнд x накладывается ограничение:

0 < x < 1 - 1/sqrt(2)

Команда F2XM1 вычисляет выражение 2x-1, где x - ST(0). Результат записывается в ST(0), параметр должен находится в следующих пределах:

0 <= x <= 0,5

Команда FCOS вычисляет cos(x). Параметр x должен находится в ST(0), туда же записывается результат выполнения команды.

Команда FSIN аналогична команде FCOS, но вычисляет значение косинуса ST(0).

Команда FSINCOS вычисляет одновременно значения синуса и косинуса параметра ST(0). Значение синуса записывается в ST(1), косинуса - в ST(0).

На этом мы закончим описание трансцендентных команд сопроцессора и перейдем к управляющим командам.