Справочное руководство по языку Fortran 95
Глава 2.Алфавитный справочник
Функция COSH
Описание Функция COUNT
Описание
integer, dimension (2,3) :: a, b integer, dimension (2) :: c integer, dimension (3) :: d integer :: 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 = count(a==b) ! e получает значение 3 d = count(a==b, 1)! d получает значение 2,1,0 c = count(a==b, 2)! c получает значение 2,1 Подпрограмма CPU_TIME
Описание Функция CSHIFT
Пример call cpu_time(start_time) x = cos(2.0) call cpu_time(end_time) cos_time = end_time - start_time ! время на вычисление и помещение в память cosine (2.0)Функция CSHIFT Описание Циклический сдвиг всех секций ранга один в массиве. Элементы, выдвинутые с одного конца, вдвигаются с другого. Различные секции могут сдвигаться на разные количества и в разных направлениях с помощью массивного (array-valued) сдвига. Syntax CSHIFT (array, shift, dim) Обязательные аргументы array может иметь любой тип. Он не может быть скаляром. shift должен иметь тип INTEGER и быть скаляром, если array имеет ранг 1; в остальных случаях он должен быть скаляром или иметь ранг n-1 и форму (d1, d2, ..., ddim-1, ddim+1, ..., dn) , где (d1, d2, ..., dn) есть форма массива. Необязательный аргумент dim должен быть скаляром типа INTEGER со значением в пределах от 1 до n , где n есть ранг массива array. Если dim опущен, он предполагается присутствующим и имеющим значение 1. Результат Результат имеет тот же тип, разновидность и форму, что и array.
Если array имеет ранг один, значение результата есть значение array
с циклически сдвинутыми элементами. Сдвиг на n имеет значением вектор
с элементами array(1 + MODULO(i + n - SIZE(array))) на месте i. Пример integer, dimension (2,3) :: a, b integer, dimension (3) :: c, d integer :: e a = reshape((/1,2,3,4,5,6/), (/2,3/)) ! представляет |1 3 5| |2 4 6| c = (/1,2,3/) b = cshift(a,1) ! b получает значение |2 4 6| ! |1 3 5| b = cshift(a,-1,2)! b получает значение |3 5 1| ! |4 6 2| b = cshift(a,c,1) ! b получает значение |2 3 5| ! |1 4 6| d = cshift(c,2) ! c получает значение |3 1 2| Оператор CYCLEОператор CYCLE прекращает выполнение очередной итерации в операторе DO loop. Syntax CYCLE [ do-construct-name ] где: do-construct-name есть имя конструкта DO, который содержит оператор CYCLE. Если do-construct-name опущено, считается, что do-construct-name относилось к самому внутреннему конструкту DO, содержащему оператор CYCLE. Пример outer: do i=1, 10 inner: do j=1, 10 if (i>a) cycle outer if (j>b) cycle ! к циклу inner ... enddo inner enddo outer Оператор DATAОператор DATA обеспечивает начальные значения для переменных. Syntax DATA data-stmt-set [ [ , ] data-stmt-set ] ... Здесь: data-stmt-set есть object-list / value-list / object-list есть список через запятую имен переменных или implied-dos. value-list есть список через запятую [repeat *] data-constant. repeat есть целая константа типа INTEGER. data-constant есть скалярная константа (literal или именованная) или конструктор структуры. implied-do есть (implied-do-object-list , implied-do-var = expr, expr[, expr]). implied-do-object-list есть список через запятую элементов массива, скалярных компрнент структуры или implied-dos. implied-do-var есть скалярная переменная типа INTEGER. expr есть скалярное выражение типа INTEGER.Замечания
object-list расширяется в последовательность скалярных переменных.
Массив,простое имя которого стоит в object-list, эквивалентен полной
последовательности его элементов в стандартном порядке. Секция массива
эквивалентна последовательности ее элементов в порядке элементов в масиве.
implied-do расширяется в последовательность элементов массива и компонент
структуры под управлением implied-do-var, как в конструкте DO.
value-list развертывается в последовательность скалярных постоянных значений.
Каждое такое значение должно быть константой, которая или определена ранее
или сделана доступной использованием ассоциации или хост-ассоциации. repeat показывает, сколько раз следующая константа должна быть включена в последовательность; отсутствие repeat имеет эффект повторения один раз.
Расширенные последовательность скалярных переменных и значений констант
находятся во взаимно однозначном соответствии. Каждая постоянная определяет
начальное значение соответствующей переменной. Длины обеих расширенных
последовательностей должны совпадать. Никакая переменная или ее часть не может
инициализироваться в программе более одного раза.
Переменная, имя которой включено в object-list, не должна:
В элементе массива или скалярной компоненте структуры, которые стоят в
implied-do-object-list, каждый индекс должен быть выражением, в котором
первичныые составляющие есть или постоянные или implied-do-vars содержащих
implied-dos, и все операции должны быть встроенными.
expr должно сдержать в качестве первичных только константы или
implied-do-vars используемых implied-dos, а все операции должны быть
встроенными. Значения констант должны быть совместимы с соответствующими им
переменными по правилам встроенного присваивания, которые получают начальные
значения по тем же правилам встроенного присваивания. real :: a integer, dimension (-3:3) :: smallarray integer, dimension (10000) :: bigarray data a /3.78/, smallarray /7 * 1/ ! присваивает a значение 3.78 и 1 каждому ! элементу в smallarray data (bigarray(i), i=1,10000,2) /5000*6/ ! присваивает 6 каждому элементу ! с нечетным индексом Подпрограмма DATE_AND_TIMEДата и значение real-time clock. Syntax DATE_AND_TIME (date, time, zone, values) Необязательные аргументы
date должна быть скаляром типа default CHARACTER и должна иметь длину по
крайней мере восемь, чтобы получить полное значение. Она используется как
INTENT (OUT) argument. Ее самые левые восемь символов устанавливаются
в значение вида ccггммдд, где сс означают столетия, гг -- годы в столетии
мм -- месяц года и дд -- день месяца. Если дата недоступна, выдаются пробелы.
time должна быть скаляром типа default CHARACTER и должна иметь длину
по крайней мере десять, чтобы получить полное значение. Это тоже аргумент
INTENT (OUT). Его левые 10 символов устанавливаются в значение вида
ччммсс.ссс, где чч есть часы дня, мм есть минуты, сс.ссс означают секунды и
миллисекунды. Если часы недоступны, time заполняется пробелами.
zone должна быть скаляром типа default CHARACTER и иметь длину по крайней
мере пять для получения полного значения. Это тоже аргумент INTENT (OUT).
Его символы устанавливаются по форме +-ччмм, где чч и мм есть разница во
времени по отношению Coordinated Universal Time (UTC, известное также как
Среднее Гринвичское время ) в часах и минутах.
Если часы недоступны, поле времени заполняется пробелами. Чтобы воспользоваться
аргументом zone, нужно предварительно установить значение в переменную
окружения TZ: TZ=ZZZ[+/-]d[d][LLL]Здесь ZZZ есть трехсимвольная цепочка, представляющая имя текущей временной зоны;
[+/-]d[d] есть требуемое поле, содержащее число из одной или двух цифр с
возможным знаком, представляющее разность между локальным временем и UTC в
часах (отрицательные числа соответствуют зонам к востоку от UTC);
Например, "TZ=PST-8PDT" должно использоваться на западном побережье US в
течение той части года, когда действует декретное время, и "TZ=PST-8" в
остальное время года. Если переменная окружения TZ не установлена или
установлена с неверным форматом, zone будет заполняться пробелами.
values должен иметь тип INTEGER по умолчанию и ранг 1. Это аргумент есть
INTENT (OUT). Его размер должен быть по крайней мере восемь. Значения,
возвращаемые в values, таковы:
values (1) содержит год (например, 1990) или -huge(0), если дата недоступна. ! вызвана в Incline Village, NV on February 3, 1993 ! в момент 10:41:04.1 integer :: dt(8) character (len=10) :: time, date, zone call date_and_time (date, time, zone, dt) ! date получает значение "19930203" ! time получает значение "104104.100" ! zone получает значение "-800" ! dt получает значение : 1993,2,3, ! -480,10,41,4,100. Функция DBLEКонвертирует в тип REAL двойной точности. Syntax DBLE (a) Аргумент a должно иметь тип INTEGER, REAL или COMPLEX. Результат Результат имеет тип REAL двойной точности. Его значение есть представление с двойной точностью значения a. Если a имеет тип COMPLEX, результат представляет с двойной точностью его вещественную часть. Пример double precision d d = dble (1) ! d получает значение 1.00000000000000 Оператор DEALLOCATE
Описание
Если необязательное STAT= присутствует и оператор DEALLOCATE успешно
выполнен, stat-variable получает значение 0. Если STAT= is присутствует, а
оператор DEALLOCATE обнаружил ошибку, stat-variable получает значением
номер динамического сообщения об ошибке. Если ошибка произошла при
выполнении оператора DEALLOCATE без STAT= specifier, то выполнение программы
прекращается.
Выполнение Deallocate для размещаемого массива, которого в данный момент в
памяти нет, или для указателя, который деассоциирован или назначения которого
нет в памяти, приводит к ошибке в операторе DEALLOCATE.
Если указатель в данный момент ассоциирован с размещаемым массивом, к нему
нельзя применять deallocat.
Деаллокация размещаемого массива или указателя с атрибутом TARGET приводит
к тому, что статус ассоциации всякого указателя, ассоциированного с ним,
становится неопределенным. deallocate (a, b, stat=s) ! приводит к деаллокации a b ! при успехе ! s iполучает значением 0 Функция DIGITSКоличество значащих двоичных цифр. Syntax DIGITS (x) Аргумент x должен иметь тип INTEGER или REAL. Он может быть скаляром или массивом. Результат Имеет тип default INTEGER. Его значение есть количество значащих двоичных цифр в x. Пример real :: r integer :: i i = digits (r) ! i получает значение 24 Функция DIM
Описание z = dim(1.1, 0.8) ! z получает значение 0.3 z = dim(0.8, 1.1) ! z получает значение 0.0 Оператор DIMENSION
Описание DIMENSION [ :: ] array-name (array-spec) [ , array-name (array-spec) ] ... Здесь: array-name есть имя массива. array-spec есть explicit-shape-specs или assumed-shape-specs или deferred-shape-specs или assumed-size-spec. explicit-shape-specs есть список через запятую выражений [lower-bound : ] upper-bound, которые специфицируют форму и границы массивов явной формы. assumed-shape-specs есть список через запятую [lower-bound] : , что вместе с измерениями соответствующего фактического аргумента определяет форму и границы массива предполагаемой формы. deferred-shape-specs есть список через запятую двоеточий, которые указывают ранг массива с отложенной формой. assumed-size-spec есть [ explicit-shape-specs, ] [ lower-bound : ] * assumed-size-spec указывает форму фиктивного аргумента-массива, размер которого предполагается согласным фактическому аргументу-массиву. lower-bound есть скалярное INTEGER выражение, значение которого можно вычислить при входе в программную единицу и которое указывает нижнюю границу данного измерения массива. upper-bound есть скалярное INTEGER выражение, которое можно вычислить при входе в программную единицу и которое указывает верхнюю границу данного измерения массива.Пример dimension a(3,2,1) ! a есть массив 3x2x1 dimension b(-3:3) ! b есть 7-елементный вектор с ! нижней границей -3 dimension c(:,:,:) ! c есть массив с предполагаемой формой или ! отложенной формой ! ранга 3 dimension d(*) ! d есть массив предполагаемого размера Оператор DLL_EXPORT
Описание function half(x) implicit none integer :: half dll_export half half = x/2 return end function half Оператор DLL_IMPORT
Описание program main implicit none integer :: foo, i dll_import foo i = half(i) stop end program main |
<<< | Оглавление | Страницы: 9 10 | >>> |