Fortran What is the purpose of the Fortran 77 commands expg and dexp?

  • Thread starter Thread starter Triscas
  • Start date Start date
  • Tags Tags
    Fortran
AI Thread Summary
The discussion centers around understanding the Fortran expressions involving the commands "dexp" and "expg." The user initially seeks clarification on the meaning of these commands, particularly "expg," which is not part of the Fortran standard. It is identified as a user-defined function, possibly specific to a certain computer manufacturer's version of Fortran. The conversation highlights the importance of locating the function's definition, which may reside in external libraries linked during compilation. The user later discovers that "expg" is indeed a user-defined function that calculates the exponential value with a truncation to prevent underflow for very small values. The discussion concludes with the user expressing gratitude for the clarification, indicating that their doubt has been resolved.
Triscas
Messages
9
Reaction score
0
Hi!

I have the next expression and I don't know what exactly mean the commands

a= dexp ((const1)* (b-298) / (b*298))

This one, I guess it's to calculate the exponential value of the expression giving a double precission.

But i didn't find any info about the command expg,

i.e: a = const1 + const2 * expg( const3 * b(2+const4,j) / const1)

Is it expg other form of exponential or it's a variable that I'm missunderstanding?

Thanks in advance
 
Technology news on Phys.org
Triscas said:
Hi!

I have the next expression and I don't know what exactly mean the commands

a= dexp ((const1)* (b-298) / (b*298))

This one, I guess it's to calculate the exponential value of the expression giving a double precission.
Correct.

Triscas said:
But i didn't find any info about the command expg,

i.e: a = const1 + const2 * expg( const3 * b(2+const4,j) / const1)

Is it expg other form of exponential or it's a variable that I'm missunderstanding?

expg is not part of the Fortran standard. My guess would be that it is a user-defined function, but it could also be part of a specific computer manufacturer's version of Fortran.
 
DrClaude said:
expg is not part of the Fortran standard. My guess would be that it is a user-defined function, but it could also be part of a specific computer manufacturer's version of Fortran.

Thanks, now I understand why I didn't find information about the function.

How could I figure it out the exact meaning? Using debugging options?
 
Triscas said:
How could I figure it out the exact meaning? Using debugging options?

You have to find where the function is coded if it is user-defined, or what computer the program was originally written for, depending on where the function is defined. Is expg declared "external" in the subroutine (or main program) where it is used?
 
DrClaude said:
You have to find where the function is coded if it is user-defined, or what computer the program was originally written for, depending on where the function is defined. Is expg declared "external" in the subroutine (or main program) where it is used?


In the main program the first time expg appears is already as a function " e1=expg(-arg)", it isn't declare and i don't find the computer the program was written for, though i have a lot of info about it.

I don't understand where could it be defined if it's out of the program, how can it be used?
 
Triscas said:
In the main program the first time expg appears is already as a function " e1=expg(-arg)", it isn't declare and i don't find the computer the program was written for, though i have a lot of info about it.
Is it possible for me to see a copy of the program?

Triscas said:
I don't understand where could it be defined if it's out of the program, how can it be used?
If it is not in the program, it is in one of the libraries that the linker links to during compilation. Fortran is special in that many manufacturers (IBM, Cray, etc.) came up with their own extensions to the language, supplementing what was considered to be missing in the Fortran 77 standard. It is not uncommon in legacy programs to find things that are specific to an old machine, an extinct dinosaur of which the fossilized remains are all that are left :smile:
 
I've had a look at the program, and it is indeed a user-defined function. If you look in the code, you will find

double precision function expg(x)
implicit real*8 (a-h,o-z)
expg=0.d0
if(x.gt.-700.d0) expg=dexp(x)
return
end

It is just the exponential function with a truncation for very small values of the exponential (probably to prevent underflow).
 
My bad, I had presumed it should be at the beginning of the code.

Thanks again for the quickness.

Doubt solved!
 

Similar threads

Replies
3
Views
2K
Replies
6
Views
7K
Replies
4
Views
16K
Replies
18
Views
6K
Replies
3
Views
4K
Replies
1
Views
2K
Back
Top