Errors with fortran code, help!

1. Jan 17, 2012

chrissi.<3

Hii,

Having trouble with some code I am writing, where a subroutine returns the same value regardless of different variable inputs.

.....
C Calculate Yth and Chi values. Compute sum of Chi-squared.
Subroutine Chisquared(CPREV,CHISQ)
Real TIME(17),COUNTS(17),ERROR(17),YTH(17),CHI(17)
Real A,B,LAMDA1,LAMDA2,CHISQ,CPREV
Common TIME,ERROR,COUNTS,YTH,A,B,LAMDA1,LAMDA2

CPREV=CHISQ
CPREV=0

Do K=1,17
YTH(K)=A*EXP(-LAMDA1*TIME(K))+B*EXP(-LAMDA2*TIME(K))
End Do

Do L=1,17
CHI(L)=(COUNTS(L)-YTH(L))/((ERROR(L)**2))
End Do

Do M=1,17
CPREV=CPREV+CHI(M)
End Do

Return
End
......

The user inputs A, B, LAMDA1 and LAMDA2 but it always returns the same value of CPREV.
Help please!!!

2. Jan 17, 2012

hotvette

Looks like you need some basic debug. Suggest you first add a write statement in your subroutine to print out the values of A, B, LAMDA1 and LAMDA2 to confirm the values are what you expect.

3. Jan 17, 2012

AlephZero

Without seeing all of the code debugging this is just guessing, but the first two lines

CPREV=CHISQ
CPREV=0

look a bit strange, considering that is the only thing you do with CHISQ.

4. Jan 17, 2012

chrissi.<3

Thanks...

I've tried adding a write statement and it seems to have no problems with using the same variables (as input by the user in the main program).

I've also got rid of that line of code CPREV=CHISQ.

Still gives me the same value

5. Jan 18, 2012

256bits

I haven't done fortran coding in a while but should not the COMMON staement be:
Common TIME(17),ERROR(17),COUNTS(17),YTH(17),A,B,LAMDA1,LAMDA2

and similar to one you have in your main part of the program?

Just guessing that maybe TIME is a different variable then TIME(17)

6. Jan 19, 2012

chrissi.<3

After throughly writing each step of the calculation (for YTH, CHI and CPREV), I found that the program was unable to handle the exponential function for certain values.

So it works ok now... as long as LAMDA1 and LAMDA2 have values less than 0.01

7. Mar 15, 2012

Louisa

You need to post the entire program. This little piece needs values
passed in COMMON.

8. Mar 15, 2012

chrissi.<3

Ive solved it now

Thanks anyway : )

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook