Warn about possible truncation (or roundoff) errors. Most of these
are related to integer arithmetic. By default, all warnings are
turned on.
This setting provides detailed control over the warnings about
possible truncation errors. The list consists of keywords
separated by commas or colons.
Since all warnings are on by default, include a keyword prefixed by
no- to turn off a particular warning.
There are three special keywords: all to turn on all the
warnings about truncation, none to turn them all
off, and help to print the list of all the keywords with a brief
explanation of each.
If list is omitted, -truncation is equivalent to
-truncation=all, and -notruncation is equivalent to
-truncation=none.
The warning keywords with their meanings are as follows:
- int-div-exponent:
-
use of the result of integer division as an exponent.
This suggests that a real quotient is intended.
An example would be writing X**(1/3) to evaluate the cube root
of X. The correct expression is X**(1./3.).
- int-div-real:
-
Conversion of an expression involving an integer division to real.
This suggests that a real quotient is intended.
- int-div-zero:
-
division in an integer constant expression that
yields a result of zero.
- int-neg-power:
-
exponentiation of an integer by a negative
integer (which yields zero unless the base integer is 1 in magnitude).
This suggests that a real base is intended.
- promotion:
-
automatic conversion of a lower precision quantity to one of higher
precision. The loss of accuracy for real variables in this process is
comparable to the corresponding demotion. No warning is given for
promotion of integer quantities to real since this is ordinarily
exact.
- real-do-index:
-
use of a non-integer DO index in a
loop with integer bounds.
An integer DO index with real bounds is always
warned about regardless of this setting.
- real-subscript:
-
use of a non-integer array subscript.
- significant-figures:
-
overspecifying a single precision constant. This may indicate that a
double precision constant was intended.
- size-demotion:
-
automatic conversion of a higher precision quantity to one of lower
precision of the same type. This warning only occurs when an explicit
size is used in declaring the type of one or both operands in an
assignment. For example, a warning wil be issued where a REAL*8
variable is assigned to a REAL variable, if the default wordsize
of 4 is in effect. A warning is also issued if a long integer is
assigned to a shorter one, for example, if an INTEGER
expression is assigned to an INTEGER*2 variable. There is one
exception to this last case, namely if the right hand side of the assignment
is a small literal constant (less than 128).
type-demotion:
automatic conversion of a higher precision quantity to one of lower
precision of different type. This warning includes conversion of real
quantities to integer, double precision to single precision real, and
assignment of a longer character string to a shorter one.
The warnings about promotion and demotion also apply to complex
constants, considering the precision to be that of the real or
imaginary part.
Warnings about promotions and demotions are given only when
the conversion is done automatically, e.g. in expressions of mixed
precision or in an assignment statement. If intrinsic
functions such as INT are used to perform the conversion, no warning
is given.
See also: -portability, -wordsize.