On Thu, Apr 07, 2005 at 01:10:49PM -0400, Geert Bosch wrote:
>
> On Apr 7, 2005, at 10:12, Steve Kargl wrote:
>
> >On Thu, Apr 07, 2005 at 08:08:15AM -0400, Geert Bosch wrote:
> >>As far as I can seem from this patch, it rounds incorrectly.
> >>This is a problem with the library version as well, I believe.
> >>
> >
> >Which library?
>
> libgfortran, or whatever is used to implement NINT and DNINT.
>
> Here's an example:
> program main
> real x, y
> x = 8388609.0
> y = 0.4999999701976776123046875
> print *, 'nint (', x, ') =', nint (x)
> print *, 'nint ( y ) =', nint (y), ', where y < 0.5 = ', y < 0.5
> end
>
> output is
> nint ( 8388609. ) = 8388610
> nint ( y ) = 1 , where y < 0.5 = T
Try -fdump-parse-tree. You've given more digits in y than
its precision. This is permitted by the standard. It appears
the gfortran frontend is taking y = 0.499999 and the closest
representable nubmer is y = 0.5.
--
Steve