Beginner fortraner: messing up arithmatic

  • Fortran
  • Thread starter Moly
  • Start date
  • #1
21
0
Hi All.
I am trying to rewrite a program that i have in matlab to one in fortran. as i chug along, i am comparing the results and i am getting funny answers. This is the program in have in fortran so far:

ccccccccccccccccccccccccccccccccccccccccccccccccc
program main
implicit none
ccccccccccccccccccccccccccccccccccccccccccccccccc
integer Nstep, Xstep
double precision x, t, dt, dx
double precision K1, K2, Vmax, KM, P, Po
double precision Co, Qo, Cop,DeltaQ
double precision A1, A2, A3
cccccccccccccccccccccccccccccccccccccccccccccccccc
t = 1.0d0
x = 0.5d0
Xstep=2**8
dx=1/Xstep
dt=0.0005d0
Nstep=t/dt
Co = 275.0d-6
Vmax = 14.50d-9
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
print *, "t, x,Nstep, Xstep dx,dt",t,x,Nstep, Xstep,dx,dt
print*, "Co, Vmax", Co, Vmax
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
return
end

the results i get when i run it with f77 f1.f (f1.f is what i called the file) is this:
t, x,Nstep, Xstep dx,dt 1. 0.5 1999 256 0. 0.0005
Co, Vmax 0.000275 1.45E-08

with the first line i have major problmes: Nstep=1/.0005 and should be 2000, why is it 1999 ............and dx=1/Xstep=0 but it should be equal to .0039

why am i getting such funny results?
 

Answers and Replies

  • #2
Borek
Mentor
28,816
3,319
When converting to int numer is not rounded, but truncated, so if for a given accuracy of calculations 1/.0005=1999.9999999999999999 it gets truncated to 1999.

dx is calculated as a result of integer division - 1/256, in integers it gives 0. My memory on Fortran is fuzzy here, but obviously you have to force it to calculate float result; in C 1./Xstep will do the trick.
 
  • #3
21
0
Thanks a lot Borek. I changed Xstep and Nstep from integers to real and now the calculations come out right. I am sure i will have another silly question in a few minutes and your help is muuuuuuuuuuuuuuuuuuuuuuuuuuuuch appreciated
 

Related Threads on Beginner fortraner: messing up arithmatic

  • Last Post
Replies
4
Views
2K
  • Last Post
Replies
1
Views
889
Replies
3
Views
2K
Replies
7
Views
2K
  • Last Post
2
Replies
37
Views
1K
  • Last Post
Replies
4
Views
3K
Replies
12
Views
2K
  • Last Post
2
Replies
28
Views
6K
  • Last Post
Replies
4
Views
3K
Top