https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96711

--- Comment #3 from B Eggen <bre08 at eggen dot co.uk> ---
Here is the latest f90 file:

program nint_error

  integer :: n, m
  integer(kind=16) :: i, j, nint

  integer, parameter :: idp=selected_real_kind(9,99)
  integer, parameter :: i16=selected_int_kind(38)

  real(kind=idp) :: x, y

  write(*,'(*(g0:" "))') 'i16=', i16, huge(i)
  i=1_16
  x=1.0d0
  do n=1, 128, 1
     j=i-1_16
     y=x-1.0d0
     m=nint(y) ! this compiles, but gives wrong results
!     m=nint(y,i16) ! this will generate an internal compiler error
     write(*,'(*(g0:" "))') n, i, x, m
     i=i+i
     x=x+x
     if ( (m<1) .and. (n>3)) exit
  end do

  do i=2147483647_16-10_16, 2147483648_16+10_16, 1_16
     x=dble(i)
     m=nint(x)
     write(*,'(*(g0:" "))') i, x, m
  end do


  stop
end program nint_error

Reply via email to