contents

2.5 part 4

code を Fortran で書く。

code


! 2.5.f90
! 2025/07/06
!
! r,  a rate
! n,  a nunber of years
! i,  an index stream
! x,  a cash flow stream
! pv, a present value

program ex2_5
    implicit none
    integer, parameter :: n = 20
    integer :: k
    integer, dimension(n) :: i
    real,    dimension(n) :: x
    real :: pv, r

    ! input
    r = 0.1
    i = (/(k, k = 0, n - 1)/)
    x = 500.0e3
    call   calc(r, i, x, pv)
    call output(n, r, i, x, pv)
stop

contains
subroutine calc(r, i, x, pv)
    implicit none
    real,    intent(in) :: r
    integer, intent(in), dimension(:) :: i
    real,    intent(in), dimension(:) :: x
    real,    intent(out) :: pv
    pv = sum(x / (1 + r) ** i)
    return
end subroutine 

subroutine output(n, r, i, x, pv)
    implicit none
    integer, intent(in) :: n
    real,    intent(in) :: r
    integer, intent(in), dimension(:) :: i
    real,    intent(in), dimension(:) :: x
    real,    intent(in) :: pv
    print *, '2.5.f90'
    print '(a5, i5)',   'n= ',  n
    print '(a5, f5.3)', 'r= ',  r
    print '(a5, 20i3)', 'i= ',  i
    print '(a5, 20i7)', 'x= ',  int(x)
    print '(a5, i10)',  'pv= ', int(pv)
    return
end subroutine
end program
! end of file

output

 2.5.f90
  n=    20
  r= 0.100
  i=   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
  x=  500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000
 pv=    4682459

history

2023-01-14 create.
2025-07-06 revise.