! 2.10b1.f90 ! $Id: 2.10b1.f90 1.2 2019/09/16 00:11:43 s Exp $ ! program ex2_10b1 implicit none ! x[i] : cash flow(i-th year) ! r : interest rate ! df[i] : discount factor(i-th year) ! pv[i] : present value(i-th year) ! sumpv : present value character(100) :: fmt1, fmt2, fmt3 integer :: n, i integer :: j(0:100) real(8) :: r, sumpv real(8) :: df(0:100), pv(0:100), x(0:100) ! input r = 0.2 n = 5 x(0:n) = (/-1000d3, 840d3, 707500d0, 387500d0, 177500d0, 50d3/) j(0:n) = (/0, 1, 2, 3, 4, 5/) ! calculate df(0:n) = 1 / (1 + r) ** j(0:n) pv(0:n) = x(0:n) * df(0:n) sumpv = sum(pv(0:n)) ! output fmt1 = '(a10, a10, a15, a15)' fmt2 = '(i10, i10, f15.3, i15)' fmt3 = '(a35, i15)' print *, '2.10b1.f90' print fmt1, 'i', 'x', '1/(1+r)^i', 'x/(1+r)^i' call keisen(50) print fmt2, (i, nint(x(i)), df(i), nint(pv(i)), i = 0, n) call keisen(50) print fmt3, 'present value=', nint(sumpv) stop contains subroutine keisen(n) implicit none integer :: i,n print *, ('-', i = 1, n) end subroutine keisen end program ex2_10b1 ! end