expx
program epsilon
implicit none
integer, parameter :: DP=8, SP=4
real(DP) :: eps_d, x_d, xa, x
real(SP) :: eps_s, x_s
read *,x_d,x_s
print *,"x_d=",x_d
print *,"x_s=",x_s
eps_d=1.0_DP
eps_s=1.0_SP
do while (1.0_SP+eps_s .gt. 1.0_SP)
eps_s=eps_s/2
end do
do while (1.0_DP+eps_d .gt. 1.0_DP)
eps_d=eps_d/2
end do
print *,"single precision epsilon=",eps_s
print *,"double precision epsilon=",eps_d
x_d=x_d+eps_d
x_s=x_s+eps_s
print *,"x_d+eps_d=",x_d
print *,"x_s+eps_s=",x_s
xa=5.5_DP
x=1.0-xa+(xa*xa)/2.0-(xa*xa*xa)/6.0+(xa*xa*xa*xa)/24.0-(xa*xa*xa*xa*xa)/120.0+ &
(xa*xa*xa*xa*xa*xa)/720.0-(xa*xa*xa*xa*xa*xa*xa)/5040.0+ &
(xa*xa*xa*xa*xa*xa*xa*xa)/40320.0-(xa*xa*xa*xa*xa*xa*xa*xa*xa)/362880.0+ &
(xa*xa*xa*xa*xa*xa*xa*xa*xa*xa)/3628800.0
print *,x
x=1.0+xa+(xa*xa)/2.0+(xa*xa*xa)/6.0+(xa*xa*xa*xa)/24.0+(xa*xa*xa*xa*xa)/120.0+ &
(xa*xa*xa*xa*xa*xa)/720.0+(xa*xa*xa*xa*xa*xa*xa)/5040.0+ &
(xa*xa*xa*xa*xa*xa*xa*xa)/40320.0+(xa*xa*xa*xa*xa*xa*xa*xa*xa)/362880.0+ &
(xa*xa*xa*xa*xa*xa*xa*xa*xa*xa)/3628800.0
print *,1.0/x,exp(-xa)
end program epsilon
|
run
| edit
| history
| help
|
0
|
|
|