Spec-Zone.ru › GNU Fortran 9

9.213 PACK — Упаковка массива в массив ранга один

Описание:

Хранит элементы массива ARRAY в массиве ранга один.

Начало результирующего массива состоит из элементов, для которых MASK равно TRUE. Последующие позиции заполняются элементами из VECTOR.

Стандарт:

Fortran 95 и более поздние версии

Класс:

Функция преобразования

Синтаксис:

RESULT = PACK(ARRAY, MASK[,VECTOR])

Аргументы:
ARRAY Должен быть массивом любого типа.
MASK Должен быть массивом типа LOGICAL и такого же размера, как ARRAY. В качестве альтернативы, он может быть LOGICAL скаляром.
VECTOR (Необязательно) должен быть массивом того же типа, что и ARRAY, и ранга один. Если присутствует, количество элементов в VECTOR должно быть равно или больше числа истинного значения в MASK. Если MASK является скаляром, количество элементов в VECTOR должно быть равно или больше количества элементов в ARRAY.
Значение результата:

Результат — массив ранга один и того же типа, что и ARRAY. Если VECTOR присутствует, размер результата — размер VECTOR, иначе — количество TRUE значений в MASK.

Пример:

Сборка элементов, отличных от нуля, из массива:

PROGRAM test_pack_1
  INTEGER :: m(6)
  m = (/ 1, 0, 0, 0, 5, 0 /)
  WRITE(*, FMT="(6(I0, ' '))") pack(m, m /= 0)  ! "1 5"
END PROGRAM

Сборка элементов, отличных от нуля, из массива и добавление элементов из VECTOR:

PROGRAM test_pack_2
  INTEGER :: m(4)
  m = (/ 1, 0, 0, 2 /)
  WRITE(*, FMT="(4(I0, ' '))") pack(m, m /= 0, (/ 0, 0, 3, 4 /))  ! "1 2 3 4"
END PROGRAM
См. также:

UNPACK

Далее: PARITY, Предыдущее: OR, Наверх: Встроенные процедуры [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gfortran/PACK.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API