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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
! { dg-do run }
! { dg-options "-funsigned" }
program memain
implicit none
call test1
call test2
contains
subroutine test1
unsigned, dimension(3) :: v
unsigned :: t1, t2
unsigned(2), dimension(3,3) :: w
integer, dimension(3,3) :: j
integer :: di
v = [1u, 2u, 4294967286u]
t1 = maxval(v,dim=1)
if (t1 /= 4294967286u) error stop 1
t2 = minval(v,dim=1)
if (t2 /= 1u) error stop 2
call check_empty(0)
j = reshape([1,2,3,65534,5,1,65000,2,1],[3,3])
w = uint(j,2)
if (any(maxval(j,dim=1) /= int(maxval(w,dim=1)))) error stop 5
di = 2
if (any(maxval(j,dim=di) /= int(maxval(w,dim=di)))) error stop 6
end subroutine test1
subroutine check_empty(n)
integer, intent(in) :: n
unsigned, dimension(n) :: empty
if (minval(empty,dim=1) /= 4294967295u) error stop 3
if (maxval(empty,dim=1) /= 0u) error stop 4
end subroutine check_empty
subroutine test2
integer :: i
unsigned, dimension(3), parameter :: v = [1u, 2u, 4294967286u]
unsigned, parameter :: t1 = maxval(v,dim=1)
unsigned, parameter :: t2 = minval(v,dim=1)
unsigned, parameter, dimension(2:1) :: empty = [(0u,i=2,1)]
unsigned, parameter :: t3 = minval(empty,1)
unsigned, parameter :: t4 = maxval(empty,1)
unsigned(2), parameter, dimension(2:1,2:1) :: e2 = reshape(empty,[0,0])
integer, parameter, dimension(3,3) :: j = reshape([1,2,3,65534,5,1,65000,2,1],[3,3])
integer, parameter, dimension(3) :: maxvj = maxval(j,1), minvj=minval(j,2)
unsigned, parameter, dimension(3,3) :: w = uint(j,2)
unsigned(2), parameter, dimension(3) :: maxvw = maxval(w,1), minvw = minval(w,2)
if (t1 /= 4294967286u) error stop 11
if (t2 /= 1u) error stop 12
if (t3 /= 4294967295u) error stop 13
if (t4 /= 0u) error stop 14
if (any(maxvj /= int(maxvw))) error stop 15
if (any(minvj /= int(minvw))) error stop 16
end subroutine test2
end program memain
|