`IALL` — 배열 원소들에 비트 AND 축약
IALL — 배열 원소들에 비트 AND 축약
여러 정수의 비트 AND를 한 번에 묶어서 결과 하나를 얻고 싶을 때가 있어요. IALL은 배열의 원소들을 비트 AND로 축약(reduce)하는 내장 함수예요.
본문
시놉시스(Synopsis):
RESULT = IALL(ARRAY[, MASK])
RESULT = IALL(ARRAY, DIM[, MASK])
설명(Description): MASK의 해당 원소가 TRUE일 때, ARRAY의 원소를 DIM 차원을 따라 비트 AND로 축약해요.
종류(Class): 변환(transformational) 함수
인자(Arguments):
| 인자 | 설명 |
|---|---|
ARRAY |
INTEGER 또는 UNSIGNED 타입의 배열이어야 해요. |
DIM |
(선택) INTEGER 타입의 스칼라로, 1부터 n까지의 값이어야 해요(n은 ARRAY의 랭크). |
MASK |
(선택) LOGICAL 타입으로, 스칼라이거나 ARRAY와 같은 모양의 배열이어야 해요. |
반환값(Return value): 결과는 ARRAY와 같은 타입이에요. DIM이 없으면 ARRAY의 모든 원소를 비트 AND한 스칼라를 돌려줘요. DIM이 있으면 ARRAY에서 그 차원을 뺀, 랭크 n-1의 배열을 돌려줘요.
예제(Example):
PROGRAM test_iall
INTEGER(1) :: a(2)
a(1) = b'00100100'
a(2) = b'01101010'
! prints 00100000
PRINT '(b8.8)', IALL(a)
END PROGRAM
00100100과 01101010을 비트 단위로 AND하면 00100000이 남는 걸 확인할 수 있어요.
표준(Standard): Fortran 2008 이후, UNSIGNED에 대해서는 확장이에요.
더 알아보기
- 비트 OR 축약은
IANY, 비트 XOR 축약은IPARITY가 담당해요. - 두 값 사이의 비트 AND는
IAND가 해요.