[Bug fortran/33177] New: Wrong result from nint() on Cygwin
jvdelisle at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Aug 24 15:56:00 GMT 2007
With the following test case, nint gives wrong result.
svn Revision: 127756
! Program to test the real->integer conversion routines.
program intrinsic_integer
implicit none
real :: val
integer :: i
val = 0.7
i = nint(val)
print *, val, i
val = -0.7
i = nint(val)
print *, val, i
end program
This gives:
$ ./a
0.7000000 0
-0.7000000 0
$ cat nint_test.f90.003t.original
MAIN__ ()
{
int4 i;
real4 val;
static int4 options.0[7] = {68, 127, 0, 0, 0, 1, 0};
_gfortran_set_options (7, (void *) &options.0);
val = 6.99999988079071044921875e-1;
i = (int4) __builtin_lroundf (val);
{
struct __st_parameter_dt dt_parm.1;
dt_parm.1.common.filename = &"nint_test.f90"[1]{lb: 1 sz: 1};
dt_parm.1.common.line = 8;
dt_parm.1.common.flags = 128;
dt_parm.1.common.unit = 6;
_gfortran_st_write (&dt_parm.1);
_gfortran_transfer_real (&dt_parm.1, &val, 4);
_gfortran_transfer_integer (&dt_parm.1, &i, 4);
_gfortran_st_write_done (&dt_parm.1);
}
val = -6.99999988079071044921875e-1;
i = (int4) __builtin_lroundf (val);
{
struct __st_parameter_dt dt_parm.2;
dt_parm.2.common.filename = &"nint_test.f90"[1]{lb: 1 sz: 1};
dt_parm.2.common.line = 11;
dt_parm.2.common.flags = 128;
dt_parm.2.common.unit = 6;
_gfortran_st_write (&dt_parm.2);
_gfortran_transfer_real (&dt_parm.2, &val, 4);
_gfortran_transfer_integer (&dt_parm.2, &i, 4);
_gfortran_st_write_done (&dt_parm.2);
}
}
--
Summary: Wrong result from nint() on Cygwin
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jvdelisle at gcc dot gnu dot org
GCC host triplet: i686-pc-Cygwin
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33177
More information about the Gcc-bugs
mailing list