Начальный курс программирования на языке Форт


ОПЕРАЦИИ НАД ДРОБНЫМИ ЧИСЛАМИ - часть 3


Детали мы объясним вам в гл. 7, а для своих текущих потребностей вы можете определить, например, слово : D>F ( d -- дробь) DROP 10000 /. ;

(D>F означает перевод из числа двойной длины в дробное. DOUBLE - двойной, FRACTION - дробь). Теперь можно вводить следующие выражения:.1250 D>F .3750 D>F + .F 0.5000 ok

1 Для пользователей фиг-Форта, систем полиФорт, созданных бо введения Стандарта-83 и других старых систем Перед SIGN слово ROT должно быть опущено

Обратите внимание на то, что необходимо дополнять исходные данные до четырех десятичных знаков.

Вы можете выполнять умножение двух дробей посредством *..7500 D>F .5000 D>F *. .F .3750 ok

Интересно отметить, что если вы выполняете операцию умножения *. дроби на целое, то результат будет целым, например:28 .5000 D>F *. . 14 ok

Применяя операцию /., можно разделить, скажем, -0.3 на 0.95:-.3000 D>F .9500 D>F /. .F -0.3160 ok

Выполняя ту же операцию над двумя целыми, вы получите дробный результат:22 44 /. .F .5000 ok

Если же вы делите посредством /. целое на дробь, то в результате получите целое. Обозначив символом f дробь, а символом i целое, мы можем построить следующую таблицу выполнения операций:ОПЕРАЦИЯ РЕЗУЛЬТАТ f f + f f f - f f i * f i f * f f i / f f f *. f f i *. i i f *. i f f /. f i i /. i i f /. i

Использование двоично-ориентированного масштаба, например числа 16384, а не десятично-ориентированного, например 10000, позволяет обеспечить в пределах 16 разрядов большую точность (точность повышается в отношении 16 к 10). При этом операции */ и /. кодируются на ассемблере чрезвычайно эффективно. Но и число 16384 мы выбрали в качестве единицы произвольно. Если бы было выбрано число 256, то получилось бы восемь разрядов (включая знак) слева от двоичной точки и восемь разрядов справа. Этот метод при необходимости можно применить и к 32-разрядным числам.

Операции *. и /. можно выполнять над тригонометрическими функциями, поскольку значение угла представляется как функция длины окружности, выраженная дробью (в интервале от 0 до 1).Перевод радиан в градусы и обратное преобразование осуществляются весьма просто.




Начало  Назад  Вперед