Spec-Zone.ru › GNU Fortran 4

8.189 PACK — Pack an array into an array of rank one

Description:
Stores the elements of ARRAY in an array of rank one.

The beginning of the resulting array is made up of elements whose MASK equals TRUE. Afterwards, positions are filled with elements taken from VECTOR.

Standard:
Fortran 95 and later
Class:
Transformational function
Syntax:
RESULT = PACK(ARRAY, MASK[,VECTOR])
Arguments:
ARRAY Должен быть массивом любого типа.
MASK Должен быть массивом типа LOGICAL и того же размера, что и ARRAY. В качестве альтернативы может быть скалярным LOGICAL.
VECTOR (Необязательно) должен быть массивом того же типа, что и ARRAY, и ранга один. Если указан, количество элементов в VECTOR должно быть равно или больше количества истинных элементов в MASK. Если MASK является скалярным, количество элементов в VECTOR должно быть равно или больше количеству элементов в ARRAY.
Return value:
Результат — массив ранга один и того же типа, что и ARRAY. Если VECTOR присутствует, размер результата — размер VECTOR, иначе — количество TRUE значений в MASK.
Example:
Сбор элементов, отличных от нуля, из массива:
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
See also:
UNPACK

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

Spec-Zone.ru

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