f2py로 NumPy 배열을 Fortran 서브루틴에 넘긴다. 배열은 평소처럼 np.zeros((n, m))로 만들었으니 C 순서다. Fortran은 열이 연속으로 놓여 있길 원한다. f2py도 그걸 알고, 일반 입력 인자라면 맞는 순서로 원소 단위 복사를 아무 말 없이 해 준다. 경고는 없다. 돌아가고 숫자도 맞다. 다만 루프에서 호출할 때마다 행렬을 복사한다.
intent(inout)은 더 귀찮지만 더 정직하다. 거기서 복사본을 넘기면 바뀐 값이 복사본과 같이 사라질 테니, f2py는 제대로 배치된 배열을 요구하고 아니면 예외를 던진다. 처방은 만들 때 order='F'를 주거나, 루프 전에 np.asfortranarray를 한 번 부르는 것이다.
열 우선 순서라는 오래된 얘기다. 이번엔 두 언어가 만나는 자리에 있을 뿐이고, 값은 호출마다 복사로 치른다.
귀찮다. 차라리 경고라도 받았으면 좋겠다.