Слово ÷

Материал из ПМК вики
Перейти к навигации Перейти к поиску

÷ (делить, деление) — традиционное слово Каллисто. Деление десятичных чисел.

÷              ( y x -- x1 )                   Разделить. x1 ← y ÷ x
Пример работы слова ÷

Слово ÷ делит y на x, возвращая частное x1.

Ввод слова ÷[править]

В режиме NUM нажмите белую клавишу  ÷ 

F/ в стандарте ANS Forth[править]

12.6.1.1430   F/                          "f-slash"                    FLOATING
           ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
           Делит r1 на r2, возвращает частное r3. Неопределенная ситуация 
           существует если r2 нулевое, или частное находится вне диапазона 
           числа с плавающей точкой.

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

Слово ÷ происходит из команды ÷, которая использовалась в советском ПМК «Электроника Б3-34», выпущенным в 1980 году. В действующем стандарте Форта 1994 года слово ÷ имеет название F/

В 2007 году команда ÷ вошла в систему команд ЭКВМ, куда она попала от одноимённой команды советских ПМК. Сам знак «÷» (обелюс) взят из арифметики. Впервые знак «÷» для обозначения операции деления появился в 1659 году в книге «Teutsche Algebra» швейцарского математика Иоганна Рана.

Порядок аргументов слова ÷ (делитель на вершине стека, делимое сразу под ним) одинаков в Каллисто, Форте-94 и языке МК, а также совпадает с порядком аргументов слова /. Он взят из обратной польской записи, разработанной в 1954 году (англ. Burks, A. W.; Warren, D. W.; Wright, J. B. (1954). "An Analysis of a Logical Machine Using Parenthesis-Free Notation") на основе польской (префиксной) записи, предложенной польским математиком Яном Лукасевичем в 1924 году.

Реализация[править]

Слово ÷ является «обёрткой» вокруг команды ЭКВМ ÷, вызывающей переполнение при результате, по модулю больше либо равном 10100.

Обработка этой ошибки производится встроенной программой. Например, последовательность слов  1E50 1E-50 ÷  вызывает аварийный останов Каллисто с сообщением «Переполнение» в строке комментариев. Можно ввести с клавиатуры произвольное число в качестве значения «10100» и вернуться в Каллисто, нажав  С/П . Подробнее см. статью Авост Каллисто.

Также аварийный останов с сообщением «Деление на ноль» происходит при делении на нуль, например  1 0 ÷ .

В случае аварийного останова рекомендуется произвести «холодную перезагрузку» Каллисто с удалением всех введённых слов, нажав последовательно клавиши  В/О   С/П .

Для целочисленного деления используйте слово /.

1358 ;#Div
1359 ; ÷                ( y x −− x1 )                        Разделить. x1 := y÷x
1360 ; Деление с десятичной плавающей запятой.
1361 LFDIV:          .DB     1,176                   ; Символ деления на МК−161.
1362                 .DW     LSTAR                   ; ( делимое делитель −− частное )
1363 FDIV:           .DW     JFDIV                   ; ( a b −− a/b )
1364 JFDIV:          RM3 MB 1 + MA M3
1365                 KRMA KRMB / KMA                 ; Обёртка вокруг /
1366                 KGOTO9

Реализация из SP-Forth 4.20:

CODE F/       \ DE F9
       FDIVP ST(1), ST
       RET
END-CODE

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