1! { dg-do run } 2! { dg-add-options ieee } 3! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } } 4 real :: a(3), nan, minf, pinf 5 integer :: ia(1) 6 real, allocatable :: c(:) 7 logical :: l 8 logical :: l2(3) 9 10 nan = 0.0 11 minf = 0.0 12 pinf = 0.0 13 nan = 0.0/nan 14 minf = -1.0/minf 15 pinf = 1.0/pinf 16 17 allocate (c(3)) 18 a(:) = nan 19 ia = minloc (a) 20 if (ia(1).ne.1) call abort 21 a(:) = pinf 22 ia = minloc (a) 23 if (ia(1).ne.1) call abort 24 a(1:2) = nan 25 ia = minloc (a) 26 if (ia(1).ne.3) call abort 27 a(2) = 1.0 28 ia = minloc (a) 29 if (ia(1).ne.2) call abort 30 a(2) = minf 31 ia = minloc (a) 32 if (ia(1).ne.2) call abort 33 c(:) = nan 34 ia = minloc (c) 35 if (ia(1).ne.1) call abort 36 c(:) = pinf 37 ia = minloc (c) 38 if (ia(1).ne.1) call abort 39 c(1:2) = nan 40 ia = minloc (c) 41 if (ia(1).ne.3) call abort 42 c(2) = 1.0 43 ia = minloc (c) 44 if (ia(1).ne.2) call abort 45 c(2) = minf 46 ia = minloc (c) 47 if (ia(1).ne.2) call abort 48 l = .false. 49 l2(:) = .false. 50 a(:) = nan 51 ia = minloc (a, mask = l) 52 if (ia(1).ne.0) call abort 53 ia = minloc (a, mask = l2) 54 if (ia(1).ne.0) call abort 55 a(:) = pinf 56 ia = minloc (a, mask = l) 57 if (ia(1).ne.0) call abort 58 ia = minloc (a, mask = l2) 59 if (ia(1).ne.0) call abort 60 a(1:2) = nan 61 ia = minloc (a, mask = l) 62 if (ia(1).ne.0) call abort 63 ia = minloc (a, mask = l2) 64 if (ia(1).ne.0) call abort 65 a(2) = 1.0 66 ia = minloc (a, mask = l) 67 if (ia(1).ne.0) call abort 68 ia = minloc (a, mask = l2) 69 if (ia(1).ne.0) call abort 70 a(2) = minf 71 ia = minloc (a, mask = l) 72 if (ia(1).ne.0) call abort 73 ia = minloc (a, mask = l2) 74 if (ia(1).ne.0) call abort 75 c(:) = nan 76 ia = minloc (c, mask = l) 77 if (ia(1).ne.0) call abort 78 ia = minloc (c, mask = l2) 79 if (ia(1).ne.0) call abort 80 c(:) = pinf 81 ia = minloc (c, mask = l) 82 if (ia(1).ne.0) call abort 83 ia = minloc (c, mask = l2) 84 if (ia(1).ne.0) call abort 85 c(1:2) = nan 86 ia = minloc (c, mask = l) 87 if (ia(1).ne.0) call abort 88 ia = minloc (c, mask = l2) 89 if (ia(1).ne.0) call abort 90 c(2) = 1.0 91 ia = minloc (c, mask = l) 92 if (ia(1).ne.0) call abort 93 ia = minloc (c, mask = l2) 94 if (ia(1).ne.0) call abort 95 c(2) = minf 96 ia = minloc (c, mask = l) 97 if (ia(1).ne.0) call abort 98 ia = minloc (c, mask = l2) 99 if (ia(1).ne.0) call abort 100 l = .true. 101 l2(:) = .true. 102 a(:) = nan 103 ia = minloc (a, mask = l) 104 if (ia(1).ne.1) call abort 105 ia = minloc (a, mask = l2) 106 if (ia(1).ne.1) call abort 107 a(:) = pinf 108 ia = minloc (a, mask = l) 109 if (ia(1).ne.1) call abort 110 ia = minloc (a, mask = l2) 111 if (ia(1).ne.1) call abort 112 a(1:2) = nan 113 ia = minloc (a, mask = l) 114 if (ia(1).ne.3) call abort 115 ia = minloc (a, mask = l2) 116 if (ia(1).ne.3) call abort 117 a(2) = 1.0 118 ia = minloc (a, mask = l) 119 if (ia(1).ne.2) call abort 120 ia = minloc (a, mask = l2) 121 if (ia(1).ne.2) call abort 122 a(2) = minf 123 ia = minloc (a, mask = l) 124 if (ia(1).ne.2) call abort 125 ia = minloc (a, mask = l2) 126 if (ia(1).ne.2) call abort 127 c(:) = nan 128 ia = minloc (c, mask = l) 129 if (ia(1).ne.1) call abort 130 ia = minloc (c, mask = l2) 131 if (ia(1).ne.1) call abort 132 c(:) = pinf 133 ia = minloc (c, mask = l) 134 if (ia(1).ne.1) call abort 135 ia = minloc (c, mask = l2) 136 if (ia(1).ne.1) call abort 137 c(1:2) = nan 138 ia = minloc (c, mask = l) 139 if (ia(1).ne.3) call abort 140 ia = minloc (c, mask = l2) 141 if (ia(1).ne.3) call abort 142 c(2) = 1.0 143 ia = minloc (c, mask = l) 144 if (ia(1).ne.2) call abort 145 ia = minloc (c, mask = l2) 146 if (ia(1).ne.2) call abort 147 c(2) = minf 148 ia = minloc (c, mask = l) 149 if (ia(1).ne.2) call abort 150 ia = minloc (c, mask = l2) 151 if (ia(1).ne.2) call abort 152 deallocate (c) 153 allocate (c(-2:-3)) 154 ia = minloc (c) 155 if (ia(1).ne.0) call abort 156end 157