c From: "COMPUTATIONAL PHYSICS, 2nd Ed"
c by RH Landau, MJ Paez, and CC Bordeianu
c Copyright Wiley-VCH, 2007.
c Electronic Materials copyright: R Landau, Oregon State Univ, 2007;
c MJ Paez, Univ Antioquia, 2007; and CC Bordeianu, Univ Bucharest, 2007.
c Support by National Science Foundation
c
c exp-bad.f: bad algorithm for calculating e^-x as a finite sum
c related programs: exp-good.f
Program expbad
Implicit none
c min: accuracy, step in x, max in x, up numer, down denomin
Real*8 down, min, max, step, sum, up, x
Integer i, n
min = 1E-10
max = 10.
step = 0.1
Open(6, File = 'exp-bad.dat', Status = 'Unknown')
c execution
Do 10 x = 0, max, step
sum = 1
Do 20 n = 1, 10000
up = 1
down = 1
Do 30 i = 1, n
up = -up*x
down = down*i
30 Continue
sum = sum + up/down
If ((abs(up/down/sum) .lt. min) .AND. (sum .ne. 0)) then
Write (6,*) x, sum
c N.B. since no "while" statement in f77 need "goto"
GoTo 10
Endif
20 Continue
10 Continue
Close(6)
Stop 'data saved in exp-bad.dat'
End