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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 47 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''|X|''' — стандартное слово [[Каллисто]].
'''|X|''' (абсолютное значение) традиционное слово [[Каллисто]]. Вычисление модуля.
|X|            ( x −− p )                          Вычисление модуля. p := |x|
p — абсолютная величина числа x, т.е. тоже значение числа, но непременно положительное.
 
Для нуля и положительных чисел p=x, для отрицательных чисел p=−x.
 
== Ввод слова |X| ==
В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]   [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]]   [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]
 
== ABS и FABS в стандарте ANS Forth ==
<PRE>
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.
</PRE>
 
== История ==
В отличие от Форта-83, в [[Каллисто]] абсолютная величина -32768 равна 32768.
 
В [[Каллисто]] имя |X| восходит к надписи на клавиатуре советского ПМК [[Электроника МК-61|«Электроника МК-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| является «обёрткой» вокруг команды ЭКВМ [[K ABS|К &#124;x&#124;]]:
<pre>
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|
</pre>
Реализации из SP-Forth 4.20:
<pre>
CODE ABS ( n -- u ) \ 94
\ u - абсолютная величина n.
    MOV    ECX, EAX
    SAR    ECX, 1F
    XOR    EAX, ECX
    SUB    EAX, ECX
    RET
END-CODE
</pre>
<pre>
CODE FABS 
      FABS
      RET
END-CODE
</pre>
 
=== Советская реализация ===
У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28):
  : |X|  ( A ---> абс A )    ↑ 0< IF /−/ THEN ;
 
Слово |X| в ядре ФОРТ-ЕС работало лишь с целыми числами. Оно называлось ABS и определено через арифметику числовых пар, отсутствующую в [[Каллисто]]:
<PRE>
ABS      N1->N2 АБСОЛЮТНАЯ ВЕЛИЧИНА                            17
 
                    Экран номер 17
( 31.03.86  NEGATE ABS + - 1+ 1- 2+ 2- +!  1+!  )
 
: ABS ( N1->+N2) S>D DABS DROP ;
</PRE>
В FORTH ИТЭФ слово |X| также называлось ABS, работало с целыми и было [[примитив]]ом. Вот его определение:
<PRE>
            HEAD    203Q,'AB',323Q,ABS                  ; ABS
            POP  AX
            CMP  AX, 0
            JNS  AB
            NEG  AX
  AB:      PUSH AX
            NEXT
</PRE>
 
== Ссылки ==
* {{Исходник|ABS|&#124;X&#124;}}
* См. слово [[ЗН]]
* [http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D0%B0%D1%8F_%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D0%BD%D0%B0 Абсолютная величина в Википедии]
* Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0690 ABS (abs)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1474 FABS (f-abs) ] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth-standard.org/standard/core/ABS ABS (abs)] и [http://forth-standard.org/standard/float/FABS FABS (f-abs)] в черновике Forth 200x ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\05.OPERAZII%20NAD%20ZELYMI%20TISLAMI ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
 


{{нет иллюстраций}}
{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Примитивы]]
[[Категория:Арифметические операции Каллисто]]
[[Категория:Арифметические операции Каллисто]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Традиционные слова]]
[[Категория:Адаптированные слова]]

Текущая версия от 17:32, 10 ноября 2017

|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

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


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


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