If you program (say) SIN or COS, then Fortran 90/95 etc treats them as giving the precision associated with the function argument, so that if you have
DOUBLE PRECISION A, B
B=SIN(A)
it is as though you wrote
DOUBLE PRECISION A, B
B=DSIN(A)
MIN and MAX for instance are much more rational than all that MIN, AMIN, AMIN0 stuff we had to wade through.
There are some functions (although I can't think of one right now!) where the precision is fixed.
When I went through several programs of mine converting to double precision (the infinitely more sensible REAL*8 is now 'outlawed'), I converted everything to the double precision function type, but I didn't need to - only to make sure that I have got the correct precision-independent functions. As always with Fortran, you need to read the manual, as the exceptions to the rules are ever present traps for the unwary.
FTN77/95 also has a helpful compiler switch for setting the default real kind.
This is not obvious if you have simply migrated from Fortran 77 which is why I mentioned it, but if you already knew then I didn't want to labour the point.
You sometimes need to be a bit careful with returns from user-defined functions which can be a lower precision than you think depending on how you have declared the function, so for example,
REAL FUNCTION BESSEL (A, B, C)
will send you a single precision result even if you defined A, B, and C to be double, and used the result in a formula containing double prevision variables. This would change precision (I think) if you used the compiler switch, but not if you laboriously edited your code but missed the function definition (which you could do more easily if the type was assumed from the name, e.g.
FUNCTION BESSEL (A, B, C)
in which case you could easily miss it.
You could always be getting a [u:ee7776a9fe]better[/u:ee7776a9fe] answer from your PC than from the old mainframe - Crays for example, worked to 60-bit precision, whereas a PC is sometimes working to 80-bit!
Eddie