In Fortran 90 there are standard functions to check the precision
of variables (see Appendix 5, section 8, where for example
`PRECISION(X) ` gives the number of significant digits in numbers of the
same kind as the variable `X`). In Fortran 90 there are also
possibilities to specify for each variable how many significant digits
can be used with the floating-point numbers of this kind. The two
common precisions single precision (SP) and double precision (DP) on a
system based on IEEE 754 can specified with

INTEGER, PARAMETER :: SP = SELECTED_ REAL_ KIND(6,37) INTEGER, PARAMETER :: DP = SELECTED_REAL_KIND(15,307) REAL(KIND=SP) :: single_precision_variables REAL(KIND=DP) :: double_precision_variablesIf we wish to work with at least 14 decimal digits accuracy and at least decimal exponents between - 300 and + 300 we can choose the following integer parameters

INTEGER, PARAMETER :: WP = SELECTED_REAL_KIND(14,300) REAL(KIND=WP) :: working_precision_variablesRegrettably now we have to give all floating point constants with the additional suffix

REAL(KIND=WP) :: PI PI = 3.141592653589793_WPwhile since the intrinsic functions are generic, they will automatically use the correct data type and kind, which means that the argument determines which kind the result should have (usually the same as the argument).

With this method you will in practice obtain double precision on systems based on IEEE 754 and single precision on computers like Cray or computers based based on the Digital Equipment Alpha-processor, which in all cases means a precision of about 15 significant digits.

Last modified: 16 November 1995