1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
program unsigned_test
implicit none
! 4 byte unsigned int
type(unsigned) :: x
integer(kind=4) :: y
integer :: i
x = 1
y = 1
do i = 1, 30
x = x * _lfortran_unsigned(2)
y = y * 2
if ( x < _lfortran_unsigned(0) ) error stop
if ( y < 0 ) error stop
end do
x = x * _lfortran_unsigned(2)
y = y * 2
if ( x < _lfortran_unsigned(0) ) error stop
if ( y > 0 ) error stop
x = x * _lfortran_unsigned(2)
y = y * 2
if ( x /= _lfortran_unsigned(0) ) error stop
if ( y /= 0 ) error stop
end program unsigned_test
|