# Fortran 77 commands expg,dexp

• Fortran
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?

Related Programming and Computer Science News on Phys.org
DrClaude
Mentor
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.

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.

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?

DrClaude
Mentor
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?

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?

DrClaude
Mentor
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?

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

DrClaude
Mentor
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!