blob: 6417c01767b9dc57b78ce5a829b5fb0f7e954566 [file] [log] [blame]
! { dg-do run }
program main
implicit none
integer, parameter :: n=5
character(len=6,kind=4), dimension(n,n) :: a
integer, dimension(n,n) :: v
character(len=6,kind=4), dimension(n) :: r1, r2
character(len=6,kind=4), dimension(:,:), allocatable :: a_alloc
integer, dimension(:,:), allocatable :: v_alloc
character(len=6,kind=4):: all_full
integer :: i
character(len=6,kind=4),dimension(1) :: ret
logical, dimension(n,n) :: mask
logical :: smask
integer(kind=4), dimension(6) :: kmin
kmin = -1
all_full = transfer(kmin,all_full)
v = reshape([(i*i+200-17*i,i=1,n*n)],shape(v))
write (unit=a,fmt='(I6.6)') (i*i+200-17*i,i=1,n*n)
r1 = minval(a,dim=1)
write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
if (any (r1 /= r2)) STOP 1
r1 = 4_'x'
write (unit=r1,fmt='(I6.6)') minval(v,dim=1)
if (any (r1 /= r2)) STOP 2
r1 = 4_'y'
r1 = minval(a,dim=2)
write (unit=r2,fmt='(I6.6)') minval(v,dim=2)
if (any (r1 /= r2)) STOP 3
r1 = 4_'z'
write (unit=r1,fmt='(I6.6)') minval(v,dim=2)
if (any (r1 /= r2)) STOP 4
allocate (a_alloc(0,1), v_alloc(0,1))
ret = 4_'what'
ret = minval(a_alloc,dim=1)
if (ret(1) /= all_full) STOP 5
r1 = 4_'qq'
r1 = minval(a, dim=1, mask=a>4_"000200");
if (any(r1 /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) STOP 6
if (any(minval(a, dim=1, mask=a>4_"000200") /= all_full .neqv. minval(v,dim=1, mask=v>200) < 1000)) STOP 7
r1 = 4_'rr'
r1 = minval(a, dim=2, mask=a>4_"000200");
if (any(r1 /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) STOP 8
if (any(minval(a, dim=2, mask=a>4_"000200") /= all_full .neqv. minval(v,dim=2, mask=v>200) < 1000)) STOP 9
mask = .true.
forall (i=1:n)
mask(i,i) = .false.
end forall
r1 = 4_'aa'
r1 = minval(a, dim=1, mask=mask)
write(unit=r2,fmt='(I6.6)') minval(v,dim=1, mask=mask)
if (any(r1 /= r2)) STOP 10
r1 = 4_'xyz'
smask = .true.
r1 = minval(a, dim=1, mask=smask)
write (unit=r2,fmt='(I6.6)') minval(v,dim=1)
if (any (r1 /= r2)) STOP 11
smask = .false.
r1 = 4_'foobar'
r1 = minval(a, dim=1, mask=smask)
if (any(r1 /= all_full)) STOP 12
end program main