Fortran Fortran Help - Do loops not calculating.

  • Thread starter Thread starter skockler8
  • Start date Start date
  • Tags Tags
    Fortran Loops
AI Thread Summary
The discussion revolves around troubleshooting a Fortran90 program designed to approximate mathematical constants such as e, the Euler constant, and pi. The initial issue was that the program compiled but produced outputs of 0.000000 for all constants. Key suggestions included defining the variable "n" before its use in the loop, ensuring "n" is incremented, and avoiding mixing integer and real types. It was recommended to use "real(i)" and "1./n_factorial" for better accuracy. After making these adjustments, the program compiled successfully but ran slowly without producing outputs. Further advice included inserting print statements to identify where the program was getting stuck, particularly checking the values of variables within loops to diagnose potential infinite loops or logic errors. The thread was moved to a programming forum for more focused assistance.
skockler8
Messages
3
Reaction score
0
Hello all,

I am working on a Fortran90 code that will give me an approximation of a few mathematical constants. My code will compile and run, however, my outputs are given as 0.000000 for all constants that I am calculating in the loops. Any help would be greatly appreciated. My code is as follows:

PROGRAM HomeWorkOne_ProbOne

IMPLICIT NONE

! Computes an estimation of the exponential function, pi, and the Euler Constant

REAL :: e, EC, pi, n_factorial, x_factorial, gamma
INTEGER :: i, n, x


x = n + 3.0/2.0

n_factorial = 1.0


DO WHILE (n < 10)
DO i = 1, n
n_factorial = n_factorial * i
END DO
e = 1/n_factorial
END DO

DO WHILE (n < 10)
EC = (1.0/n) - (LOG(REAL(n)+1.0)-LOG(REAL(n)))
END DO

DO WHILE (x < 10)
DO i = 1, x
x_factorial = x * i
gamma = (2.0 * x_factorial)/(2.0 * n + 3.0)
END DO
DO i = 1, n
n_factorial = n_factorial * i
END DO
pi = (n_factorial)/((2**(n-(1.0/4.0)*Cos(3.14*(2.0*n+1.0))))+(3.0/4.0)*(3.14**((1.0/4.0)*Cos(3.14*(2*n+1))-(1.0/4.0)))*gamma)
END DO

PRINT *, "Approximate values of:"
PRINT *, "e =", e
PRINT *, "gamma =", EC
PRINT *, "Pi =", pi
PRINT *, "Actual values of :"
PRINT *, "e =", 2.71828182
PRINT *, "gamma =", 0.57721566
PRINT *, "Pi =", 3.14159265

END PROGRAM HomeWorkOne_ProbOne


Thanks for any help!
 
Technology news on Phys.org
Hello.

You need to define "n" before "DO WHILE (n < 10)".
Also, n is not incremented in that loop.

Be careful not to mix integers and reals. For example, "n_factorial * i" is a real times an integer. "real(i)" will be better. The same for 1/n_factorial (try "1./n_factorial")

Finally, check the value of n_factorial. If it's really large, then e will be really small and you might have to use DOUBLE instead of REAL.

Hope this helps.

Tom
 
Last edited:
I have done all that, it has helped greatly. Now, the program compiles completely, however, when I run it, it takes a long time and I don't receive any outputs.

Thanks
 
Great.
Try putting in some lines like
print *, "a"
print *, "b"
etc

after each part of the code to see where it's getting stuck. Then when you know which loop is causing the problem, print out important numbers like
print *, "n= ", n
inside the loop. This should allow you to determine where it's getting stuck. Perhaps you're not incrementing one of your variables?
 
Welcome to Physics Forums, skockler8!

I guess you didn't notice that we have a programming forum. I've moved this thread there.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
8
Views
2K
Replies
4
Views
2K
Replies
12
Views
1K
Replies
4
Views
12K
Replies
19
Views
2K
Replies
8
Views
4K
Replies
2
Views
8K
Back
Top