Язык программирования Форт



         

Глава 4. Еще об арифметических операциях - часть 31


D% будет помещать в стек число с плавающей запятой двойной точности. Арифметические и другие математические действия производятся так же, как с целыми числами, поэтому мы их обсуждать не будем. Например, %.551Е3 % 10 F+ TAN F. произведет суммирование чисел 55.1 и 10, получая 65.1, а затем выведет значение тангенса этой величины (по умолчанию - в радианах), которая равна -1.19366. Что же касается комплексных чисел, то они заслуживают дальнейшего рассмотрения, но мы отложим этот вопрос до реализации операций с плавающей запятой на базе сопроцессора 8087. Использование слов для работы с числами с плавающей запятой asder понятно из упражнений.

Упражнения

1. Оцените значения следующих выражений, вводя числа с клавиатуры: (а) 5.5 + 1200 (б) ln(23/5) (в) sin^2(55) + cos^2(45) (углы - в градусах) (г) длину стороны квадрата с площадью 10 квадратных дюймов (д) площадь круга с радиусом 3.25 дюйма. 2. Напишите слово, которое будет брать два целых числа из стека, вычислять площадь прямоугольника со сторонами, выражаемыми этими числами, и печатать ее, обеспечивая не менее 10 значащих разрядов. 3. Напишите определение слова FABS с именем NEWFABS, используя возведение в квадрат и квадратный корень. 4. Напишите слово для определения гипотенузы прямоугольного треугольника по теореме Пифагора. Следующее упражнение предназначено для более подготовленных. 5. Напишите слово, которое с помощью цикла DO-LOOP печатало бы таблицу значений синуса и тангенса для углов до 45 градусов с шагом 1 градус. То же самое сделайте с шагом 0.1 градуса.

Таблица 4.4. Набор операций над числами с плавающей запятой, реализованных в MMSFORTH на базе ПЗУ*

% ( -) Предшествует вводу числа с плавающей запятой F#IN ( - t) Запрашивает ввод числа с плавающей запятой с клавиатуры F. ( f -) Печатает число с плавающей запятой F.R ( f ширина поля -) Печатает число с плавающей запятой, выравненное вправо в поле указанной ширины F+ ( f1 f2 -- f3) Возвращает сумму двух чисел F- ( f1 f2 -- f3) Возвращает разность двух чисел f1-f2 F* ( f1 f2 - f3) Умножает два числа f1*f2 F/ ( f1 f2 - f3) Делит два числа (f1/f2) FABS ( f - f1) Берет абсолютную величину числа с плавающей запятой FMINUS ( f -- -f) Изменяет знак числа; эквивалентно NEGATE SGN ( f - n) Возвращает -1, если f0 FCOMP ( f1 f2 - n) Сравнивает два числа с плавающей запятой: n=-1, если f1f2 FOG ( f - log(f)) Возвращает натуральный логарифм числа f FOG10 ( f - lg(f)) Возвращает десятичный логарифм числа f EXP < f - exp(f)) Возвращает значение числа е в степени f 10^ ( f - 10^f) Возводит число 10 в степень f X^Y ( f1 f2 - f1^f2) Возвращает f1, возведенное в степень f2 1/X ( f - 1/f) Возвращает число, обратное f FIX ( f1 - f2) Возвращает число с плавающей запятой, округленное до целого INT ( f1 - f2) Возвращает вместо числа с плавающей запятой ближайшее целое снизу CINT ( f - n) Возвращает 16-разрядное ближайшее целое, меньшее f I-F ( n - f) Преобразует 16-разрядное целое число в число с плавающей запятой SQR ( f1 - f2) Возвращает квадратный корень от f1 RND ( f - f) Возвращает случайное число с плавающей запятой, как на Microsoft Бейсике DEGREES ( -) Дает указания Форту принимать углы в градусах RADIANS ( -) Дает указания Форту принимать углы в радианах SIN ( f1 - f2) Возвращает значение синуса от f1 COS ( f1 - f2) Возвращает значение косинуса от f1 TAN ( f1 - f2) Возвращает значение тангенса от f1 ATN ( f1 - f2) Возвращает значение арктангенса от f1 ATN2 ( f1 f2 - f3) Возвращает значение арктангенса угла отрезка, соединяющего начало координат с точкой х,у PI ( - f) Возвращает константу Пи RAD ( - f) Возвращает константу для перевода градусов в радианы L10 ( - f) Возвращает натуральный логарифм 10 DF#IN ( - df) Запрашивает ввод числа с плавающей запятой двойной точности с клавиатуры DF. ( df -) Печатает число с плавающей запятой двойной точности DF.R ( df ширина поля-) Печатает число с плавающей запятой двойной точности, выравненное в поле указанной длины вправо DF+ ( df1 df2 - df3) Возвращает сумму (df1 + df2) DF- ( df1 df2 - df3) Возвращает разность (df1 - df2) DF* ( dfi df2 - df3) Возвращает произведение (df1*df2) DF/ ( df1 df2 - df3) Возвращает частное (df1/df2) DFABS ( df1 - df2) Возвращает абсолютное значение df1 DFMINUS ( df1 - df2) Изменяет знак df1 DSGN ( df - n) Возвращает -1, если df0 DFCOMP ( df1 df2 - n) Сравнивает два числа с плавающей запятой двойной точности, возвращая -1, если df1df2 FDF ( f - df) Преобразует число с плавающей запятой одинарной точности в число двойной точности с плавающей запятой DFF ( df - f) Преобразует число с плавающей запятой двойной точности в число одинарной точности с плавающей запятой CP+ ( Cp1 Cp2 -Cp3) Возвращает сумму двух комплексных чисел CP- ( Ср1 Cp2 -Cp3) Возвращает разность двух комплексных чисел(cp1 ср2) CP* ( Cp1 Cp2 -Cp3) Возвращает произведение двух комплексных чисел (ср1*ср2) CP/ ( Cp1 Cp2 -Cp3) Возвращает частное от деления двух комплексных чисел (ср1/ср2) MAG ( cp - f) Возвращает модуль комплексного числа PHASE ( cp - f) Возвращает аргумент или фазу комплексного числа CPMINUS ( cp - -cp) Изменяет знак комплексного числа с плавающей запятой CONJG ( cр -- ср) Возвращает сопряженное комплексное число с плавающей запятой R-Р ( ср -- f f) Преобразует прямоугольные координаты в полярные Р-R ( f f- ср) Преобразует полярные координаты в прямоугольные




Содержание  Назад  Вперед