program test29
  integer i,loopend
  real answer, start, extra, fact
  start = -5.0
  answer = 1.0
  loopend = 25
  do i = 1, loopend
     extra = (start**i)/fact(i)
     answer = answer + extra
     write(*,*) "i=",i," term =",extra," e ^ -5 = ", answer
  end do
  write(*,*) "computed e ^ -5 = ", answer
  write(*,*) "library function e ^ -5 = ", exp(-5.0)
  answer = 0.0
  do i = loopend, 1, -1
     answer = (answer + 1.0/fact(i))*start
   write(*,*) "computed e ^ -5 = ", answer
  end do
  answer = answer +1
  write(*,*) "Horner's rule computed e ^ -5 = ", answer
end program test29
real function fact(n)
  integer n, i
  real temp
  temp =1.0
  do i=2,n
     temp = temp*i
  end do
  fact =temp
  return
end function fact

