ALL — MASK의 모든 값이 참인지 확인

ALL — MASK의 모든 값이 참인지 확인

논리 배열의 모든 요소가 참인지, 아니면 하나라도 거짓이 섞여 있는지 판단하고 싶을 때가 있어요. ALL은 논리 배열을 받아 모든 값이 참이면 참을, 하나라도 거짓이 있으면 거짓을 돌려주는 함수입니다. 특정 차원 방향으로만 검사할 수도 있어요.

출처: gfortran 공식 문서 - ALL

본문

시그니처(Synopsis)

RESULT = ALL(MASK [, DIM])

설명(Description)

ALL(MASK [, DIM])은 배열 MASK의 값들이 DIM 차원 방향으로 모두 참인지 판단해요.

분류(Class)

변환 함수(Transformational function)

인자(Arguments)

  • MASK: 인자의 유형이 LOGICAL이어야 하고, 스칼라가 아니어야 해요.
  • DIM(선택): 스칼라 정수로, 1부터 MASK의 랭크(차원 수) 사이의 값이어야 해요.

반환값

ALL(MASK)MASK와 같은 종류 매개변수의 스칼라 LOGICAL 값을 반환해요. DIM이 있으면 ALL(MASK, DIM)MASK의 랭크에서 1을 뺀 배열을 반환하고, 형태는 MASK에서 DIM 차원을 제외해서 결정됩니다.

(A) ALL(MASK)MASK의 모든 요소가 참이면 참이에요. MASK의 크기가 0이어도 참이고, 그 외에는 거짓입니다.

(B) MASK의 랭크가 1이면 ALL(MASK,DIM)ALL(MASK)와 같아요. 랭크가 1보다 크면 배열 부분에 ALL을 적용해서 구합니다.

예제

program test_all
  logical l
  l = all((/.true., .true., .true./))
  print *, l
  call section
contains
  subroutine section
    integer a(2,3), b(2,3)
    a = 1
    b = 1
    b(2,2) = 2
    print *, all(a .eq. b, 1)
    print *, all(a .eq. b, 2)
  end subroutine section
end program test_all

먼저 전부 참인 배열에 all을 적용해 참을 확인하고, b의 한 요소만 다른 ab를 차원 1과 2 방향으로 비교하는 예시예요. 차원 방향에 따라 결과 배열의 형태가 달라지는 걸 볼 수 있어요.

표준(Standard)

Fortran 90 이상