SUBROUTINE four3_alt(data,isign) USE nrtype USE nr, ONLY : fourcol_3d IMPLICIT NONE COMPLEX(SPC), DIMENSION(:,:,:), INTENT(INOUT) :: data INTEGER(I4B), INTENT(IN) :: isign COMPLEX(SPC), DIMENSION(:,:,:), ALLOCATABLE :: dat2,dat3 call fourcol_3d(data,isign) allocate(dat2(size(data,2),size(data,3),size(data,1))) dat2=reshape(data,shape=shape(dat2),order=(/3,1,2/)) call fourcol_3d(dat2,isign) allocate(dat3(size(data,3),size(data,1),size(data,2))) dat3=reshape(dat2,shape=shape(dat3),order=(/3,1,2/)) deallocate(dat2) call fourcol_3d(dat3,isign) data=reshape(dat3,shape=shape(data),order=(/3,1,2/)) deallocate(dat3) END SUBROUTINE four3_alt