(Adding the OP).

(2) I encountered a curious failure on compilation with the following statement 
using integer arithmetic:
      n= (m + 4)/5
with the message
Error: Integer division truncated to constant ‘2’ at (1) 
[-Werror=integer-division]
f951: all warnings being treated as errors

This error only occurs if both (a) the value of  "m" would lead to a truncation (say 7 
but not 6), and ALSO if (b) the value of "m" was set in a PARAMETER statement. I can work 
my way around this difficulty by rewriting the statement as:
      n= int ((1.0*m + 4)/5)
but it does seem clumsy.

This warning was introduced because people all to often would write code
like x = 3/7 and expect the same result as for x = 3./7..  As often,
it is a delicate balance between warning too much and too little.

Because this is an error, I assume you use -Werror.  The error
message gives you a hint, although an indirect one, of how to
downgrade this particular error to a warning: Compile with

$ gfortran -Wall -Werror -Wno-error=integer-division foo.f90

and you will get a warning again.

If you want to still have an error for other unintended cases
you may have missed, you can use

  n = (m+4-mod(m+4,5))/5

which, while also admittedly clumsy, will be evaluated at compile-time
if m is a parameter.

Hope this helps.

Best regards

        Thomas

Reply via email to