ANY — 논리 배열에 참이 하나라도 있는지 확인하기
ANY — 논리 배열에 참이 하나라도 있는지 확인하기
논리 배열을 다루다 보면 "이 조건을 만족하는 값이 하나라도 있나?"를 물어볼 때가 많아요. ANY는 배열의 요소 중 .TRUE.가 하나라도 있는지 검사하는 내장 함수예요. DIM을 주면 특정 축(차원)을 따라서도 검사할 수 있답니다.
본문
시그니처
RESULT = ANY(MASK [, DIM])
설명
ANY(MASK [, DIM])는 논리 배열 MASK에서 차원 DIM을 따라 값 중 .TRUE.가 하나라도 있는지 판단해요.
클래스
변환 함수(Transformational function)예요.
인자
- MASK — 인자의 타입은
LOGICAL이고 스칼라이면 안 돼요. - DIM (선택) —
DIM은 스칼라 정수이며, 그 값은 1과MASK의 랭크(rank) 사이에 있어야 해요.
반환값
ANY(MASK)는 kind 타입 매개변수가 MASK와 같은 LOGICAL 타입의 스칼라 값을 돌려줘요.
DIM이 주어지면 ANY(MASK, DIM)은 MASK의 랭크에서 1을 뺀 랭크를 가진 배열을 반환해요. 모양(shape)은 MASK의 모양에서 DIM 차원이 제거된 형태로 결정돼요.
- (A)
MASK의 어떤 요소가 참(true)이면ANY(MASK)는 참이고, 그렇지 않으면 거짓이에요.MASK의 크기가 0이라도 거짓을 돌려줘요. - (B)
MASK의 랭크가 1이면ANY(MASK, DIM)은ANY(MASK)와 같아요. 랭크가 1보다 크면ANY(MASK, DIM)은 배열의 각 구간(section)에ANY를 적용해서 결정돼요.
예제
program test_any
logical l
l = any((/.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 *, any(a .eq. b, 1)
print *, any(a .eq. b, 2)
end subroutine section
end program test_any
표준
Fortran 90 이후부터 지원돼요.
더 알아보기
- "모든 요소가 참인가"를 확인하려면 짝꿍 함수
ALL을 써요. - GNU Fortran 내장 프로시저 전체 목록은 Intrinsic Procedures에서 확인할 수 있어요.