[Bug fortran/49010] New: Result of MOD and MODULO intrinsic has wrong sign

thenlich at users dot sourceforge.net gcc-bugzilla@gcc.gnu.org
Mon May 16 09:00:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49010

           Summary: Result of MOD and MODULO intrinsic has wrong sign
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: thenlich@users.sourceforge.net


If the first argument to the MOD and MODULO intrinsic is negative, and the
magnitude of the result is zero, the function returns a negative zero.

Fortran 2003/2008:
MOD: The value of the result is A − INT (A/P) * P.
MODULO: The value of the result is A − FLOOR (A / P) * P.

The values returned by these intrinsics should be the same as the expressions
by which the functions are defined; which is zero, without a negative sign.

Example:
program test_mod
    real :: a, p

    a = -4.0
    p = 2.0
    print *, mod(a, p), a - int(a / p) * p ! -0 0 expected 0 0
    print *, modulo(a, p), a - floor(a / p) * p ! -0 0 expected 0 0
end program test_mod



More information about the Gcc-bugs mailing list