CSHIFT — 배열 요소의 원형 이동

CSHIFT — 배열 요소의 원형 이동

배열의 요소들을 한쪽 끝에서 밀어내고 반대쪽 끝으로 다시 집어넣는, '원형(circular)' 이동이 필요할 때가 있어요. CSHIFT는 배열 요소들을 지정한 차원을 따라 원형으로 이동시키는 변환 함수예요.

출처: gfortran 공식 문서 - CSHIFT

본문

RESULT = CSHIFT(ARRAY, SHIFT [, DIM])

설명(Description)

CSHIFT(ARRAY, SHIFT [, DIM])DIM 차원을 따라 ARRAY의 요소를 원형으로 이동시켜요. DIM이 생략되면 1로 간주돼요. DIM1 ≤ DIM ≤ n 범위의 INTEGER 스칼라인데, 여기서 nARRAY의 랭크(rank)예요. ARRAY의 랭크가 1이면 모든 요소를 SHIFT만큼 이동해요. 랭크가 1보다 크면 주어진 차원을 따른 모든 완전한 1차원 구간(section)이 이동돼요. 각 1차원 구간의 한쪽 끝으로 밀려난 요소는 반대쪽 끝에서 다시 들어와요.

분류(Class)

변환 함수(Transformational function)

인자(Arguments)

  • ARRAY — 모든 타입의 배열이어야 해요.
  • SHIFT — 타입이 INTEGER여야 해요.
  • DIM — 타입이 INTEGER여야 해요.

참고(Notes)

ARRAYUNSIGNED일 수도 있어요.

반환값(Return value)

ARRAY 인자와 같은 타입·랭크의 배열을 반환해요.

예제

program test_cshift
    integer, dimension(3,3) :: a
    a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))
    print '(3i3)', a(1,:)
    print '(3i3)', a(2,:)
    print '(3i3)', a(3,:)    
    a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)
    print *
    print '(3i3)', a(1,:)
    print '(3i3)', a(2,:)
    print '(3i3)', a(3,:)
end program test_cshift

2차원 배열에서 DIM=2(열 방향)를 따라 각 행을 다른 크기만큼 원형 이동한 결과를 확인해 볼 수 있어요.

표준(Standard)

Fortran 90 이상