Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''Eˣ''' (е в степени икс) — традиционное слово [[Каллисто]]. Вычисление экспоненты. | | '''Eˣ''' — стандартное слово [[Каллисто]]. |
| Eˣ ( x −− p ) Вычисление экспоненты. p := e^x
| |
| [[Файл:CallistoValue.png|thumb|right|264px|Пример работы слова Eˣ]]
| |
| Возводит значение числа e в степень x, возвращает p. Аргумент x должен быть меньше ln 10<sup>100</sup>≈230,2585093.
| |
| | |
| == Ввод слова Eˣ ==
| |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша ИП|{{Чёрная клавиша|ИП}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша 0|{{Серая клавиша|0}}]]
| |
| | |
| Эти нажатия оставляют клавиатуру в [[Режим NUM|режиме NUM]].
| |
| | |
| == FEXP в стандарте ANS Forth ==
| |
| 12.6.2.1515 FEXP "f-e-x-p" FLOATING EXT
| |
| ( F: r1 -- r2 ) or ( r1 -- r2 )
| |
| Возводит e в степень r1, возвращает r2.
| |
| | |
| == История ==
| |
| В Форте слово Eˣ одно из самых древних, хотя вошло в стандарт под именем FEXP лишь в 1994 году.
| |
| | |
| Впервые слово появилось в 1964 году под именем EXP в программе CURVE, написанной Чак Муром на Алголе для Burroughs B5500 в 1964 году ([https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%83%D1%81%D0%BA%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B8%D1%8F_SLAC Национальная ускорительная лаборатория SLAC], [https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%8D%D0%BD%D1%84%D0%BE%D1%80%D0%B4%D1%81%D0%BA%D0%B8%D0%B9_%D1%83%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%82%D0%B5%D1%82 Стэнфордский университет]). Разумеется, слово EXP в 1964 году вызывало библиотечную функцию.
| |
| | |
| Снова слово EXP появилось в Форте 1971-73 годах, когда Чак Мур перенёс транслятор на DEC PDP-11 в [https://en.wikipedia.org/wiki/National_Radio_Astronomy_Observatory National Radio Astronomy Observatory] (''англ.'', [https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D1%80%D0%BB%D0%BE%D1%82%D1%81%D0%B2%D0%B8%D0%BB%D0%BB_%28%D0%92%D0%B8%D1%80%D0%B3%D0%B8%D0%BD%D0%B8%D1%8F%29 Шарлотсвилл]). Экспонента вычислялась по основанию 2. Функции EXP и LOG работали с фиксированной запятой — 10 бит справа от двоичной запятой.
| |
| | |
| Слово Eˣ также было в MMSFORTH и FSP88 под именем EXP
| |
| | |
| В [[Каллисто]] имя Eˣ восходит к надписи на клавиатуре советского ПМК [[«Электроника Б3-34»]], выпущенного в 1980 году.
| |
| | |
| == Реализация ==
| |
| Слово является «обёрткой» вокруг команды ЭКВМ [[F EXP|F e<sup>x</sup>]], которая вызывает переполнение при аргументе 230,2585093 и больше.
| |
| | |
| Обработка этой ошибки производится [[Встроенная программа|встроенной программой]]. Например, последовательность слов {{Текст на индикаторе|231 eˣ}} вызывает [[аварийный останов]] [[Каллисто]] с сообщением «Переполнение» в [[Строка комментариев|строке комментариев]]. Можно ввести с клавиатуры произвольное число в качестве значения «e<sup>231</sup>» и вернуться в [[Каллисто]], нажав [[Клавиша С/П|{{Чёрная клавиша|С/П}}]]. Подробнее см. статью [[Авост Каллисто]].
| |
| | |
| В случае [[Авост Каллисто|аварийного останова]] рекомендуется произвести [[COLD|«холодную перезагрузку»]] [[Каллисто]] с удалением всех введённых слов, нажав последовательно клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша С/П|{{Чёрная клавиша|С/П}}]].
| |
| <pre>
| |
| 1572 ;#FEXP
| |
| 1573 ; Eˣ ( x −− p ) Экспонента. p := eˣ
| |
| 1574 LEXPE: .DB 2
| |
| 1575 .TEXT "E" ; ( x −− e^x )
| |
| 1576 .DB 190 ; E^X
| |
| 1577 .DW LEXP10
| |
| 1578 EXPE: .DW JEXPE
| |
| 1579 JEXPE: PKRM03 FEXP PKM03 KGOTO9 ; Обёртка вокруг FEXP.
| |
| </pre>
| |
| Реализация из SP-Forth 4.20:
| |
| <pre>
| |
| \ e^(x) = 2^(x * LOG{2}e)
| |
| | |
| CODE FEXP
| |
| FLDL2E \ normalize
| |
| FMULP ST(1), ST(0)
| |
| LEA EBP, -4 [EBP] \ set rounding mode to truncate
| |
| MOV [EBP], EAX
| |
| FSTCW DWORD -4 [EBP]
| |
| MOV EAX, -4 [EBP]
| |
| AND AH, # 0F3
| |
| OR AH, # 0C
| |
| MOV -8 [EBP], EAX
| |
| FLDCW DWORD -8 [EBP]
| |
| FLD ST(0) \ get integer and fractional parts
| |
| FRNDINT
| |
| FXCH ST(1)
| |
| FSUB ST(0), ST(1)
| |
| F2XM1 \ exponentiate fraction
| |
| FLD1
| |
| FADDP ST(1), ST(0)
| |
| FSCALE \ scale in integral part
| |
| FXCH ST(1) \ clean up
| |
| FCOMP ST(1)
| |
| FLDCW DWORD -4 [EBP]
| |
| MOV EAX, [EBP]
| |
| LEA EBP, 4 [EBP]
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
| | |
| == Ссылки ==
| |
| * {{Исходник|FEXP|Eˣ}}
| |
| * См. слова [[10ˣ]], [[Yˣ]] и [[LN]]
| |
| * [http://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%B0 Экспонента на Википедии]
| |
| * [http://ru.wikipedia.org/wiki/E_%28%D1%87%D0%B8%D1%81%D0%BB%D0%BE%29 Число e на Википедии]
| |
| * Слово [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1515 FEXP (f-e-x-p)] в стандарте ANS Forth ''(англ.)''
| |
| * Слово [http://forth-standard.org/standard/float/FEXP FEXP (f-e-x-p)] в черновике Forth 200x ''(англ.)''
| |
| | |
|
| |
|
| | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Математические функции Каллисто]] | | [[Категория:Математические функции Каллисто]] |
| [[Категория:Одноместные операции Каллисто]]
| |
| [[Категория:Слова, способные вызывать авост Каллисто]]
| |
| [[Категория:Адаптированные слова]]
| |
| [[Категория:Традиционные слова]]
| |