|
Часть 17
Глава 16. Особые вычислительные ситуации
----------------------------------------------------------------
Кроме представления положительных и отрицательных чисел, форматы
числовых данных можно использовать и для описания некоторых
особых значений. Эти специальные значения дают дополнительную
гибкость, но большинству пользователей нет необходимости
понимать их, чтобы успешно пользоваться вычислительными
возможностями процессора i486. В этом разделе описаны особые
значения, которые могут всплыть в конкретных ситуациях, и
показано назначение каждого из них. Числовые исключения описаны
специально для тех, кто пишет обработчики исключений и кому
интересно исследовать пределы вычислительных возможностей
процессора i486.
Материал, изложенный в этом разделе, будет в основном интересен
программистам, занимающимся созданием обработчиков исключений.
Остальные читатели могут бегло пролистать этот раздел.
При обсуждении особых вычислительных ситуаций полезно различать
арифметические команды и неарифметические команды.
Неарифметические команды это те, которые не имеют операндов или
передают операнды без особых изменений. Арифметические
команды это те, которые производят значимые изменения своих
операндов. В Таблице 16-1 приведены определения этих двух
классов команд.
16.1 Особые числовые значения
----------------------------------------------------------------
Форматы числовых данных процессора i486 позволяют кодировать
множество особых значений в добавок к обыкновенным целочисленным
и вещественным данным, которые являются результатами нормальных
вычислений. Эти особые значения имеют некоторую значимость и
могут нести какую-либо информацию о вычислениях или операндах,
которые производят это значение. Ниже приведен список типов
особых значений:
- Денормальные вещественные числа
- Нули
- Положительная и отрицательная бесконечность
- NaN (не-число)
- Неопределенность
- Неподдерживаемые форматы
В следующем разделе объясняется происхождение и значимость
каждого из этих особых значений. На иллюстрациях от Таблицы 16-6
до Таблицы 16-9 в конце этого раздела показано, как каждое из
этих особых значений кодируется для каждого типа числовых
данных.
16.1.1 Денормальные вещественные числа
----------------------------------------------------------------
Обычно процессор i486 хранит ненулевые вещественные числа в
нормализованной форме с плавающей точкой. То есть, бит
(начальный) целой части мантиссы всегда есть единица. (Смотрите
Главу 15 о форматах операнда.) Этот бит явно хранится в
расширенном формате и неявно предполагается единицей (1) в
простом и двойном форматах. Так как начальные нули подавляются,
то нормализованный вид позволяет хранить максимальное число
значащих цифр в мантиссе данной ширины.
Таблица 16-1. Арифметические и Неарифметические Команды
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Неарифметические Команды і Арифметические Команды і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і і
і FABS і F2XM1 і
і FCHS і FADD (P) і
і FCLEX і FBLD і
і FDECSTP і FBSTP і
і FFREE і FCOMP(P)(P) і
і FINCSTP і FCOS і
і FINIT і FDIV(R)(P) і
і FLD (регистр-в-регистр) і FIADD і
і FLD (расширенный формат і FICOM(P) і
і из памяти) і FIDIV(R) і
і FLD константа і FILD і
і FLDCW і FIMUL і
і FLDENV і FIST(P) і
і FNOP і FISUB(R) і
і FRSTOR і FLD (перевод форматов) і
і FSAVE і FMUL(P) і
і FST(P) (регистр-в-регистр) і FPATAN і
і FSTP (расширенный формат і FPREM і
і в память) і FPREM1 і
і FSTCW і FPTAN і
і FSTENV і FRNDINT і
і FSTSW і FSCALE і
і FWAIT і FSIN і
і FXAM і FSINCOS і
і FXCH і FSQRT і
і і FST(P) (перевод форматов) і
і і FSUB(R)(P) і
і і FTST і
і і FUCOM(P)(P) і
і і FXTRACT і
і і FYL2X і
і і FYL2XP1 і
і і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Когда величина числа становится близкой к нулю, то уже нельзя
использовать нормализованный вид с плавающей точкой для того,
чтобы выразить это значение точно. Термин "маленькое" будет
использоваться в дальнейшем для того, чтобы точно определить
значения, требующие особой обработки. Говорят, что число R
является маленьким, если -2**(Emin) < R < 0 или 0 < R <
+2**(Emin). (Как определено в Главе 15, Emin равно -126 для
простого формата, -1022 для двойного формата и -16382 для
расширенного формата.) Другими словами, ненулевое значение
является маленьким, если его порядок имеет слишком большую
отрицательную величину для того, чтобы быть сохраненным в
принимающем формате.
Для того, чтобы выходить из таких ситуаций, процессор i486 может
хранить и оперировать денормализованными вещественными числами,
то есть числами, мантиссы которых содержат один или более
начальных нулей. Денормальные числа как правило возникают, когда
в результате вычислений получается значение, являющееся
маленьким.
Денормальные значения имеют следующие свойства:
- Несмещенный порядок с плавающей точкой хранится в его
наименьшем значении (ноль)
- Целый бит мантиссы (явный или неявный) является нулем
Начальные нули денормального значения позволяют представлять
меньшие числа с некоторой приемлемой потерей точности (число
значащих разрядов сокращается из-за начальных нулей). В
стандартных алгоритмах такие маленькие значения в большинстве
случаев генерируются как промежуточные, а не конечные
результаты. Использование расширенного вещественного формата для
хранения промежуточных значений гарантирует, что можно
представить такие маленькие числа как ё3.37 x 10**(-4932). Это
делает случай с денормальными числами особым феноменом в
вычислительных приложениях процессора i486. При этом процессор
i486 может также загружать, хранить денормализованные
вещественные числа и оперировать ими при появлении таких чисел.
Процессор i486 предпринимает некоторые действия, связанные с
денормальными числами:
- Процессор i486 избегает создания денормальных чисел всегда,
когда это возможно. Другими словами, он всегда нормализует
вещественное число, за исключением ситуации с маленькими
числами.
- Процессор i486 выдает немаскируемую исключение отрицательного
переполнения для того, чтобы позволить программисту обнаружить
случаи создания денормальных чисел.
- Процессор i486 выдает исключение денормального числа для того,
чтобы позволить пррограммисту обнаружить случаи, когда
денормальные числа переходят в дальнейшие вычисления.
Денормализация означает увеличение порядка истинного результата
и добавление соответствующих начальных нулей в мантиссу, сдвигая
остаток мантиссы на одну позицию вправо. Денормальные значения
могут всплывать в любом из форматов - простом, двойном или
расширенном. В Таблице 16-2 показан диапазон денормализованных
значений для каждого формата.
Денормализация производит либо денормальное значение, либо ноль.
Денормальные числа легко определяются своими показателями,
которые всегда минимальны для своих форматов. В форме со
смещенным показателем это всегда битовая строка: 00...00. Такое
же значение порядка приписывается нулям, но денормальные числа
имеют ненулевую мантиссу. Денормальное число в регистре
помечается как особое. В Таблицах 16-8 и 16-9 этой главы
показано, как денормальные числа кодируются в каждом из
вещественных форматов данных.
Таблица 16-2. Денормализованные Значения
ЪДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і Наименьш.Величина і Наибольшая Величина і
і Формат ГДДДДДДДДДВДДДДДДДДДДЕДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
і і(Точная) і(Приблиз.)і (Точная) і (Приблиз.) і
ГДДДДДДДДДДЕДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
і Простая і -150 і -46 і -126 -150 і -38 і
і точность і 2 і 10 і 2 - 2 і 10 і
і Двойная і -1075 і -324 і -1022 -1075 і -308 і
і точность і 2 і 10 і 2 - 2 і 10 і
і Расши- і -16461 і -4956 і -16382 -16462 і -4932 і
і ренный і 2 і 10 і 2 - 2 і 10 і
АДДДДДДДДДДБДДДДДДДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ
Процесс денормализации является причиной потери значимости, если
низшие по порядку биты сдвигаются в мантиссе направо. В худшем
случае все биты мантиссы истинного результата сдвигаются и
заменяются начальными нулями. В этом случае результатом
денормализации является истинный ноль и, если значение находится
в регистре, то оно помечается как ноль.
Денормальные значения часто встречаются в большинстве
приложений. Типичные отладочные алгоритмы генерируют
экстремально малые результаты в процессе оценки промежуточных
подвыражений. Конечный результат, как правило, является
приемлемой величиной для простого или двойного формата на
выходе. Если промежуточные результаты содержатся во временном
вещественном виде, как рекомендовано, то диапазон этого формата
не очень часто дает отрицательное переполнение. Денормальные
числа часто всплывают только тогда, когда программа генерирует
слишком много промежуточных результатов, так много, что они не
могут храниться в регистровом стеке или в переменных памяти
расширенного формата. Если ограничения хранения заставляют
использовать простой или двойной формат для промежуточных
вещественных чисел и при этом производится маленькое значение,
то может произойти отрицательное переполнение. При этом, если
оно маскированное, то может быть выдано денормальное число.
Когда денормальное число простого или двойного формата
используется как исходный операнд и маскируется исключительная
ситуация с денормальными числами, то устройство обработки
операций с плавающей точкой процессора i486 автоматически
нормализует число при его переводе в расширенный формат.
16.1.1.1 Денормальные числа и последовательное отрицательное
переполнение
----------------------------------------------------------------
Арифметика с плавающей точкой не может выполнять все операции
точно для всех операндов. Когда результат не представим как
переменная с плавающей точкой, неизбежна аппроксимация. Для
того, чтобы оставить аппроксимацию математически управляемой,
аппаратная часть подчиняется стандартам точности, которые могут
моделироваться конкретными неравенствами вместо уравнений.
Давайте предположим, что
X <- Y @ Z (где @ - некоторая операция)
представляет типичную операцию. При изначальном режиме
округления (округление до ближайшего), каждая операция
выполняется с абсолютной ошибкой не более чем половина разности
между двумя числами с плавающей точкой ближайшими к точным
результатам. Пусть x является значением, хранимым в переменной с
именем X в программе, y - переменной Y и z - переменной Z.
Обычно y и z будут отличаться суммарной ошибкой от желаемого
результата и от того, что было бы получено при отсутствии
ошибок. Для вычисления x мы предполагаем, что y и z яляются
наилучшей аппроксимацией и что мы будем вычислять x настолько,
насколько это возможно. Если выражение y@z представимо точно, то
мы ожидаем, что x=y@z, и это то, что мы получили для каждой
алгебраической операции на устройстве обработки операций с
плавающей точкой процессора i486 (то есть, когда выражение y@z
является одним из y+z, y-z, y*z, y/z, sqrt z). Но если выражение
y@z должно быть аппроксимировано, как обычно, то x должен
отличаться от y@z не более чем на половину разности между двумя
представимыми числами, которые покрывают выражение y@z. Эта
разность зависит от двух факторов:
1. Как определена точность, с которой проводятся вычисления,
либо битами управления точностью, либо форматом,
используемым в памяти. На процессоре i486 точность бывает
простая (24 значащие бита), двойная (53 значащих бита) и
расширенная (64 значащих бита).
2. Как близко значение выражения y@z к нулю. В этом отношении
существование денормальных чисел на процессоре i486
предоставляет определенное преимущество над системами,
которые не допускают денормальные числа.
В любых системах чисел с плавающей точкой плотность представимых
чисел больше ближе к нулю, чем ближе к наибольшим представимым
величинам. Однако, машины, которые не используют денормальные
числа, страдают от огромной дыры между нулем и его ближайшими
соседями. На Рисунках 16-1 и 16-2 показано, что случается около
нуля в двух различных системах чисел с плавающей точкой.
На Рисунке 16-1 показана система чисел с плавающей точкой,
которая (подобно процессору i486) допускает денормальные числа.
Для упрощения показаны только неотрицательные числа и рисунок
иллюстрирует систему чисел, которая несет только четыре значащие
разряда вместо 24-х, 53-х или 64-х значащих разряда, которые
предлагает процессор i486.
Каждый плюс обозначает представимое четырьмя значащими битами
число, а длинная вертикальная черта обозначает степень 2. Минусы
обозначают числа, не представимые с этой точностью. Денормальные
числа лежат между 0 и ближайшей нормальной степенью 2. Они не
менее плотны чем оставшиеся ненулевые числа.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і
і і
і 0+++++++і+++++++і-+-+-+-+-+-+-+-і---+---+---+---+---+---+.... і
і і
і АДДДДДДДЩ - - - - - - Нормальные числа - - - - - -> і
і Денормальные і
і числа і
і і
і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рисунок 16-1. Система Чисел с Плавающей Точкой с Денормальными
Значениями
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і і
і і
і 0 і+++++++і-+-+-+-+-+-+-+-і---+---+---+---+---+---+.... і
і і
і А - - - - - - Нормальные числа - - - - - -> і
і і
і і
і і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рисунок 16-2. Система Чисел с Плавающей Точкой без Денормальных
Значений
На Рисунке 16-2 показана система чисел с плавающей точкой,
которая (в отличие от модуля обработки операций с плавающей
точкой процессора i486 или сопроцессора 387) не допускает
денормальные числа. Существует две большие дырки: одна на
положительной стороне от нуля (как показано), а другая на
отрицательной стороне от нуля (не показано). Пространство между
нулем и ближайшим соседом нуля отличается от пространства между
этим соседом и следующим большим числом с коэффициентом примерно
8.4 x 10**(6) для простого формата, 4.5 x 10**(15) для двойного
формата и 9.2 x 10**(18) для расширенного формата. Эти дырки
усложняют анализ ошибок.
Преимущество денормальных чисел бесспорно, при рассмотрении
того, что происходит в случае, когда маскируется исключение
отрицательного переполнения и значение выражения y@z попадает в
пространство между нулем и наименьшим нормальным значением.
Процессор i486 выдает ближайшее денормальное число. Этот процесс
может быть назван "последовательное отрицательное переполнение".
Действие не отличается от округления, которое может случиться,
когда значение выражения y@z попадает в нормальный диапазон.
С другой стороны, система, которая не имеет денормальных чисел,
возвращает как результат ноль - процесс, который может быть
намного более неточен, чем округление. Это действие может быть
названо "резкое переполнение". Модуль обработки операций с
плавающей точкой процессора i486 и математический сопроцессор
387 обрабатывают денормальные значения по другому, иначе, чем
математические сопроцессоры 8087/80287. Для детального
знакомства обратитесь к разделу 16.2.4.
16.1.2 Нули
----------------------------------------------------------------
Значение нуль в десятичном вещественном или целочисленном
формате может быть со знаком плюс или минус, тогда как знак
двоичного целого нуля всегда положительный. При вычислениях
значение нуля всегда ведет себя одинаково, несмотря на знак, и
обычно то, что ноль может быть со знаком, является очевидным для
программиста. При необходимости можно использовать команду FXAM
для того, чтобы определить знак нуля.
Либо программист может закодировать ноль, или он может быть
создан модулем обработки операций с плавающей точкой как
маскируемый ответ на исключение отрицательного переполнения.
Если ноль загружен или сгенерирован в регистре, то этот регистр
помечается как ноль. В Таблице 16-3 приведены результаты
команд, выполненных с нулевыми операндами, а также показано, как
может получиться ноль из ненулевых операндов.
Таблица 16-3. Нулевые Операнды и Результаты
ЪДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і Команда і Операнды і Результат і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і FLD,FBLD і ё0 і *0 і
і FILD і +0 і +0 і
і FST,FSTP,FRNDINT і ё0 і *0 і
і і +X і +0(1) і
і і -X і -0(1) і
і FBSTP і ё0 і *0 і
і FIST,FISTP і ё0 і *0 і
і і +X і +0(3) і
і і -X і -0(4) і
і FCHS і +0 і -0 і
і і -0 і +0 і
і FABS і ё0 і +0 і
і Сложение і +0 плюс +0 і +0 і
і і -0 плюс -0 і -0 і
і і +0плюс-0, -0плюс+0 і ё0(2) і
і і -Xплюс+X, +Xплюс-X і ё0(2) і
і і ё0плюсёX, ёXплюсё0 і #X і
і і і і
і Вычитание і +0 минус -0 і +0 і
і і -0 минус +0 і -0 і
і і +0 минус+0,-0 минусі ё0(2) і
і і -0 і ё0(2) і
і і +X минус+X,-X минусі -#X і
і і -X і #X і
і і ё0 минус ёX і і
і і ёX минус ё0 і і
і Умножение і ё0 x ё0 і (+)0 і
і і ё0 x ёX, ёX x ё0 і (+)0 і
і і +X x +Y, -X x -Y і +0(1) і
і і +X x -Y, -X x +Y і -0(1) і
і Деление і ё0 / ё0 і Недопустимая Операция і
і і ёX / ё0 і (+)oo (Деление на 0) і
і і ёX / ёoo і (+)0 і
і і +0 / +X, -0 / -X і +0 і
і і +0 / -X, -0 / +X і -0 і
і і -X / -Y, +X / +Y і +0(1) і
і і -X / +Y, +X / -Y і -0(1) і
і FPREM, FPREM1 і ё0 rem ё0 і Недопустимая Операция і
і і ёX rem ё0 і Недопустимая Операция і
і і +0 rem ёX і +0 і
і і -0 rem ёX і -0 і
і і +X rem ёY і +0 Y точно делит X і
і і -X rem ёY і -0 Y точно делит X і
і FSQRT і ё0 і *0 і
і Сравнение і ё0 : +X і ё0 < +X і
і і ё0 : ё0 і ё0 = ё0 і
і і ё0 : -X і ё0 > -X і
і FTST і ё0 і ё0 = 0 і
і FXAM і +0 і C3=1; C2=C1=C0=0 і
і і -0 і C3=C1=1; C2=C0=0 і
і FSCALE і ё0 масштабир. -oo і *0 і
і і ё0 масштабир. +oo і Недопустимая Операция і
і і ё0 масштабир. X і *0 і
і FXTRACT і +0 і ST=+0, ST(1)=-oo і
і і -0 і Деление на ноль і
і і і ST=-0, ST(1)=-oo і
і і і Деление на ноль і
і FPTAN і ё0 і *0 і
і FSIN (или резулт.і ё0 і *0 і
і SIN из FSINCOS) і і і
і FCOS (или резулт.і ё0 і +1 і
і COS из FSINCOS) і і і
і і і і
і FPATAN і ё0 / +X і *0 і
і і +0 / -X і *Пи і
і і ёX / ё0 і #Пи/2 і
і і ё0 / +0 і *0 і
і і ё0 / -0 і *Пи і
і і +oo / ё0 і +Пи/2 і
і і -oo / ё0 і -Пи/2 і
і і ё0 / +oo і *0 і
і і ё0 / -oo і *Пи і
і F2XM1 і +0 і +0 і
і і -0 і -0 і
і FYL2X і ёY x log(ё0) і Деление на ноль і
і і ё0 x log(ё0) і Недопустимая Операция і
і FYL2XP1 і +Y x log(ё0+1) і *0 і
і і -Y x log(ё0+1) і -*0 і
і і і і
АДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДЩ
X и Y ненулевые положительные операнды.
1 когда отрицательное переполнение денормализует
результат до нуля.
2 знак, опрежделяемый режимом округления: + для
округления до ближайшего, округления вверх или
отсечения, - для округления вниз.
3 при 0 < X < 1 и если не установлен режим
округления вверх.
4 при -1 < X < 0 и если не установлен режим
округления вниз.
* знак изначального нулевого операнда.
# знак изначального операнда X.
-# дополнение знака изначального операнда X.
(+) исключающее ИЛИ знаков операндов
16.1.3 Бесконечность
----------------------------------------------------------------
Вещественные форматы поддерживают представление бесконечности со
знаком. Эти значения кодируются со смещенным порядком из всех
единиц и с мантиссой 100..00. Если бесконечность попадает в
регистр, то он помечается как особый.
Или программист может закодировать бесконечность, или она может
быть создана модулем обработки операций с плавающей точкой как
маскируемый ответ на исключение переполнения или деления на
ноль. Обратите внимание, что в зависимости от режима округления,
маскируемый ответ может повлечь за собой наибольшее допустимое
значение, представимое в принимающем формате, а не
бесконечность.
К бесконечностям можно приписывать знак, поэтому возможно
сравнение с бесконечностью. Бесконечность всегда
интерпретируется в афинном смысле, то есть -oo < (любое конечное
число) < +oo. Арифметические операции с бесконечностью всегда
точны и не дают исключительных ситуаций, за исключением
недопустимых операций, указанных в Таблице 16-4.
Таблица 16-4. Бесконечные Операнды и Результат
ЪДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДї
і Операция і Операнды і Результат і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДґ
і FLD,FBLD і ёoo і *oo і
і FST,FSTP,FRNDINT і ёoo і *oo і
і FCHS і +oo і -oo і
і і -oo і +oo і
і FABS і ёoo і +oo і
і Сложение і +oo плюс +oo і +oo і
і і -oo плюс -oo і -oo і
і і +oo плюс -oo і Недопустимая Операция і
і і -oo плюс +oo і Недопустимая Операция і
і і ёoo плюс ёX і *oo і
і і ёX плюс ёoo і *oo і
і Вычитание і +oo минус -oo і +oo і
і і -oo минус +oo і -oo і
і і +oo минус +oo і Недопустимая Операция і
і і -oo минус -oo і Недопустимая Операция і
і і ёoo минус ёX і *oo і
і і ёX минус ёoo і -*oo і
і Умножение і ёoo x ёoo і (+)oo і
і і ёoo x ёY, ёY x ёoo і (+)oo і
і і +0 x ёoo, ёoo x ё0 і Недопустимая Операция і
і Деление і ёoo / ёoo і Недопустимая Операция і
і і ёoo / ёX і (+)oo і
і і ёX / ёoo і (+)0 і
і і ёoo / ё0 і (+)oo і
і FPREM, FPREM1 і ёoo rem ёoo і Недопустимая Операция і
і і ёoo rem ёX і Недопустимая Операция і
і і ёX rem ёoo і $X, Q = 0 і
і FSQRT і -oo і Недопустимая Операция і
і і +oo і +oo і
і Сравнение і +oo : +oo і +oo = +oo і
і і -oo : -oo і -oo = -oo і
і і +oo : -oo і +oo > -oo і
і і -oo : +oo і -oo < +oo і
і і +oo : ёX і +oo > X і
і і -oo : ёX і -oo < X і
і і ёX : +oo і X < +oo і
і і ёX : -oo і X > -oo і
і і +oo і +oo > 0 і
і FTST і -oo і -oo < 0 і
і FSCALE і ёoo масштабир. -oo і Недопустимая Операция і
і і ёoo масштабир. +oo і *oo і
і і ёoo масштабир. ёX і *oo і
і і ё0 масштабир. -oo і ё0(1) і
і і ё0 масштабир. oo і Недопустимая Операция і
і і ёY масштабир. +oo і #oo і
і і ёY масштабир. -oo і #0 і
і FXTRACT і ёoo і ST=*oo, ST(1)=+oo і
і FXAM і +oo і C0=C2=1; C1=C3=0 і
і і -oo і C0=C1=C2=1; C3=0 і
і і і і
і FPATAN і ёoo / ёX і *Пи/2 і
і і ёY / +oo і #0 і
і і ёY / -oo і #Пи і
і і ёoo / +oo і *Пи/4 і
і і ёoo / -oo і *3Пи/4 і
і і ёoo / ё0 і *Пи/2 і
і і +0 / +oo і +0 і
і і +0 / -oo і +Пи і
і і -0 / +oo і -0 і
і і -0 / -oo і -Пи і
і F2XM1 і +oo і +oo і
і і -oo і -1 і
і FYL2X і ёoo x log(1) і Недопустимая Операция і
і і ёoo x log(X>1) і *oo і
і і ёoo x log(0
|