Итак, вы познакомились с масштабированием, методами округления и аппроксимации вещественных чисел и операциями над числами с фиксированной точкой. Для того чтобы вы чувствовали себя увереннее при решении сложных математических задач, где необходимо следить за правильностью выбора масштаба в процессе решения посмотрите второй пример в гл. 12.
Как уже упоминалось, вам ничто не мешает дополнительно ввести в Форт операции над числами с плавающей точкой Но такие средства не очень подходят Форту, поскольку его достоинства - это компактность, высокая скорость выполнения программ, простота и элегантность. Он как бы «отторгает» от себя все то, что не является насущной необходимостью. Разумно используя масштабирование и числа двойной длины, вы избавитесь от дорогостоящих операций над числами с плавающей точкой.
Операции над числами с плавающей точкой имеет смысл применять в следующих случаях:
Все перечисленные доводы являются серьезными. Однако существует целый ряд систем, где вы не должны платить за возможность выполнения операций над числами с плавающей точкой.
Ниже приводится список слов Форта, используемых в данной главе: 1+ ( n -- n+1 ) Добавление единицы.
1- ( n -- n-1 ) Вычитание единицы.
2+ ( n -- n+2 ) Добавление двойки.
2- ( n -- n-2 ) Вычитание двойки.
2* ( n -- n*2 ) Умножение на два (арифметический сдвиг влево).
2/ ( n -- n/2 ) Деление на два (арифметический сдвиг вправо).
ABS ( n -- |n| ) Помещение в стек абсолютной величины заданного числа.
NEGATE ( n -- -n ) Изменение знака на противоположный.
MIN ( n1 n2 -- min) Помещение в стек минимального из двух заданных чисел.
МАХ ( n1 n2 -- max) Помещение в стек максимального из двух
>R ( n -- ) Выборка значения из стека данных и занесение его в стек возвратов.
R> ( -- n ) Выборка значения из стека возвратов и занесение его в стек данных.
R@ ( -- n ) Копирование содержимого вершины стека возвратов без изменения его значения.
*/ ( nl n2 nЗ -- Умножение, затем деление (n1*n2/nЗ). результат ) Промежуточный результат 32-разрядный.
*/MOD ( n1 n2 nЗ -- Умножение, затем деление (n1*n2/nЗ). n-остаток n-результат) Помещение на стек остатка и частного. Для промежуточного результата используется слово двойной длины.