`IALL` — 배열 원소들에 비트 AND 축약

IALL — 배열 원소들에 비트 AND 축약

여러 정수의 비트 AND를 한 번에 묶어서 결과 하나를 얻고 싶을 때가 있어요. IALL은 배열의 원소들을 비트 AND로 축약(reduce)하는 내장 함수예요.

출처: IALL (The GNU Fortran Compiler)

본문

시놉시스(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까지의 값이어야 해요(nARRAY의 랭크).
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

0010010001101010을 비트 단위로 AND하면 00100000이 남는 걸 확인할 수 있어요.

표준(Standard): Fortran 2008 이후, UNSIGNED에 대해서는 확장이에요.

더 알아보기

  • 비트 OR 축약은 IANY, 비트 XOR 축약은 IPARITY가 담당해요.
  • 두 값 사이의 비트 AND는 IAND가 해요.