aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/maxloc_2.f90
blob: d9d3100c674533b052a2ba554aa4d2c4e5d440bb (plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
! { dg-do run }
! { dg-add-options ieee }
  real :: a(3), nan, minf, pinf
  real, allocatable :: c(:)
  integer :: ia(1)
  logical :: l
  logical :: l2(3)

  nan = 0.0
  minf = 0.0
  pinf = 0.0
  nan = 0.0/nan
  minf = -1.0/minf
  pinf = 1.0/pinf

  allocate (c(3))
  a(:) = nan
  ia = maxloc (a)
  if (ia(1).ne.1) STOP 1
  a(:) = minf
  ia = maxloc (a)
  if (ia(1).ne.1) STOP 2
  a(1:2) = nan
  ia = maxloc (a)
  if (ia(1).ne.3) STOP 3
  a(2) = 1.0
  ia = maxloc (a)
  if (ia(1).ne.2) STOP 4
  a(2) = pinf
  ia = maxloc (a)
  if (ia(1).ne.2) STOP 5
  c(:) = nan
  ia = maxloc (c)
  if (ia(1).ne.1) STOP 6
  c(:) = minf
  ia = maxloc (c)
  if (ia(1).ne.1) STOP 7
  c(1:2) = nan
  ia = maxloc (c)
  if (ia(1).ne.3) STOP 8
  c(2) = 1.0
  ia = maxloc (c)
  if (ia(1).ne.2) STOP 9
  c(2) = pinf
  ia = maxloc (c)
  if (ia(1).ne.2) STOP 10
  l = .false.
  l2(:) = .false.
  a(:) = nan
  ia = maxloc (a, mask = l)
  if (ia(1).ne.0) STOP 11
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.0) STOP 12
  a(:) = minf
  ia = maxloc (a, mask = l)
  if (ia(1).ne.0) STOP 13
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.0) STOP 14
  a(1:2) = nan
  ia = maxloc (a, mask = l)
  if (ia(1).ne.0) STOP 15
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.0) STOP 16
  a(2) = 1.0
  ia = maxloc (a, mask = l)
  if (ia(1).ne.0) STOP 17
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.0) STOP 18
  a(2) = pinf
  ia = maxloc (a, mask = l)
  if (ia(1).ne.0) STOP 19
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.0) STOP 20
  c(:) = nan
  ia = maxloc (c, mask = l)
  if (ia(1).ne.0) STOP 21
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.0) STOP 22
  c(:) = minf
  ia = maxloc (c, mask = l)
  if (ia(1).ne.0) STOP 23
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.0) STOP 24
  c(1:2) = nan
  ia = maxloc (c, mask = l)
  if (ia(1).ne.0) STOP 25
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.0) STOP 26
  c(2) = 1.0
  ia = maxloc (c, mask = l)
  if (ia(1).ne.0) STOP 27
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.0) STOP 28
  c(2) = pinf
  ia = maxloc (c, mask = l)
  if (ia(1).ne.0) STOP 29
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.0) STOP 30
  l = .true.
  l2(:) = .true.
  a(:) = nan
  ia = maxloc (a, mask = l)
  if (ia(1).ne.1) STOP 31
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.1) STOP 32
  a(:) = minf
  ia = maxloc (a, mask = l)
  if (ia(1).ne.1) STOP 33
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.1) STOP 34
  a(1:2) = nan
  ia = maxloc (a, mask = l)
  if (ia(1).ne.3) STOP 35
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.3) STOP 36
  a(2) = 1.0
  ia = maxloc (a, mask = l)
  if (ia(1).ne.2) STOP 37
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.2) STOP 38
  a(2) = pinf
  ia = maxloc (a, mask = l)
  if (ia(1).ne.2) STOP 39
  ia = maxloc (a, mask = l2)
  if (ia(1).ne.2) STOP 40
  c(:) = nan
  ia = maxloc (c, mask = l)
  if (ia(1).ne.1) STOP 41
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.1) STOP 42
  c(:) = minf
  ia = maxloc (c, mask = l)
  if (ia(1).ne.1) STOP 43
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.1) STOP 44
  c(1:2) = nan
  ia = maxloc (c, mask = l)
  if (ia(1).ne.3) STOP 45
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.3) STOP 46
  c(2) = 1.0
  ia = maxloc (c, mask = l)
  if (ia(1).ne.2) STOP 47
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.2) STOP 48
  c(2) = pinf
  ia = maxloc (c, mask = l)
  if (ia(1).ne.2) STOP 49
  ia = maxloc (c, mask = l2)
  if (ia(1).ne.2) STOP 50
  deallocate (c)
  allocate (c(-2:-3))
  ia = maxloc (c)
  if (ia(1).ne.0) STOP 51
end