Store the elements of VECTOR in an array of higher rank.
Fortran 95 and later
Transformational function
RESULT = UNPACK(VECTOR, MASK, FIELD)
VECTOR | Shall be an array of any type and rank one. It shall have at least as many elements as MASK has TRUE values. |
MASK | Shall be an array of type LOGICAL . |
FIELD | Shall be of the same type as VECTOR and have the same shape as MASK. |
The resulting array corresponds to FIELD with TRUE
elements of MASK replaced by values from VECTOR in array element order.
PROGRAM test_unpack integer :: vector(2) = (/1,1/) logical :: mask(4) = (/ .TRUE., .FALSE., .FALSE., .TRUE. /) integer :: field(2,2) = 0, unity(2,2) ! result: unity matrix unity = unpack(vector, reshape(mask, (/2,2/)), field) END PROGRAM
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-7.2.0/gfortran/UNPACK.html