! { dg-do run } ! { dg-require-effective-target fortran_large_int } ! ! Check that we can print large integer values program test implicit none ! 128-bit integer kind integer, parameter :: k = selected_int_kind(38) character(len=39) :: s character(len=100) :: buffer integer(kind=k) :: n integer :: i ! Random checks do i = 1, 1000 call random_digits(s) read(s,*) n write(buffer,'(I0.38)') n print *, s print *, buffer if (adjustl(buffer) /= adjustl(s)) stop 2 end do ! Systematic check call check(0_k, "0") call check(1_k, "1") call check(9_k, "9") call check(10_k, "10") call check(11_k, "11") call check(99_k, "99") call check(100_k, "100") call check(101_k, "101") call check(999_k, "999") call check(1000_k, "1000") call check(1001_k, "1001") call check(9999_k, "9999") call check(10000_k, "10000") call check(10001_k, "10001") call check(99999_k, "99999") call check(100000_k, "100000") call check(100001_k, "100001") call check(999999_k, "999999") call check(1000000_k, "1000000") call check(1000001_k, "1000001") call check(9999999_k, "9999999") call check(10000000_k, "10000000") call check(10000001_k, "10000001") call check(99999999_k, "99999999") call check(100000000_k, "100000000") call check(100000001_k, "100000001") call check(999999999_k, "999999999") call check(1000000000_k, "1000000000") call check(1000000001_k, "1000000001") call check(9999999999_k, "9999999999") call check(10000000000_k, "10000000000") call check(10000000001_k, "10000000001") call check(99999999999_k, "99999999999") call check(100000000000_k, "100000000000") call check(100000000001_k, "100000000001") call check(999999999999_k, "999999999999") call check(1000000000000_k, "1000000000000") call check(1000000000001_k, "1000000000001") call check(9999999999999_k, "9999999999999") call check(10000000000000_k, "10000000000000") call check(10000000000001_k, "10000000000001") call check(99999999999999_k, "99999999999999") call check(100000000000000_k, "100000000000000") call check(100000000000001_k, "100000000000001") call check(999999999999999_k, "999999999999999") call check(1000000000000000_k, "1000000000000000") call check(1000000000000001_k, "1000000000000001") call check(9999999999999999_k, "9999999999999999") call check(10000000000000000_k, "10000000000000000") call check(10000000000000001_k, "10000000000000001") call check(99999999999999999_k, "99999999999999999") call check(100000000000000000_k, "100000000000000000") call check(100000000000000001_k, "100000000000000001") call check(999999999999999999_k, "999999999999999999") call check(1000000000000000000_k, "1000000000000000000") call check(1000000000000000001_k, "1000000000000000001") call check(9999999999999999999_k, "9999999999999999999") call check(10000000000000000000_k, "10000000000000000000") call check(10000000000000000001_k, "10000000000000000001") call check(99999999999999999999_k, "99999999999999999999") call check(100000000000000000000_k, "100000000000000000000") call check(100000000000000000001_k, "100000000000000000001") call check(999999999999999999999_k, "999999999999999999999") call check(1000000000000000000000_k, "1000000000000000000000") call check(1000000000000000000001_k, "1000000000000000000001") call check(9999999999999999999999_k, "9999999999999999999999") call check(10000000000000000000000_k, "10000000000000000000000") call check(10000000000000000000001_k, "10000000000000000000001") call check(99999999999999999999999_k, "99999999999999999999999") call check(100000000000000000000000_k, "100000000000000000000000") call check(100000000000000000000001_k, "100000000000000000000001") call check(999999999999999999999999_k, "999999999999999999999999") call check(1000000000000000000000000_k, "1000000000000000000000000") call check(1000000000000000000000001_k, "1000000000000000000000001") call check(9999999999999999999999999_k, "9999999999999999999999999") call check(10000000000000000000000000_k, "10000000000000000000000000") call check(10000000000000000000000001_k, "10000000000000000000000001") call check(99999999999999999999999999_k, "99999999999999999999999999") call check(100000000000000000000000000_k, "100000000000000000000000000") call check(100000000000000000000000001_k, "100000000000000000000000001") call check(999999999999999999999999999_k, "999999999999999999999999999") call check(1000000000000000000000000000_k, "1000000000000000000000000000") call check(1000000000000000000000000001_k, "1000000000000000000000000001") call check(9999999999999999999999999999_k, "9999999999999999999999999999") call check(10000000000000000000000000000_k, "10000000000000000000000000000") call check(10000000000000000000000000001_k, "10000000000000000000000000001") call check(99999999999999999999999999999_k, "99999999999999999999999999999") call check(100000000000000000000000000000_k, "100000000000000000000000000000") call check(100000000000000000000000000001_k, "100000000000000000000000000001") call check(999999999999999999999999999999_k, "999999999999999999999999999999") call check(1000000000000000000000000000000_k, "1000000000000000000000000000000") call check(1000000000000000000000000000001_k, "1000000000000000000000000000001") call check(9999999999999999999999999999999_k, "9999999999999999999999999999999") call check(10000000000000000000000000000000_k, "10000000000000000000000000000000") call check(10000000000000000000000000000001_k, "10000000000000000000000000000001") call check(99999999999999999999999999999999_k, "99999999999999999999999999999999") call check(100000000000000000000000000000000_k, "100000000000000000000000000000000") call check(100000000000000000000000000000001_k, "100000000000000000000000000000001") call check(999999999999999999999999999999999_k, "999999999999999999999999999999999") call check(1000000000000000000000000000000000_k, "1000000000000000000000000000000000") call check(1000000000000000000000000000000001_k, "1000000000000000000000000000000001") call check(9999999999999999999999999999999999_k, "9999999999999999999999999999999999") call check(10000000000000000000000000000000000_k, "10000000000000000000000000000000000") call check(10000000000000000000000000000000001_k, "10000000000000000000000000000000001") call check(99999999999999999999999999999999999_k, "99999999999999999999999999999999999") call check(100000000000000000000000000000000000_k, "100000000000000000000000000000000000") call check(100000000000000000000000000000000001_k, "100000000000000000000000000000000001") call check(999999999999999999999999999999999999_k, "999999999999999999999999999999999999") call check(1000000000000000000000000000000000000_k, "1000000000000000000000000000000000000") call check(1000000000000000000000000000000000001_k, "1000000000000000000000000000000000001") call check(9999999999999999999999999999999999999_k, "9999999999999999999999999999999999999") call check(10000000000000000000000000000000000000_k, "10000000000000000000000000000000000000") call check(10000000000000000000000000000000000001_k, "10000000000000000000000000000000000001") call check(99999999999999999999999999999999999999_k, "99999999999999999999999999999999999999") call check(100000000000000000000000000000000000000_k, "100000000000000000000000000000000000000") call check(100000000000000000000000000000000000001_k, "100000000000000000000000000000000000001") call check(109999999999999999999999999999999999999_k, "109999999999999999999999999999999999999") call check(-1_k, "-1") call check(-9_k, "-9") call check(-10_k, "-10") call check(-11_k, "-11") call check(-99_k, "-99") call check(-100_k, "-100") call check(-101_k, "-101") call check(-999_k, "-999") call check(-1000_k, "-1000") call check(-1001_k, "-1001") call check(-9999_k, "-9999") call check(-10000_k, "-10000") call check(-10001_k, "-10001") call check(-99999_k, "-99999") call check(-100000_k, "-100000") call check(-100001_k, "-100001") call check(-999999_k, "-999999") call check(-1000000_k, "-1000000") call check(-1000001_k, "-1000001") call check(-9999999_k, "-9999999") call check(-10000000_k, "-10000000") call check(-10000001_k, "-10000001") call check(-99999999_k, "-99999999") call check(-100000000_k, "-100000000") call check(-100000001_k, "-100000001") call check(-999999999_k, "-999999999") call check(-1000000000_k, "-1000000000") call check(-1000000001_k, "-1000000001") call check(-9999999999_k, "-9999999999") call check(-10000000000_k, "-10000000000") call check(-10000000001_k, "-10000000001") call check(-99999999999_k, "-99999999999") call check(-100000000000_k, "-100000000000") call check(-100000000001_k, "-100000000001") call check(-999999999999_k, "-999999999999") call check(-1000000000000_k, "-1000000000000") call check(-1000000000001_k, "-1000000000001") call check(-9999999999999_k, "-9999999999999") call check(-10000000000000_k, "-10000000000000") call check(-10000000000001_k, "-10000000000001") call check(-99999999999999_k, "-99999999999999") call check(-100000000000000_k, "-100000000000000") call check(-100000000000001_k, "-100000000000001") call check(-999999999999999_k, "-999999999999999") call check(-1000000000000000_k, "-1000000000000000") call check(-1000000000000001_k, "-1000000000000001") call check(-9999999999999999_k, "-9999999999999999") call check(-10000000000000000_k, "-10000000000000000") call check(-10000000000000001_k, "-10000000000000001") call check(-99999999999999999_k, "-99999999999999999") call check(-100000000000000000_k, "-100000000000000000") call check(-100000000000000001_k, "-100000000000000001") call check(-999999999999999999_k, "-999999999999999999") call check(-1000000000000000000_k, "-1000000000000000000") call check(-1000000000000000001_k, "-1000000000000000001") call check(-9999999999999999999_k, "-9999999999999999999") call check(-10000000000000000000_k, "-10000000000000000000") call check(-10000000000000000001_k, "-10000000000000000001") call check(-99999999999999999999_k, "-99999999999999999999") call check(-100000000000000000000_k, "-100000000000000000000") call check(-100000000000000000001_k, "-100000000000000000001") call check(-999999999999999999999_k, "-999999999999999999999") call check(-1000000000000000000000_k, "-1000000000000000000000") call check(-1000000000000000000001_k, "-1000000000000000000001") call check(-9999999999999999999999_k, "-9999999999999999999999") call check(-10000000000000000000000_k, "-10000000000000000000000") call check(-10000000000000000000001_k, "-10000000000000000000001") call check(-99999999999999999999999_k, "-99999999999999999999999") call check(-100000000000000000000000_k, "-100000000000000000000000") call check(-100000000000000000000001_k, "-100000000000000000000001") call check(-999999999999999999999999_k, "-999999999999999999999999") call check(-1000000000000000000000000_k, "-1000000000000000000000000") call check(-1000000000000000000000001_k, "-1000000000000000000000001") call check(-9999999999999999999999999_k, "-9999999999999999999999999") call check(-10000000000000000000000000_k, "-10000000000000000000000000") call check(-10000000000000000000000001_k, "-10000000000000000000000001") call check(-99999999999999999999999999_k, "-99999999999999999999999999") call check(-100000000000000000000000000_k, "-100000000000000000000000000") call check(-100000000000000000000000001_k, "-100000000000000000000000001") call check(-999999999999999999999999999_k, "-999999999999999999999999999") call check(-1000000000000000000000000000_k, "-1000000000000000000000000000") call check(-1000000000000000000000000001_k, "-1000000000000000000000000001") call check(-9999999999999999999999999999_k, "-9999999999999999999999999999") call check(-10000000000000000000000000000_k, "-10000000000000000000000000000") call check(-10000000000000000000000000001_k, "-10000000000000000000000000001") call check(-99999999999999999999999999999_k, "-99999999999999999999999999999") call check(-100000000000000000000000000000_k, "-100000000000000000000000000000") call check(-100000000000000000000000000001_k, "-100000000000000000000000000001") call check(-999999999999999999999999999999_k, "-999999999999999999999999999999") call check(-1000000000000000000000000000000_k, "-1000000000000000000000000000000") call check(-1000000000000000000000000000001_k, "-1000000000000000000000000000001") call check(-9999999999999999999999999999999_k, "-9999999999999999999999999999999") call check(-10000000000000000000000000000000_k, "-10000000000000000000000000000000") call check(-10000000000000000000000000000001_k, "-10000000000000000000000000000001") call check(-99999999999999999999999999999999_k, "-99999999999999999999999999999999") call check(-100000000000000000000000000000000_k, "-100000000000000000000000000000000") call check(-100000000000000000000000000000001_k, "-100000000000000000000000000000001") call check(-999999999999999999999999999999999_k, "-999999999999999999999999999999999") call check(-1000000000000000000000000000000000_k, "-1000000000000000000000000000000000") call check(-1000000000000000000000000000000001_k, "-1000000000000000000000000000000001") call check(-9999999999999999999999999999999999_k, "-9999999999999999999999999999999999") call check(-10000000000000000000000000000000000_k, "-10000000000000000000000000000000000") call check(-10000000000000000000000000000000001_k, "-10000000000000000000000000000000001") call check(-99999999999999999999999999999999999_k, "-99999999999999999999999999999999999") call check(-100000000000000000000000000000000000_k, "-100000000000000000000000000000000000") call check(-100000000000000000000000000000000001_k, "-100000000000000000000000000000000001") call check(-999999999999999999999999999999999999_k, "-999999999999999999999999999999999999") call check(-1000000000000000000000000000000000000_k, "-1000000000000000000000000000000000000") call check(-1000000000000000000000000000000000001_k, "-1000000000000000000000000000000000001") call check(-9999999999999999999999999999999999999_k, "-9999999999999999999999999999999999999") call check(-10000000000000000000000000000000000000_k, "-10000000000000000000000000000000000000") call check(-10000000000000000000000000000000000001_k, "-10000000000000000000000000000000000001") call check(-99999999999999999999999999999999999999_k, "-99999999999999999999999999999999999999") call check(-100000000000000000000000000000000000000_k, "-100000000000000000000000000000000000000") call check(-100000000000000000000000000000000000001_k, "-100000000000000000000000000000000000001") call check(-109999999999999999999999999999999999999_k, "-109999999999999999999999999999999999999") contains subroutine check (i, str) implicit none integer(kind=k), intent(in), value :: i character(len=*), intent(in) :: str character(len=100) :: buffer write(buffer,*) i if (adjustl(buffer) /= adjustl(str)) stop 1 end subroutine subroutine random_digits (str) implicit none integer, parameter :: l = 38 character(len=l+1) :: str real :: r integer :: i, d str = "" do i = 2, l+1 call random_number(r) d = floor(r * 10) str(i:i) = achar(48 + d) end do call random_number(r) if (r > 0.5) then str(1:1) = '-' end if end subroutine end