F X^Y: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(восстановление утерянной иллюстрации)
Нет описания правки
 
(не показаны 3 промежуточные версии этого же участника)
Строка 14: Строка 14:
| скорость            = ?
| скорость            = ?
}}
}}
Команда '''F x<sup>y</sup>''' (лат. '''F X^Y''') «Возведение x в степень y» с кодом 24 вычисляет степенную функцию от содержимого [[RX|регистра X]]. Показатель степени берётся из [[RY|регистра Y]].
[[Файл:Стек при операции F X^Y.png|thumb|left|200px|Перемещение информации в стеке при операции F x<sup>y</sup>]]
Команда '''F x<sup>y</sup>''' (лат. '''F X^Y''') «Возведение x в степень y» с кодом 24 вычисляет степенную функцию от содержимого [[RX|регистра X]]. Показатель степени берётся из [[RY|регистра Y]]. Старое содержимое [[RX|регистра X]] помещается в [[X1|регистр X1]].


Если число в [[RX|регистре X]], возводимое в степень, отрицательное, команда Fx<sup>y</sup> приводит к аварийному останову.
Если число в [[RX|регистре X]], возводимое в степень, отрицательное, команда Fx<sup>y</sup> приводит к аварийному останову.
Строка 20: Строка 21:
== Интересные факты ==
== Интересные факты ==
* F x<sup>y</sup> — это единственная двухместная команда, которая не убирает свой аргумент из [[RY|регистра Y]].  Её картина перемещения чисел по [[Стек калькулятора|стек]]у соответствует одноместной команде. Если после команды Fx<sup>y</sup> нажать [[Сx]] и набрать следующее число, его можно возвести в ту же степень, т.к. показатель степени сохранился в [[RY|регистре Y]].
* F x<sup>y</sup> — это единственная двухместная команда, которая не убирает свой аргумент из [[RY|регистра Y]].  Её картина перемещения чисел по [[Стек калькулятора|стек]]у соответствует одноместной команде. Если после команды Fx<sup>y</sup> нажать [[Сx]] и набрать следующее число, его можно возвести в ту же степень, т.к. показатель степени сохранился в [[RY|регистре Y]].
[[Файл:Стек при операции F X^Y.png|thumb|center|200px|Перемещение информации в стеке при операции F x<sup>y</sup>]]


* В ЭКВМ нет команды извлечения корня произвольной степени.  Вместо неё можно использовать последовательность команд F1/x ↔ Fx<sup>y</sup>.  Например, В↑ 5 F1/x ↔ Fx<sup>y</sup> извлекает корень пятой степени из числа в [[RX|регистре X]].  Это справедливо благодаря формуле:
* В ЭКВМ нет команды извлечения корня произвольной степени.  Вместо неё можно использовать последовательность команд F1/x ↔ Fx<sup>y</sup>.  Например, В↑ 5 F1/x ↔ Fx<sup>y</sup> извлекает корень пятой степени из числа в [[RX|регистре X]].  Это справедливо благодаря формуле:


$\sqrt[n] x = x^{\frac{1}{n}}$
<math>\sqrt[n] x = x^{\frac{1}{n}}</math>


== История ==
== История ==
На советских ПМК команда F x<sup>y</sup> была одной из самых медленных и неточных, поэтому владельцы ПМК старались использовать её лишь в случае крайней необходимости — например, имитируя её с помощью нескольких умножений или последовательностью команд Fln × Fe<sup>x</sup> .  Последнее справедливо благодаря формуле:
На советских ПМК команда F x<sup>y</sup> была одной из самых медленных и неточных, поэтому владельцы ПМК старались использовать её лишь в случае крайней необходимости — например, имитируя её с помощью нескольких умножений или последовательностью команд Fln × Fe<sup>x</sup> .  Последнее справедливо благодаря формуле:


$x^y = e^{y\cdot \ln x}$
<math>x^y = e^{y\cdot \ln x}</math>


В ПМК [[Б3-34]] ранних выпусков команда F x<sup>y</sup> могла выполняться с ошибкой, если ей предшествовала какая-либо двухместная операция (кроме F x<sup>y</sup>), результат которой содержал в восьмом разряде мантиссы цифру 5 или 7. Для предотвращения этой ошибки перед операцией F x<sup>y</sup> можно было дважды выполнить операцию F 1/x.
В ПМК [[Б3-34]] ранних выпусков команда F x<sup>y</sup> могла выполняться с ошибкой, если ей предшествовала какая-либо двухместная операция (кроме F x<sup>y</sup>), результат которой содержал в восьмом разряде мантиссы цифру 5 или 7. Для предотвращения этой ошибки перед операцией F x<sup>y</sup> можно было дважды выполнить операцию F 1/x.


Замеченные недостатки команды Fx<sup>y</sup> исправлены в ЭКВМ, но странный рисунок перемещения чисел по [[Стек калькулятора|стек]]у было решено сохранить для совместимости с программами, написанными для советских ПМК.
Замеченные недостатки команды Fx<sup>y</sup> исправлены в ЭКВМ, но странный рисунок перемещения чисел по [[Стек калькулятора|стек]]у было решено сохранить для совместимости с программами, написанными для советских ПМК.
== Советская реализация ==
Из книги Я.К. Трохименко [[Программируемые микрокалькуляторы. Устройство и пользование. (книга)|«Программируемые микрокалькуляторы. Устройство и пользование.»]] (стр. 143):
«Степенная функция x<sup>y</sup> при вводе оператора x<sup>y</sup> вычисляется по формуле x<sup>y</sup> = e<sup>y ln x</sup> в диапазоне аргумента x > 0 и y ln x < 100 ln 10, определяемом допустимым диапазоном изменения аргумента логарифмической функции e<sup>x</sup> и ln x. В связи с относительно большой программой, реализующей вычисления этой функции, результат содержит не менее 6 верных цифр, тогда как результаты вычисления e<sup>x</sup> и ln x содержат не менее 7 верных цифр. Время выполнения оператора x<sup>y</sup> также наибольшее по сравнению с вычислением других элементарных функций.
При вычислении элементарных функций в общем случае используется 10 членов разложения в цепную дробь базовых функций. Однако в зависимости от разрядности операндов при промежуточных вычислениях и значений приведенного аргумента в разложениях в цепную дробь используется от одного до 10 членов разложения в цепные дроби. Число цифр частных, получаемых при вычислении членов (звеньев) цепной дроби, также зависит от значения приведенного аргумента и изменяется от одной до восьми.»


== Ссылки ==
== Ссылки ==

Текущая версия от 22:10, 12 марта 2023

Команда F xy
 F   xy 
Код команды 24
Русская мнемоника F xy
Латинская мнемоника F X^Y
Группа команд алгебраические функции
Число операндов двухместная, но схема перемещения чисел в стеке ближе к одноместной
Нажимаемые клавиши  F    
Число шагов 1
Признак перезаписи сбрасывается
Первое появление Б3-34
Время выполнения ? мкс
(? КНОП)
Скорость выполнения ? команд/с
Перемещение информации в стеке при операции F xy

Команда F xy (лат. F X^Y) «Возведение x в степень y» с кодом 24 вычисляет степенную функцию от содержимого регистра X. Показатель степени берётся из регистра Y. Старое содержимое регистра X помещается в регистр X1.

Если число в регистре X, возводимое в степень, отрицательное, команда Fxy приводит к аварийному останову.

Интересные факты[править]

  • F xy — это единственная двухместная команда, которая не убирает свой аргумент из регистра Y. Её картина перемещения чисел по стеку соответствует одноместной команде. Если после команды Fxy нажать Сx и набрать следующее число, его можно возвести в ту же степень, т.к. показатель степени сохранился в регистре Y.
  • В ЭКВМ нет команды извлечения корня произвольной степени. Вместо неё можно использовать последовательность команд F1/x ↔ Fxy. Например, В↑ 5 F1/x ↔ Fxy извлекает корень пятой степени из числа в регистре X. Это справедливо благодаря формуле:

История[править]

На советских ПМК команда F xy была одной из самых медленных и неточных, поэтому владельцы ПМК старались использовать её лишь в случае крайней необходимости — например, имитируя её с помощью нескольких умножений или последовательностью команд Fln × Fex . Последнее справедливо благодаря формуле:

В ПМК Б3-34 ранних выпусков команда F xy могла выполняться с ошибкой, если ей предшествовала какая-либо двухместная операция (кроме F xy), результат которой содержал в восьмом разряде мантиссы цифру 5 или 7. Для предотвращения этой ошибки перед операцией F xy можно было дважды выполнить операцию F 1/x.

Замеченные недостатки команды Fxy исправлены в ЭКВМ, но странный рисунок перемещения чисел по стеку было решено сохранить для совместимости с программами, написанными для советских ПМК.

Советская реализация[править]

Из книги Я.К. Трохименко «Программируемые микрокалькуляторы. Устройство и пользование.» (стр. 143):

«Степенная функция xy при вводе оператора xy вычисляется по формуле xy = ey ln x в диапазоне аргумента x > 0 и y ln x < 100 ln 10, определяемом допустимым диапазоном изменения аргумента логарифмической функции ex и ln x. В связи с относительно большой программой, реализующей вычисления этой функции, результат содержит не менее 6 верных цифр, тогда как результаты вычисления ex и ln x содержат не менее 7 верных цифр. Время выполнения оператора xy также наибольшее по сравнению с вычислением других элементарных функций.

При вычислении элементарных функций в общем случае используется 10 членов разложения в цепную дробь базовых функций. Однако в зависимости от разрядности операндов при промежуточных вычислениях и значений приведенного аргумента в разложениях в цепную дробь используется от одного до 10 членов разложения в цепные дроби. Число цифр частных, получаемых при вычислении членов (звеньев) цепной дроби, также зависит от значения приведенного аргумента и изменяется от одной до восьми.»

Ссылки[править]