Spec-Zone.ru › GNU Fortran 5

9.203 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

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

Spec-Zone.ru

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