Files
Victor Eijkhout b13edff125 initial upload
2022-11-13 14:03:01 -06:00

55 lines
1.2 KiB
Fortran

!****************************************************************
!***
!*** This file belongs with the course
!*** Introduction to Scientific Programming in C++/Fortran2003
!*** copyright 2017-9 Victor Eijkhout eijkhout@tacc.utexas.edu
!***
!*** arraypass1d.F90 : passing a 1d array
!***
!****************************************************************
Module ArrayFunction
contains
!!codesnippet fpass1dsubr
real(8) function arraysum(x)
implicit none
real(8),intent(in),dimension(:) :: x
real(8) :: tmp
integer i
tmp = 0.
do i=1,size(x)
tmp = tmp+x(i)
end do
arraysum = tmp
end function arraysum
!!codesnippet end
End Module ArrayFunction
#define N 10
Program ArrayComputations1D
use ArrayFunction
implicit none
integer :: i
real(8) :: sx,sy
!!codesnippet fpass1dmain
real(8),dimension(:) :: x(N) &
= [ (i,i=1,N) ]
real(8),dimension(:) :: y(0:N-1) &
= [ (i,i=1,N) ]
sx = arraysum(x)
sy = arraysum(y)
print '("Sum of one-based array:",/,4x,f6.3)', sx
print '("Sum of zero-based array:",/,4x,f6.3)', sy
!!codesnippet end
End Program ArrayComputations1D