¦X¦

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

|X| (абсолютное значение) — традиционное слово Каллисто. Вычисление модуля.

|X|            ( x −− p )                           Вычисление модуля. p := |x|

p — абсолютная величина числа x, т.е. тоже значение числа, но непременно положительное.

Для нуля и положительных чисел p=x, для отрицательных чисел p=−x.

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

В режиме NUM последовательно нажмите клавиши  F   П     Р-ГРД-Г   0     P   F   П 

ABS и FABS в стандарте ANS Forth[править]

 6.1.0690   ABS                                 "abs"                       CORE
            ( n -- u )
            u - абсолютное значение n.

 12.6.2.1474   FABS                           "f-abs"               FLOATING EXT
            ( F: r1 -- r2 ) or ( r1 -- r2 )
            r2 - абсолютное значение r1.

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

В отличие от Форта-83, в Каллисто абсолютная величина -32768 равна 32768.

В Каллисто имя |X| восходит к надписи на клавиатуре советского ПМК «Электроника МК-61», выпущенного в 1984 году.

Аналогичное слово во всех стандартах Форта, начиная с 1979 года, называется ABS. Также каллистянское |X| выполняет роль стандартного слова FABS

ABS в предыдущем стандарте Forth-83 (англ.)[править]

     ABS          n -- u                        79          "absolute"
          u is the absolute value of n.  If n is -32,768 then u is the
          same value.  See:  "arithmetic, two's complement"

ABS в стандарте Forth-79 (англ.)[править]

ABS            n1 -- n1                      108         "absolute"
    Leave the absolute value of a number.

ABS в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

ABS           n  ---  u                        L0
       Leave the absolute value of n as u.

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

В Каллисто 1.0 слово |X| является «обёрткой» вокруг команды ЭКВМ К |x|:

1453 ;#ABS
1454 ; |X|              ( x −− p )                           Вычислить модуль. p := |x|
1455 LABS:           .DB     3
1456                 .TEXT   "|X|"                   ; ( x −− |x| )
1457                 .DW     LSTOD
1458 ABS:            .DW     JABS                    ; Получить абсолютное значение.
1459 JABS:           PKRM03 KABS PKM03  KGOTO9       ; Обёртка вокруг K |x|

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

CODE ABS ( n -- u ) \ 94
\ u - абсолютная величина n.
    MOV     ECX, EAX
    SAR     ECX, 1F
    XOR     EAX, ECX
    SUB     EAX, ECX
    RET
END-CODE
CODE FABS   
       FABS
       RET
END-CODE

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

У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28):

 : |X|   ( A ---> абс A )    ↑ 0< IF /−/ THEN ;

Слово |X| в ядре ФОРТ-ЕС работало лишь с целыми числами. Оно называлось ABS и определено через арифметику числовых пар, отсутствующую в Каллисто:

ABS       N1->N2 АБСОЛЮТНАЯ ВЕЛИЧИНА                            17

                     Экран номер 17
( 31.03.86   NEGATE ABS + - 1+ 1- 2+ 2- +!  1+!  )

: ABS ( N1->+N2) S>D DABS DROP ;

В FORTH ИТЭФ слово |X| также называлось ABS, работало с целыми и было примитивом. Вот его определение:

            HEAD     203Q,'AB',323Q,ABS                   ; ABS
            POP  AX
            CMP  AX, 0
            JNS  AB
            NEG  AX
   AB:      PUSH AX
            NEXT

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


  Nopictures-icon.png У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Stub-icon-48px.png Это заготовка статьи. Вы можете помочь проекту, дополнив её.