다음 코드 조각은 제대로 작동하지만 좀 더 효율적인 코드를 사용하려고합니다. 즉, 어쨌든 implied-do 루프를 사용하여 큰 배열을 처리 할 것입니다. 기본적으로 배열의 각 요소와 다음 순환 시프트 된 요소의 차이를 계산합니다. 의견 있으십니까 ? 이 경우 시프트는 정수 여야합니다.cshift가있는 포트란 배열
do i = 1, nb_imp-1
X_dist(:,i) = lattice_imp%x - cshift(lattice_imp%x, shift=i)
Y_dist(:,i) = lattice_imp%y - cshift(lattice_imp%y, shift=i)
Z_dist(:,i) = lattice_imp%z - cshift(lattice_imp%z, shift=i)
end do
lattice_imp%x
, y
, z
는 정수 배열이며, X_dist
각 원 순열 요소 사이의 차이를 포함한다.
정확하게 "더 나은 구문"이 무엇을 의미합니까? 더 짧습니까? 더 많은 런타임이 효율적입니까? 그것이 의미하는 바대로 서 있습니다. –
Fortran이 아니 었으므로 stackexchange 코드 검토를 권장하지만 Fortran은 그다지 공통적이지 않습니다. –
관련 유형을 나타내는 일부 선언은 어떻습니까? 코드에서 추론하는 데 어려움을 겪고 있습니다. –