Floating point precision

In the INTEL architecture it is possible to configure the CPU to perform floating-point calculations at various precisions namely 80-bit (REAL(KIND= 3)), 64-bit (DOUBLE PRECISION, REAL(2)), and 32-bit (REAL(1)). Traditionally (Win32) Silverfrost Fortran has selected 80-bit precision for all internal floating-point calculations. When dealing with REAL(1) or DOUBLE PRECISION (REAL(2)) values, this extra internal precision can help to ensure that the least significant bit of a number is accurate. It also means that REAL(3) calculations are possible. The FTN95 compiler option /DREAL forces all single precision variables to DOUBLE PRECISION whilst /XREAL forces all single and double precision variables to REAL(3) (see also /DEFREAL_KIND).

In the .NET architecture Microsoft configure the CPU to operate at 64-bit precision. This can result in slight numerical differences when FTN95 .NET calculations are compared with Win32 calculations. It also means that the REAL(KIND=3) and COMPLEX(KIND=3) types are not available on a .NET platform. Similarly the /XREAL option cannot be used for .NET.



Copyright © 1999-2024 Silverfrost Limited