Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лек-1.doc
Скачиваний:
30
Добавлен:
03.03.2015
Размер:
342.53 Кб
Скачать

§ 1.6. Встроенные математические функции

Для вычисления часто встречающихся математических функций в языке Фортран предусмотрены специальные «зашитые» алгоритмы. Такие функции называют встроенными. Имена многих встроенных функций являются родовыми. Например, родовым является имя функции ABS, предназначенной для вычисления абсолютной величины аргумента. На практике это означает, что тип результата такой функции зависит от типа обязательного аргумента. Такая функция может принимать в качестве аргумента, например, значения целого и вещественного типов. В этом случае тип и значение параметра разновидности типа результата функции ABS такие же, как у исходного аргумента. Ряд встроенных функций имеют специфические имена, и их вызов может быть выполнен как по родовому, так и по специфическому имени. Специфические имена применяют, в частности, тогда, когда необходимо сделать очевидным для программиста используемый в расчетах тип данных.

В графе «Тип функции» приводимой ниже таблицы 1.6.1 указан тип, который функция имеет, когда она используется в качестве фактического параметра процедуры (см. далее). Эта информация существенна, когда специфическое и родовое имена функции совпадают. Если родовое имя используется в выражении, то тип функции определяется типом ее аргументов [6].

Таблица 1.6.1.Встроенные математические функции.

Описание

функции

Форма

вызова

с родовым

именем

Специфи-ческое имя

Тип

аргумента

Тип

функции

1

2

3

4

5

max(x-y,0)

DIM(x,y)

IDIM

DIM

DDIM

INTEGER

REAL

REAL(8)

INTEGER(4)

REAL(4)

REAL(8)

Абсолютное значение a, умноженное на знакb

SIGN(a,b)

ISIGN

SIGN

DSIGN

INTEGER

REAL

REAL(8)

INTEGER(4)

REAL(4)

REAL(8)

x*y

DPROD(x,y)

DPROD

REAL

REAL(8)

Усечение

AINT(a)

AINT

DINT

REAL

REAL(8)

REAL(4)

REAL(8)

Ближайшее целое

ANINT(a)

ANINT

DNINT

REAL

REAL(8)

REAL(4)

REAL(8)

Ближайшее число типа INTEGER

NINT(a)

NINT

IDNINT

REAL

REAL(8)

INTEGER(4)

INTEGER(4)

Абсолютная величина

ABS(a)

IABS

ABS

DABS

CABS

CDABS

INTEGER

REAL(4)

REAL(8)

COMPLEX(4)

COMPLEX(8)

INTEGER(4)

REAL(4)

REAL(8)

REAL(4)

REAL(8)

Остаток по модулю p

MOD(a,p)

MOD

AMOD

DMOD

INTEGER

REAL(4)

REAL(8)

INTEGER(4)

REAL(4)

REAL(8)

Мнимая часть

AIMAG(z)

AIMAG

IMAG

DIMAG

COMPLEX

COMPLEX(4)

COMPLEX(8)

REAL(4)

REAL(4)

REAL(8)

Комплексное сопряжение

CONJG(z)

CONJG

DCONJG

COMPLEX(4)

COMPLEX(8)

COMPLEX(4)

COMPLEX(8)

Квадратный корень

SQRT(x)

SQRT

DSQRT

CSQRT

CDSQRT

REAL

REAL(8)

COMPLEX(4)

COMPLEX(8)

REAL(4)

REAL(8)

COMPLEX(4)

COMPLEX(8)

Экспонента

EXP(x)

EXP

DEXP

CEXP

CDEXP

REAL

REAL(8)

COMPLEX(4)

COMPLEX(8)

REAL(4)

REAL(8)

COMPLEX(4)

COMPLEX(8)

1

2

3

4

5

Натуральный логарифм

LOG(x)

ALOG

DLOG

CLOG

CDLOG

REAL

REAL(8)

COMPLEX(4)

COMPLEX(8)

REAL(4)

REAL(8)

COMPLEX(4)

COMPLEX(8)

Десятичный логарифм

LOG10(x)

ALOG10(x)

DLOG10(x)

REAL

REAL(8)

REAL(4)

REAL(8)

Синус

SIN(x)

SIN

DSIN

CSIN

REAL

REAL(8)

COMPLEX(4)

REAL(4)

REAL(8)

COMPLEX(4)

Синус

(аргумент

в градусах)

SIND(x)

SIND

DSIND

REAL

COMPLEX

REAL(8)

REAL(4)

REAL(4)

REAL(8)

Косинус

COS(x)

COS

DCOS

CCOS

CDCOS

REAL

REAL(8)

COMPLEX(4)

COMPLEX(8)

REAL(4)

REAL(8)

COMPLEX(4)

COMPLEX(8)

Косинус

(аргумент

в градусах)

COSD(x)

COSD

DCOSD

REAL

COMPLEX

REAL(8)

REAL(4)

REAL(4)

REAL(8)

Тангенс

TAN(x)

TAN

DTAN

REAL

REAL(8)

REAL(4)

REAL(8)

Тангенс

(аргумент

в градусах)

TAND(x)

TAND

DTAND

REAL

REAL(8)

REAL(4)

REAL(8)

Котангенс

COTAN(x)

COTAN

DCOTAN

REAL

REAL(8)

REAL(4)

REAL(8)

Арксинус

ASIN(x)

ASIN

DASIN

REAL

REAL(8)

REAL(4)

REAL(8)

Арксинус

(аргумент

в градусах)

ASIND(x)

ASIND

DASIND

REAL

REAL(8)

REAL(4)

REAL(8)

Арккосинус

ACOS(x)

ACOS

DACOS

REAL

REAL(8)

REAL(4)

REAL(8)

Арккосинус

(аргумент

в градусах)

ACOSD(x)

ACOSD

DACOSD

REAL

REAL(8)

REAL(4)

REAL(8)

Арктангенс

ATAN(x)

ATAN

DATAN

REAL

REAL(8)

REAL(4)

REAL(8)

Арктангенс

(аргумент

в градусах)

ATAND(x)

ATAND

DATAND

REAL

REAL(8)

REAL(4)

REAL(8)

Арктангенс

(y/x)

ATAN2(y,x)

ATAN2

DATAN2

REAL

REAL(8)

REAL(4)

REAL(8)

Арктангенс

(y/x)

(результат

в градусах)

ATAN2D(y,x)

ATAN2D

DATAN2D

REAL

REAL(8)

REAL(4)

REAL(8)

1

2

3

4

5

Гиперболический

синус

SINH(x)

SINH

DSINH

REAL

REAL(8)

REAL(4)

REAL(8)

Гиперболический

косинус

COSH(x)

COSH

DCOSH

REAL

REAL(8)

REAL(4)

REAL(8)

Гиперболический

тангенс

TANH(x)

TANH

DTANH

REAL

REAL(8)

REAL(4)

REAL(8)

В соответствии с информацией таблицы 1.6.1 из выражений sin(2.)иsin(2)неверным является второе (где в качестве аргумента функцииsin задана целая константа).

При вычислении стандартных функций должны соблюдаться некоторые разумные ограничения. Так, например, аргумент функции sqrt должен быть больше или равен 0, аргумент функций alog, alog10 должен быть больше 0, аргумент функции exp должен быть таким, чтобы соответствующие результаты не выходили за пределы представимых в памяти ЭВМ чисел и т.д.

Стандартные математические функции могут входить в арифметическое выражение и сами быть аргументом для других функций. При этом в сложных арифметических выражениях значения встроенных функций вычисляются до возведения в степень, умножения (деления) и сложения (вычитания)– если иное не предписано скобками.

Определим, например, порядок действий при вычислении выражения

sin(x2)2 + sin(x)2 + si/nx + sinx2.

Вначале вычисляется выражение в скобках: x2, далее – два значения синуса: sin(x2) и sin(x); затем производится возведение в степень: sin(x)2 и sinx2 (заметим, что sinx – просто имя другой переменной, не имеющей отношения к функции sin); после этого – деление si/nx и три сложения.