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