Run time error M6201:MATH-log domain error

  • Thread starter Thread starter MANJUNATH N M
  • Start date Start date
  • Tags Tags
    Domain Error Time
AI Thread Summary
The discussion centers around a run-time error in a Fortran program related to the logarithm function, specifically the M6201:MATH-log domain error. The error occurs when attempting to take the logarithm of a non-positive number, indicating a need for checks in the code to prevent this. After addressing the log error, the user encounters a new issue with "array bound exceeded," suggesting that variable declarations in common blocks may be missing. The conversation highlights the challenges of readability and clarity in Fortran code. Proper variable declaration and error handling are essential for resolving these programming issues.
MANJUNATH N M
Messages
3
Reaction score
0
hi all,
i am getting the above problem while executing my fortran program. please help me how to fix it.

thank
MNM
 
Physics news on Phys.org
MANJUNATH N M said:
hi all,
i am getting the above problem while executing my fortran program. please help me how to fix it.
It would appear that your program is attempting to take the log of a number that is negative or zero.
 
Thank you mark44.
But in the program i am taking log of T. see the program attached below.
 

Attachments

For the convenience of other readers, here's your code. As I already said, your program is attempting to take the log of a number that is not positive. There needs to be some code in this function to guard against an attempt to take the log of the parameter T when it is zero or negative.
Code:
C**********************************************************************************
		FUNCTION HP(T)
C**********************************************************************************
 	REAL KA,KP,KR,MC,MH,MO,NA,N,NADNAX,NMO,NP,NPO,NX,KRR
	COMMON/CHEM/KA,KP,KR,N(5),NA,NADNAX,NMO,NP,NPO,NX,RMR,KRR,
     #	MC,MH,MO,R,RLITAT,RMIX,Y,YCC,YMIN,PMOLWT
	COMMON/CPCOEF/CV,ACPF,BCPF,ACPA,BCPA,AL(5),AH(5),
     #	BL(5),BH(5),CL(5),CH(5)
	HP=0.
	IF(T.GT.1600.0) GO TO 20
	DO 1 I=1,5
1	HP=HP+N(I)*(AL(I)+BL(I)*T+CL(I)*ALOG(T))
	RETURN
20	DO 3 I=1,5
3	HP=HP+N(I)*(AH(I)+BH(I)*T+CH(I)*ALOG(T))
	RETURN
	END
 
Somewhat off topic...
I look at a lot of code samples in many different languages, but the ones in Fortran are usually the worst. They are typically nearly impossible to read with their terse variable names that convey almost no indication of what they're being used for, no or little whitespace, and no indentation to help the reader grasp the extent of loops.
 
THANK YOU MARK44, I eliminated log error. but now i am facing one more problem that is "array bound exceeded"
 
Back
Top