Справочное руководство по языку Fortran 95
перевод Балуева А. Н.
Оглавление
В начало страницы
Описание
Абсолютное значение.
Синтаксис
ABS (a)
Аргументы
a должно быть типа REAL, INTEGER или COMPLEX.
Результат
Типа INTEGER или REAL, результат того же типа, как и значение |a|;
если a есть COMPLEX со значением (x,y), результат есть REAL в представлении
x2 y2
Пример
x = abs(-4.2) ! x получает значение 4.2
В начало страницы
Description
Символ в указанной позиции упорядоченной последовательности ASCII.
Syntax
ACHAR (i)
Arguments
i должно иметь тип INTEGER.
Result
CHARACTER длины один, стоящий в позиции (i) упорядоченной
последовательности ASCII.
Example
c = achar(65) ! c получает значение 'A'
В начало страницы
Description
Arccosine.
Syntax
ACOS (x)
Arguments
x должен иметь тип REAL и лежать в пределах -1 x 1 .
Result
Типа REAL, выраженная в радианах величина arccosine(x).
Example
r = acos(.5) ! r получает значение 1.04720
В начало страницы
Description
Выровнять по левому краю, убрать ведущие пробелы и вставить
пробелы в конце.
В начало страницы
Syntax
ADJUSTL (string)
Arguments
string должна иметь тип HARACTER.
Result
Типа CHARACTER той же длины и разновидности как string.
Значение результата совпадает со string, за исключением того, что
все ведущие пробелы переносятся в конец.
Example
adjusted = adjustl(' string')
! adjusted получает значение 'string'
В начало страницы
Description
Мнимая часть комплексного числа.
Syntax
AIMAG (z)
Arguments
z должен иметь тип COMPLEX.
Result
REAL, той же разновидности, что и z. Если z есть (x,y),
то результат имеет значение y.
Example
r = aimag(-4.2,5.1) ! r получает значение 5.1
В начало страницы
Description
Усечение до целого.
Syntax
AINT (a, kind)
Обязательные аргументы
a должно иметь тип REAL.
Необязательные аргументы
kind должен быть скалярным целым выражением, которое
можно вычислить при компиляции.
Result
Значение типа REAL той же разновидности, что указана в kind,
если присутствует, иначе той же разновидности, что и a.
Результат равен значению a без дробной части.
Example
r = aint(-7.32,2) ! r получает значение -7.0
! разновидности 2
В начало страницы
Description
Определяет, все ли значения маски по указанному измерению
имеют значение true.
Syntax
ALL (mask, dim)
Обязательный аргумент
mask должна быть типа LOGICAL. Она не должна быть скаляром.
Необязательный аргумент
dim должна быть скаляром типа INTEGER со значением в пределах
1 x n , где n есть ранг маски mask. Соответствующий фактический
аргумент не может быть необязательным фиктивным аргументом.
Result
Результат имеет тип LOGICAL той же разновидности, что и MASK. Его
значение и ранг вычисляются так:
- Если dim отсутствует или mask имеет ранг один, результат есть
скаляр. Он имеет значение true, если все элементы маски есть true.
- Если dim присутствует или mask имеет ранг два или больше, то
результат есть массив ранга n-1 и формы
(d1, d2, ..., ddim - 1, ddim + 1, ..., dn) где (d1, d2, ..., dn)
есть форма mask и n есть ранг mask. Результат имеет значение true
для каждого соответствующего вектора в mask, который оценивается как
true для всех элементов в этом векторе.
Example
integer, dimension (2,3) :: a, b
logical, dimension (2) :: c
logical, dimension (3) :: d
logical :: e
a = reshape((/1,2,3,4,5,6/), (/2,3/))
! представляет |1 3 5|
|2 4 6|
b = reshape((/1,2,3,5,6,4/), (/2,3/))
! представляет |1 3 6|
|2 5 4|
e = all(a==b) ! e получает значение false
d = all(a==b, 1)! d получает значение true,false,
! false
c = all(a==b, 2)! c получает значение false,false
В начало страницы
Description
Оператор ALLOCATABLE объявляет размещаемые массивы. Форма размещаемого
массива определяется, когда для него оператор ALLOCATE отводит место в
памяти.
Syntax
ALLOCATABLE [ :: ] array-name [( deferred-shape )] [, array-name ( deferred-
shape )] ...
Где:
array-name есть имя массива.
deferred-shape есть : [, : ] ... где количество столбцов
равно рангу array-name.
Примечание
Если DIMENSION массива array-name указано где-нибудь в
единице видимости, она должна быть указана в виде
deferred-shape.
Example
integer :: a, b, c(:,:,:) ! указан ранг c
dimension b(:,:) ! указан ранг b
allocatable a(:), b, c !указан ранг a ,
! a,b, и c размещаемые
allocate (a(2), b(3,-1:1), c(10,10,10))
! указана форма,
! память отведена ...
deallocate (a,b,c) ! память освобождена
В начало страницы
Description
Для размещаемого массива оператор ALLOCATE определяет границы каждого
измерения и отводит память для массива .
Для указателя оператор ALLOCATE создает объект, который неявно имеет атрибут
TARGET и ассоциирует его с назначением.
Syntax
ALLOCATE (allocation-list [, STAT = stat-variable ])
Где:
allocation-list есть список разделенных запятыми указателей или размещаемых
массивов и, для каждого размещаемого массива, список границ измерений
( [ lower-bound : ] upper-bound [, ... ] ) .
Upper-bound и lower-bound есть скалярные выражения типа INTEGER.
stat-variable есть скалярная переменная типа INTEGER.
Замечания
Если необязательное STAT= присутствует и оператор ALLOCATE успешно выполняется,
переменная stat-variable получает значение 0. Если STAT= присутствует, а
оператор ALLOCATE терпит неудачу, stat-variable получает значение номера
сообщения о динамической ошибке.
Если ошибка обнаруживается при выполнении оператора ALLOCATE, который не
имеет STAT= specifier, то выполнение программы прекращается.
Для размещаемого массива:
- Последующее переопределение нижней и верхней границы не влияет на границы
массива.
- Если нижняя граница опущена, по умолчанию принимается 1.
- если верхняя граница меньше нижней, экстент этого измерения есть ноль
и массив имеет размер 0.
- Размещаемый массив может иметь тип CHARACTER с длиной ноль.
- Повторное размещение в памяти уже размещенного там массива приводит к
ошибке при выполнении оператора ALLOCATE.
- Встроенная функция ALLOCATED может быть использована для определения того,
размещен ли в настоящее время в памяти размещаемый массив.
Для указателя:
- Если оператор ALLOCATE применяется к указателю, который в данный момент
ассоциирован с назначением, создается новое назначение и указатель
ассоциируется с ним.
- Встроенная функция ASSOCIATED может использоваться для определения того,
ассоциирован ли в данный момент указатель с назначением.
- Функция с результатом типа pointer может побуждать указатель к ассоциации
или дизассоциации.
Пример
logical :: l,m
integer, pointer :: i
integer, allocatable, dimension (:,:) :: j
l = associated (i) ! l is assigned the value false
m = allocated (j) ! m получает значение false
allocate (j(4,-2:3))! shape of J defined,
! отводится память
allocate (i) ! i указывает на безымянное назначение
l = associated (i) ! l получает значение
m = allocated (j) ! m получает значение true
...
deallocate (i,j) ! память освобождается
В начало страницы
Description
Указывает, размещен ли размещаемый массив.
Syntax
ALLOCATED (array)
Arguments
array должен означать размещаемый массив.
Result
Результат есть скаляр по умолчанию типа LOGICAL. Он имеет
значение true, если массив в настоящий момент размещен, и
false в противном случае. Результат не определен, если статус
размещения массива не определен.
Example
integer, allocatable :: i(:,:)
allocate (i(2,3))
l = allocated (i) ! l получает значение true
В начало страницы
Description
REAL-представление ближайшего целого числа.
Syntax
ANINT (a, kind)
Обязательный аргумент
a должен иметь тип REAL.
Необязательный аргумент
kind должен быть скалярным INTEGER-выражением, которое можно
вычислить во время компиляции.
Result
Результат имеет тип REAL. Если kind присутствует, он указывает
разновидность; иначе принимается разновидность a. Если a > 0,
результат имеет значение INT(a + 0.5); если a есть 0 ,
результат есть INT(a - 0.5).
Example
x = anint (7.73) ! x получает значение 8.0
В начало страницы
Description:
Определяет, есть ли хоть одно значение true в маске вдоль данного
измерения.
Syntax
ANY (mask, dim)
Обязательный аргумент
mask должен иметь тип LOGICAL. Он не может быть скаляром.
Необязательный аргумент
dim должен быть скаляр типа INTEGER со значением в пределах 1 x n ,
где n есть ранг mask. Соответствующий фактический аргумент не должен
быть необязательным фиктивным аргументом.
Result
Резулльтат имеет тип LOGICAL той же разновидности, что и mask.
Его значение и ранг вычисляются следующим образом:
- Если dim отсутствует или mask имеет ранг один, то результат
есть скаляр. Он имеет значение true, если какой-нибудь элемент mask
есть true.
- Если dim присутствует или mask имеет ранг два или больше, то
результат есть массив ранга n-1 и формы
(d1, d2, ..., ddim - 1, ddim + 1, ..., dn), где (d1, d2, ..., dn)
есть форма маски и n есть ранг mask. Результат имеет значение true
для каждого соответствующего вектора в mask, который считается true
для любого элемента в этом векторе.
Example
integer, dimension (2,3) :: a, b
logical, dimension (2) :: c
logical, dimension (3) :: d
logical :: e
a = reshape((/1,2,3,4,5,6/), (/2,3/))
! представляет |1 3 5|
|2 4 6|
b = reshape((/1,2,3,5,6,4/), (/2,3/))
! представляет |1 3 6|
|2 5 4|
e = any(a==b) ! e получает значение true
d = any(a==b, 1)! d получает значение true, true,
! false
c = any(a==b, 2)! c получает значение true, true
В начало страницы
Description
Выполнение арифметического IF сводится к вычислению выражения, определяющего
передачу управления. Оператор-преемник определяется первой, второй или
третьей меткой в зависимости от того, оказалось ли значение упомянутого
выражения меньше нуля, равно нулю или больше нуля соответственно.
Syntax
IF (expr) label, label, label
где:
expr есть скалярное численное выражение.
label есть метка оператора.
Замечания
Каждая метка должна быть меткой оператора в той же самой единице видимости,
где находится оператор арифметического IF. expr не может иметь тип COMPLEX.
Одна и также метка может фигурировать в арифметическом IF более одного
раза.
Example
if (b) 10,20,30 ! goto 10 if b<0
! goto 20 if b=0
! goto 30 if b>0
|