![]() | |||||
|
|
Теория: Встроенные функции Fortran 90ВведениеЗдесь большое число встроенных функций Fortran 90 и 5 встроенных подпрограмм. Численные и математические подпрограммы рассмотрены очень кратко, поскольку они не заменены по сравнению с Fortran 77 и они могут быть известны. Раздел базируется на секции 13 стандарта ISO (1991), который содержит более формальное рассмотрение. Мы следуем представлению различных функций и подпрограмм стандарта, но более подробное рассмотрение мы увидим у Metcalf и Reid (1990, 1993). Необязательные параметры даны малыми буквами. Когда список параметров содержит более одного параметра, функции могут быть вызваны позиционным перечислением параметров или с ключевыми словами. Ключевые слова дожны быть использованы обязательно, если предыдущие аргументы не включены. Ключевые слова обычно это имена, которые даны ниже. Мы не можем снова давать все естественные ограничения на переменные, например, что ранг не может быть отрицательным. 1. Функции, которые определяют, есть ли некий аргумент в списке фактических параметров:Функция PRESENT(A) возвращает .TRUE. если аргумент A есть в вызывающем списке, .FALSE. в противном случае. 2. Числовые функции:Следующие доступные из Fortran 77: ABS, AIMAG, AINT, ANINT, CMPLX, CONJG, DBLE, DIM, DPROD, INT, MAX, MIN, MOD, NINT, REAL и SIGN. Дополнительно, CEILING, FLOOR и MODULO добавлены к Fortran 90. Только последняя трудна для объяснения, которое облегчается примером из ISO (1991) MOD (8,5) дает 3 MODULO (8,5) дает 3 MOD (-8,5) дает -3 MODULO (-8,5) дает 2 MOD (8,-5) дает 3 MODULO (8,-5) дает -2 MOD (-8,-5) дает -3 MODULO (-8,-5) дает v3 Следующие функции из Fortran 77 могут иметь параметры вида (kind-parameter) подобно AINT(A, kind), именно AINT, ANINT, CMPLX, INT, NINT и REAL. Исторический факт, что численные функции в Fortran 66 могли иметь специальные (различные) имена для различных точностей, и эти явные имена являются единственными, которые можно использовать, когда имя функции используется как аргумент. Полная таблица всех числовых функций следует ниже. Те имена, которые помечены символом звездочка *, не разрешены для использования в качестве аргумента. Некоторые функции, подобно INT и IFIX имеют два специальных имени, из которых оба могут быть использованы. С другой стороны некоторые функции могут не иметь никаких специальных имен. Ниже я использую C для значений комплексных с плавающей точкой, D для значений двойной точности с плавающей точкой, I для целых, и R для значений одинарной точности с плавающей точкой.
Функции Generic Specific Data type
name name Arg Res
Преобразование INT - I I
в integer * INT R I
* IFIX R I
* IDINT D I
(вещественной части) - C I
Преобразование REAL * REAL I R
в real * FLOAT I R
- R R
* SNGL D R
(вещественная часть) - C R
Преобразование DBLE - I D
в double - R D
precision - D D
(вещественная часть) - C D
Преобразование CMPLX - I (2I) C
в complex - R (2R) C
- D (2D) C
- C C
Усечение AINT AINT R R
DINT D D
Округление ANINT ANINT R R
DNINT D D
NINT NINT R I
IDNINT D I
Абсолютное ABS IABS I I
значение ABS R R
DABS D D
CABS C R
Остаток MOD MOD 2I I
AMOD 2R R
DMOD 2D D
MODULO - 2I I
- 2R R
- 2D D
Floor(дно) FLOOR - I I
- R R
- D D
Ceiling(потолок)CEILING - I I
- R R
- D D
Передача SIGN ISIGN 2I I
Знака SIGN 2R R
DSIGN 2D D
Положительная DIM IDIM 2I I
Разность DIM 2R R
DDIM 2D D
Внутреннее - DPROD R D
Произведение (Inner product)
Maximum MAX * MAX0 I I
* AMAX1 R R
* DMAX1 D D
- * AMAX0 I R
- * MAX1 R I
Minimum MIN * MIN0 I I
* AMIN1 R R
* DMIN1 D D
- * AMIN0 I R
- * MIN1 R I
Мнимая часть - AIMAG C R
Сопряженное - CONJG C C
Усечение v это в сторону нуля, INT(-3.7) получает -3, но округление v это корректировка, NINT(-3.7) получает -4. Новые функции FLOOR и CEILING усекают бесконечно в сторону минуса и плюса, соответственно. Функция CMPLX может иметь один или два аргумента, если имеются два аргумента, они должны быть одного и того же типа, но не COMPLEX. Функция MOD(X,Y) вычисляет X - INT(X/Y)*Y. Функция переноса знака SIGN(X,Y) берет знак второго аргумента и устанавливат его первому аргументу, ABS(X) если Y>=0 и -ABS(X) если Y<0. Положительная разница DIM это функция. Я не могу никогда использовать, но (X,Y) дает X-Y, если разница положительна, и 0 в другом случае. Внутреннее произведение DPROD с другой стороны это очень нужная функция, которая дает произведение двух чисел в одинарной точности как двойной точности. Оба выстрые и точные. Две функции MAX и MIN уникальны в том, что они могут иметь произвольное число аргументов, но не менее двух. Аргументы могут быть любого типа, но не разрешен тип COMPLEX. |
||||
![]() | Copyright © fortran-online.info, 2007 | ||||