![]() | |||||
|
|
Теория: Подпрограммы, программы и функции3.2. Встроенные функции.Встроенные функции определены в языке МS-Фортран и доступны для использования в программе на МS-Фортране. В таблице 5-1 приведены имена, назначения, типы параметров и типы функций для всех встроенных функций, допустимых в МS-Фортране, с дополнительными примечаниями после таблицы. Оператор IMPLICIT не может изменять тип встроенной функции. Для этих встроенных функций, которые допускают различные типы параметров, при одном обращении все параметры должны быть одного и того же типа. Имя встроенной функции может появиться в операторе INTRINSIC. Имя встроенной функции может также появиться в операторе описания типа, но только если тип тот же самый, что и стандартный тип этой встроенной функции. Параметры некоторых встроенных функций ограничены назначением этих функций. Например, логарифм отрицательного числа математически не определен и поэтому недопустим. Многие встроенные функции имеют общие имена, что позволяет ссылаться на функцию без уточнения типа параметров при ссылке. Когда ссылаются на общее имя компилятор выбирает соответствующую относительно специфическую функцию в зависимости от типа параметра(ов) в ссылке на функцию. Например, функция INT - это общее имя шести чуть отличающихся функций: одна с собственным именем, совпадающим с основным, три с особыми именами (IFIX,IDINT,ICHAR) и две - безымянных (для типов данных COMPLEX*8 и COMPLEX*16). Все углы в таблице 5-1 выражены в радианах. Все параметры в ссылке на встроенную функцию должны быть того же типа. Х и У - действительные, Z - комплексное, I и J - целые, а С,С1 и С2 - символьные величины. Числа в квадратных скобках в колонке 1 ссылаются на примечания после таблицы. В дальнейшем REAL эквивалентно REAL*4, DOUBLE PRECISION -REAL*8, a COMPLEX - COMPLEX*8. Если в указанном типе параметра -INTEGER, то тип может быть INTEGER*2 или INTEGER*4. Если указанный тип функции - INTEGER, тип будет целый по умолчанию определенный метакомандой $STORAGE. (Для более полной информации смотрите часть 6).
г============T=======================T==========T=========¬
| ИМЯ | НАЗНАЧЕНИЕ |ТИП ПАРАМ.|ТИП Ф |
|============|=======================|==========|=========|
| Преобразование типов |
| INT(общее) | преобразует в INTEGER | любой |INTEGER |
| INT2(X) | преобразует в INTEGER*| любой |INTEGER* |
| INT4(X) | преобразует в INTEGER*| любой |INTEGER* |
| INT(X) [1] | преобразует в INTEGER | REAL*4 |INTEGER |
| IFIX(X) | преобразует в INTEGER | REAL*4 |INTEGER |
| IDINT(X) | преобразует в INTEGER | REAL*8 |INTEGER |
| ICHAR(C)[S]| преобразует в INTEGER | CHARACTER|INTEGER |
| REAL(общее)| преобразует в REAL*4 | любой |REAL*4 |
| REAL(X) [2]| преобразует в REAL*4 | INTEGER |REAL*4 |
| | | REAL*4 |REAL*4 |
| DREAL(Z) | преобразует COMPLEX*16|COMPLEX*16| REAL*8 |
| | в REAL*8 | | |
| FLOAT(I) | преобразует в REAL*4 | INTEGER | REAL*4 |
| CHAR(X) | преобразует в символ. | INTEGER |CHARACTER|
| SNGL(X) | преобразует в REAL*4 | REAL*8 | REAL*4 |
| DBLE(общее)| преобразует в REAL*8 | любой | REAL*8 |
| CMPLX(Z[,Y]| преобразует в COMPLEX*| любой |COMPLEX*8|
| [4]| | | |
| DCMPLX(Z[,Y| преобразует в COMPLEX*| любой |COMPLEX*1|
| |
| Взятие целой части |
| AINT(общее)| целая часть от REAL | REAL*4 | REAL*4 |
| AINT(X) | целая часть от REAL*4 | REAL*8 | REAL*8 |
| | | REAL*4 | REAL*4 |
| DINT(X) | целая часть от REAL*8 | REAL*8 | REAL*8 |
| |
| Округление |
| ANINT(общее| округление REAL | REAL*4 | REAL*8 |
| | | REAL*8 | REAL*8 |
| ANINT(X) | округление REAL*4 | REAL*4 | REAL*4 |
| DNINT(X) | округление REAL*8 | REAL*8 | REAL*8 |
| |
| Округление в целое |
| NINT(общее)| округление с переводом| REAL*4 | INTEGER |
| | в целое | REAL*8 | INTEGER |
| NINT(X) | округление с переводом| REAL*4 | INTEGER |
| | в целое | | |
| IDNINT(X) | округление с переводом| REAL*8 | INTEGER |
| | в целое | | |
| |
| Абсолютная величина |
| ABS(общее) | абсолютная величина | любой | любой |
| IABS(I) | абсолютное целое | INTEGER | INTEGER |
| ABS (X) | абсолютное REAL*4 | REAL*4 | REAL*4 |
| DABS(X) | абсолютное REAL*8 | REAL*8 | REAL*8 |
| CABS(Z) | абсолютное COMPLEX | COMPLEX*8| REAL*4 |
| | | COMPLEX*1| REAL*8 |
| CDABC(Z) | абсолютное COMPLEX*16 | COMPLEX*1| REAL*8 |
| |
| Взятие остатка |
| MOD(общее) | остаток | INTEGER |INTEGER |
| | | REAL*4 | REAL*4 |
| MOD(I,Y) | целый остаток | INTEGER | INTEGER |
| AMOD(X,Y) | остаток REAL*4 | REAL*4 | REAL*4 |
| DMOD(X,Y) | остаток REAL*8 | REAL*8 | REAL*8 |
-----------------------------------------------------------
| |
| Передача знака |
| SIGN(общее)| передача знака | INTEGER | INTEGER |
| | | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| ISIGN(I,Y) | передача знака целого | INTEGER | INTEGER |
| SIGN(X,Y) | передача знака REAL*4 | REAL*4 | REAL*4 |
| DSIGN(X,Y) | передача знака REAL*8 | REAL*8 | REAL*8 |
| |
| Положительная разность [6] |
| DIM(общее) | положительная разность| INTEGER | INTEGER |
| | | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| IDIM(I,Y) | разность целых | INTEGER | INTEGER |
| DIM(X,Y) | разность REAL*4 | REAL*4 | REAL*4 |
| DDIM(X,Y) | разность REAL*8 | REAL*8 | REAL*8 |
| |
| Поиск наибольшей величины |
| MAX(общее) | максимум | INTEGER | INTEGER |
| | | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| MAX0(I,Y..)| целый максимум | INTEGER | INTEGER |
| AMAX1(X,Y.)| максимум REAL*4 | REAL*4 | REAL*4 |
| AMAX0(I,Y.)| максимум REAL*4 | INTEGER | REAL*4 |
| MAX1(X,Y..)| целый максимум | REAL*4 | INTEGER |
| DMAX1(X,Y.)| максимум REAL*8 | REAL*8 | REAL*8 |
| |
| Поиск наименьшей величины |
| MIN(общее) | минимум | INTEGER | INTEGER |
| | | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| MIN0(I,Y..)| целый минимум | INTEGER | INTEGER |
| AMIN1(X,Y.)| минимум REAL*4 | REAL*4 | REAL*4 |
| AMIN0(I,Y.)| минимум REAL*4 | INTEGER | REAL*4 |
| MIN1(X,Y..)| целый минимум | REAL*4 | INTEGER |
| DMIN1(X,Y.)| минимум REAL*8 | REAL*8 | REAL*8 |
| |
| Перевод в REAL*8 |
| DPROD(X,Y) | перевод в REAL*8 | REAL*4 | REAL*4 |
| |
| Мнимая часть комплексного числа |
| AIMAG(Z) | выделяет мнимую часть | COMPLEX*8| REAL*4 |
| | заданной пары в REAL*4| | |
| DIMAG(Z) | выделяет мнимую часть |COMPLEX*16| REAL*8 |
| | заданной пары в REAL*8| | |
| |
| Сопряжение комплексного числа |
| CONYG(Z) | сопряжение COMPLEX*8 |COMPLEX*8 |COMPLEX*8|
| DCONYG(Z) | сопряжение COMPLEX*16 |COMPLEX*16|COMPLEX*1|
-----------------------------------------------------------
| Квадратный корень |
| SQRT(общее)| квадратный корень | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| | |COMPLEX*8 |COMPLEX*8|
| | |COMPLEX*16|COMPLEX*1|
| SQRT(X) | квадратный корень REAL| REAL*4 | REAL*4 |
| DSQRT(X) | квадратный корень REAL| REAL*8 | REAL*8 |
| CSQRT(Z) | квадратный корень | COMPLEX*8|COMPLEX*8|
| | COMPLEX*8 | | |
| CDSQRT(Z) | квадратный корень |COMPLEX*16|COMPLEX*1|
| | COMPLEX*16 | | |
| Экспонента |
| EXP(общее) | экспонента | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| | | COMPLEX*8|COMPLEX*8|
| | |COMPLEX*16|COMPLEX*1|
| EXP(X) | REAL*4 e в степени | REAL*4 | REAL*4 |
| DEXP(X) | REAL*8 e в степени | REAL*8 | REAL*8 |
| CEXP(Z) | COMPLEX*8 e в степени | COMPLEX*8|COMPLEX*8|
| CDEXP(Z) | COMPLEX*16 e в степени|COMPLEX*16|COMPLEX*1|
| |
| Натуральный логарифм |
| LOG(общее) | натуральный логарифм | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| | | COMPLEX*8|COMPLEX*8|
| | | COMPLEX*1|COMPLEX*1|
| ALOG(X) | нат. логарифм REAL*4 | REAL*4 | REAL*4 |
| DLOG(X) | нат. логарифм REAL*8 | REAL*8 | REAL*8 |
| CLOG(Z) | нат. логарифм COMPLEX*| COMPLEX*8|COMPLEX*8|
| DLOG(Z) | нат. логарифм COMPLEX*|COMPLEX*16|COMPLEX*1|
| |
| Десятичный логарифм |
|LOG10(общее)| десятичный логарифм | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| ALOG10(X) | дес. логарифм REAL*4 | REAL*4 | REAL*4 |
| DLOG10(X) | дес. логарифм REAL*8 | REAL*8 | REAL*8 |
| |
| Синус |
| SIN(общее) | функция синус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| | | COMPLEX*8|COMPLEX*8|
| | |COMPLEX*16|COMPLEX*1|
| SIN(X) | REAL*4 синус | REAL*4 | REAL*4 |
| DSIN(X) | REAL*8 синус | REAL*8 | REAL*8 |
| CSIN(Z) | COMPLEX*8 синус | COMPLEX*8|COMPLEX*8|
| CDSIN(Z) | COMPLEX*16 синус |COMPLEX*16|COMPLEX*1|
-----------------------------------------------------------
| Косинус |
| COS(общее) | функция косинус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| | | COMPLEX*8|COMPLEX*8|
| | |COMPLEX*16|COMPLEX*1|
| COS(X) | REAL*4 косинус | REAL*4 | REAL*4 |
| DCOS(X) | REAL*8 косинус | REAL*8 | REAL*8 |
| CCOS(Z) | COMPLEX*8 косинус | COMPLEX*8|COMPLEX*8|
| CDCOS(Z) | COMPLEX*16 косинус |COMPLEX*16|COMPLEX*1|
| |
| Тангенс |
| TAN(общее) | функция тангенс | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| TAW(X) | REAL*4 тангенс | REAL*4 | REAL*4 |
| DTAN(X) | REAL*8 тангенс | REAL*8 | REAL*8 |
| Арксинус |
| ASIN(общее)| функция арксинус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| ASIN(X) | REAL*4 арксинус | REAL*4 | REAL*4 |
| DASIN(X) | REAL*8 арксинус | REAL*8 | REAL*8 |
| |
| Арккосинус |
| ACOS(общее)| функция арккосинус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| ACOS(X) | REAL*4 арккосинус | REAL*4 | REAL*4 |
| DACOS(X) | REAL*8 арккосинус | REAL*8 | REAL*8 |
| |
| Арктангенс |
| ATAN(общее)| функция арктангенс | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| ATAN(X) | REAL*4 арктангенс | REAL*4 | REAL*4 |
| DATAW(X) | REAL*8 арктангенс | REAL*8 | REAL*8 |
| ATAN2(X,Y) | REAL*4 арктангенс х/y | REAL*4 | REAL*4 |
| DATAN2(X,Y)| REAL*8 арктангенс x/y | REAL*8 | REAL*8 |
| |
| Гиперболический синус |
| SINH(общее)| гиперболический синус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| SINH(X) | REAL*4 гиперб. синус | REAL*4 | REAL*4 |
| DSINH(X) | REAL*8 гиперб. синус | REAL*8 | REAL*8 |
| |
| Гиперболический косинус |
| COSH(общее)| гиперболич. косинус | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| COSH(X) | REAL*4 гиперб. косинус| REAL*4 | REAL*4 |
| DCOSH(X) | REAL*8 гиперб. косинус| REAL*8 | REAL*8 |
-----------------------------------------------------------
| Гиперболический тангенс |
| TANH(общее)| гиперболич. тангенс | REAL*4 | REAL*4 |
| | | REAL*8 | REAL*8 |
| TANH(X) | REAL*4 гиперб. тангенс| REAL*4 | REAL*4 |
| DTANH(X) | REAL*8 гиперб. тангенс| REAL*8 | REAL*8 |
| |
| Лексически больше или равно [7] |
| LGE(C1,C2) | первый параметр больше| CHARACTER| LOGICAL |
| | или равен второму | | |
| |
| Лексически больше [7] |
| LGT(C1,C2) | первый параметр больше| CHARACTER| LOGICAL |
| | второго | | |
| |
| Лексически меньше или равно [7] |
| LLT(C1,C2) | первый параметр меньше| CHARACTER| LOGICAL |
| | или равен второму | | |
| |
| Лексически меньше [7] |
| LLT(C1,C2) | первый параметр меньше| CHARACTER| LOGICAL |
| | второго | | |
| Конец файла [8] |
| EOF(I) | целый конец файла | INTEGER | LOGICAL |
L============|=======================|==========|=========-
Таблица 5-1. Встроенные функции.
Примечания к таблице 5-1:
|
||||
![]() | Copyright © fortran-online.info, 2007 | ||||