[AMDGPU] Test codegen'ing True16 additions.
[llvm-project.git] / flang / test / Evaluate / fold-out_of_range.f90
blobfd1b1c286f2fb180b547805ca43b5fb278f7617f
1 ! RUN: %python %S/test_folding.py %s %flang_fc1
2 ! UNSUPPORTED: target=powerpc{{.*}}, target=aarch{{.*}}, system-windows, system-solaris
3 ! Tests folding of OUT_OF_RANGE().
4 module m
5 integer(1), parameter :: i1v(*) = [ -huge(1_1) - 1_1, huge(1_1) ]
6 integer(2), parameter :: i2v(*) = [ -huge(1_2) - 1_2, huge(1_2) ]
7 integer(4), parameter :: i4v(*) = [ -huge(1_4) - 1_4, huge(1_4) ]
8 integer(8), parameter :: i8v(*) = [ -huge(1_8) - 1_8, huge(1_8) ]
9 integer(16), parameter :: i16v(*) = [ -huge(1_16) - 1_16, huge(1_16) ]
10 !WARN: warning: division by zero
11 !WARN: warning: invalid argument on division
12 real(2), parameter :: r2v(*) = [ -huge(1._2), huge(1._2), 1._2/0._2, 0._2/0._2 ]
13 !WARN: warning: division by zero
14 !WARN: warning: invalid argument on division
15 real(3), parameter :: r3v(*) = [ -huge(1._3), huge(1._3), 1._3/0._3, 0._3/0._3 ]
16 !WARN: warning: division by zero
17 !WARN: warning: invalid argument on division
18 real(4), parameter :: r4v(*) = [ -huge(1._4), huge(1._4), 1._4/0._4, 0._4/0._4 ]
19 !WARN: warning: division by zero
20 !WARN: warning: invalid argument on division
21 real(8), parameter :: r8v(*) = [ -huge(1._8), huge(1._8), 1._8/0._8, 0._8/0._8 ]
22 !WARN: warning: division by zero
23 !WARN: warning: invalid argument on division
24 real(10), parameter :: r10v(*) = [ -huge(1._10), huge(1._10), 1._10/0._10, 0._10/0._10 ]
25 !WARN: warning: division by zero
26 !WARN: warning: invalid argument on division
27 real(16), parameter :: r16v(*) = [ -huge(1._16), huge(1._16), 1._16/0._16, 0._16/0._16 ]
28 logical, parameter :: finites(*) = [ .true., .true., .false., .false. ]
30 logical, parameter :: test_i1i1 = .not. any(out_of_range(i1v, 1_1))
31 logical, parameter :: test_i1i2 = .not. any(out_of_range(i1v, 1_2))
32 logical, parameter :: test_i1i4 = .not. any(out_of_range(i1v, 1_4))
33 logical, parameter :: test_i1i8 = .not. any(out_of_range(i1v, 1_8))
34 logical, parameter :: test_i1i16 = .not. any(out_of_range(i1v, 1_16))
35 logical, parameter :: test_i2i1 = all(out_of_range(i2v, 1_1))
36 logical, parameter :: test_i2i2 = .not. any(out_of_range(i2v, 1_2))
37 logical, parameter :: test_i2i4 = .not. any(out_of_range(i2v, 1_4))
38 logical, parameter :: test_i2i8 = .not. any(out_of_range(i2v, 1_8))
39 logical, parameter :: test_i2i16 = .not. any(out_of_range(i2v, 1_16))
40 logical, parameter :: test_i4i1 = all(out_of_range(i4v, 1_1))
41 logical, parameter :: test_i4i2 = all(out_of_range(i4v, 1_2))
42 logical, parameter :: test_i4i4 = .not. any(out_of_range(i4v, 1_4))
43 logical, parameter :: test_i4i8 = .not. any(out_of_range(i4v, 1_8))
44 logical, parameter :: test_i4i16 = .not. any(out_of_range(i4v, 1_16))
45 logical, parameter :: test_i8i1 = all(out_of_range(i8v, 1_1))
46 logical, parameter :: test_i8i2 = all(out_of_range(i8v, 1_2))
47 logical, parameter :: test_i8i4 = all(out_of_range(i8v, 1_4))
48 logical, parameter :: test_i8i8 = .not. any(out_of_range(i8v, 1_8))
49 logical, parameter :: test_i8i16 = .not. any(out_of_range(i8v, 1_16))
50 logical, parameter :: test_i16i1 = all(out_of_range(i16v, 1_1))
51 logical, parameter :: test_i16i2 = all(out_of_range(i16v, 1_2))
52 logical, parameter :: test_i16i4 = all(out_of_range(i16v, 1_4))
53 logical, parameter :: test_i16i8 = all(out_of_range(i16v, 1_8))
54 logical, parameter :: test_i16i16 = .not. any(out_of_range(i16v, 1_16))
56 logical, parameter :: test_i1r2 = .not. any(out_of_range(i1v, 1._2))
57 logical, parameter :: test_i1r3 = .not. any(out_of_range(i1v, 1._3))
58 logical, parameter :: test_i1r4 = .not. any(out_of_range(i1v, 1._4))
59 logical, parameter :: test_i1r8 = .not. any(out_of_range(i1v, 1._8))
60 logical, parameter :: test_i1r10 = .not. any(out_of_range(i1v, 1._10))
61 logical, parameter :: test_i1r16 = .not. any(out_of_range(i1v, 1._16))
62 logical, parameter :: test_i2r2 = .not. any(out_of_range(i2v, 1._2))
63 logical, parameter :: test_i2r3 = .not. any(out_of_range(i2v, 1._3))
64 logical, parameter :: test_i2r4 = .not. any(out_of_range(i2v, 1._4))
65 logical, parameter :: test_i2r8 = .not. any(out_of_range(i2v, 1._8))
66 logical, parameter :: test_i2r10 = .not. any(out_of_range(i2v, 1._10))
67 logical, parameter :: test_i2r16 = .not. any(out_of_range(i2v, 1._16))
68 logical, parameter :: test_i4r2 = all(out_of_range(i4v, 1._2))
69 logical, parameter :: test_i4r3 = .not. any(out_of_range(i4v, 1._3))
70 logical, parameter :: test_i4r4 = .not. any(out_of_range(i4v, 1._4))
71 logical, parameter :: test_i4r8 = .not. any(out_of_range(i4v, 1._8))
72 logical, parameter :: test_i4r10 = .not. any(out_of_range(i4v, 1._10))
73 logical, parameter :: test_i4r16 = .not. any(out_of_range(i4v, 1._16))
74 logical, parameter :: test_i8r2 = all(out_of_range(i8v, 1._2))
75 logical, parameter :: test_i8r3 = .not. any(out_of_range(i8v, 1._3))
76 logical, parameter :: test_i8r4 = .not. any(out_of_range(i8v, 1._4))
77 logical, parameter :: test_i8r8 = .not. any(out_of_range(i8v, 1._8))
78 logical, parameter :: test_i8r10 = .not. any(out_of_range(i8v, 1._10))
79 logical, parameter :: test_i8r16 = .not. any(out_of_range(i8v, 1._16))
80 logical, parameter :: test_i16r2 = all(out_of_range(i16v, 1._2))
81 logical, parameter :: test_i16r3 = .not. any(out_of_range(i16v, 1._3))
82 logical, parameter :: test_i16r4 = .not. any(out_of_range(i16v, 1._4))
83 logical, parameter :: test_i16r8 = .not. any(out_of_range(i16v, 1._8))
84 logical, parameter :: test_i16r10 = .not. any(out_of_range(i16v, 1._10))
85 logical, parameter :: test_i16r16 = .not. any(out_of_range(i16v, 1._16))
87 logical, parameter :: test_r2r2 = .not. any(out_of_range(r2v, 1._2))
88 logical, parameter :: test_r2r3 = .not. any(out_of_range(r2v, 1._3))
89 logical, parameter :: test_r2r4 = .not. any(out_of_range(r2v, 1._4))
90 logical, parameter :: test_r2r8 = .not. any(out_of_range(r2v, 1._8))
91 logical, parameter :: test_r2r10 = .not. any(out_of_range(r2v, 1._10))
92 logical, parameter :: test_r2r16 = .not. any(out_of_range(r2v, 1._16))
93 logical, parameter :: test_r3r2 = all(out_of_range(r3v, 1._2) .eqv. finites)
94 logical, parameter :: test_r3r3 = .not. any(out_of_range(r3v, 1._3))
95 logical, parameter :: test_r3r4 = .not. any(out_of_range(r3v, 1._4))
96 logical, parameter :: test_r3r8 = .not. any(out_of_range(r3v, 1._8))
97 logical, parameter :: test_r3r10 = .not. any(out_of_range(r3v, 1._10))
98 logical, parameter :: test_r3r16 = .not. any(out_of_range(r3v, 1._16))
99 logical, parameter :: test_r4r2 = all(out_of_range(r4v, 1._2) .eqv. finites)
100 logical, parameter :: test_r4r3 = all(out_of_range(r4v, 1._3) .eqv. finites)
101 logical, parameter :: test_r4r4 = .not. any(out_of_range(r4v, 1._4))
102 logical, parameter :: test_r4r8 = .not. any(out_of_range(r4v, 1._8))
103 logical, parameter :: test_r4r10 = .not. any(out_of_range(r4v, 1._10))
104 logical, parameter :: test_r4r16 = .not. any(out_of_range(r4v, 1._16))
105 logical, parameter :: test_r8r2 = all(out_of_range(r8v, 1._2) .eqv. finites)
106 logical, parameter :: test_r8r3 = all(out_of_range(r8v, 1._3) .eqv. finites)
107 logical, parameter :: test_r8r4 = all(out_of_range(r8v, 1._4) .eqv. finites)
108 logical, parameter :: test_r8r8 = .not. any(out_of_range(r8v, 1._8))
109 logical, parameter :: test_r8r10 = .not. any(out_of_range(r8v, 1._10))
110 logical, parameter :: test_r8r16 = .not. any(out_of_range(r8v, 1._16))
111 logical, parameter :: test_r10r2 = all(out_of_range(r10v, 1._2) .eqv. finites)
112 logical, parameter :: test_r10r3 = all(out_of_range(r10v, 1._3) .eqv. finites)
113 logical, parameter :: test_r10r4 = all(out_of_range(r10v, 1._4) .eqv. finites)
114 logical, parameter :: test_r10r8 = all(out_of_range(r10v, 1._8) .eqv. finites)
115 logical, parameter :: test_r10r10 = .not. any(out_of_range(r10v, 1._10))
116 logical, parameter :: test_r10r16 = .not. any(out_of_range(r10v, 1._16))
117 logical, parameter :: test_r16r2 = all(out_of_range(r16v, 1._2) .eqv. finites)
118 logical, parameter :: test_r16r3 = all(out_of_range(r16v, 1._3) .eqv. finites)
119 logical, parameter :: test_r16r4 = all(out_of_range(r16v, 1._4) .eqv. finites)
120 logical, parameter :: test_r16r8 = all(out_of_range(r16v, 1._8) .eqv. finites)
121 logical, parameter :: test_r16r10 = all(out_of_range(r16v, 1._10) .eqv. finites)
122 logical, parameter :: test_r16r16 = .not. any(out_of_range(r16v, 1._16))
124 logical, parameter :: test_r2i1 = all(out_of_range(r2v, 1_1))
125 logical, parameter :: test_r2i2 = all(out_of_range(r2v, 1_2))
126 logical, parameter :: test_r2i4 = all(out_of_range(r2v, 1_4) .neqv. finites)
127 logical, parameter :: test_r2i8 = all(out_of_range(r2v, 1_8) .neqv. finites)
128 logical, parameter :: test_r2i16 = all(out_of_range(r2v, 1_16) .neqv. finites)
129 logical, parameter :: test_r3i1 = all(out_of_range(r3v, 1_1))
130 logical, parameter :: test_r3i2 = all(out_of_range(r3v, 1_2))
131 logical, parameter :: test_r3i4 = all(out_of_range(r3v, 1_4))
132 logical, parameter :: test_r3i8 = all(out_of_range(r3v, 1_8))
133 logical, parameter :: test_r3i16 = all(out_of_range(r3v, 1_16))
134 logical, parameter :: test_r4i1 = all(out_of_range(r4v, 1_1))
135 logical, parameter :: test_r4i2 = all(out_of_range(r4v, 1_2))
136 logical, parameter :: test_r4i4 = all(out_of_range(r4v, 1_4))
137 logical, parameter :: test_r4i8 = all(out_of_range(r4v, 1_8))
138 logical, parameter :: test_r4i16 = all(out_of_range(r4v, 1_16))
139 logical, parameter :: test_r8i1 = all(out_of_range(r8v, 1_1))
140 logical, parameter :: test_r8i2 = all(out_of_range(r8v, 1_2))
141 logical, parameter :: test_r8i4 = all(out_of_range(r8v, 1_4))
142 logical, parameter :: test_r8i8 = all(out_of_range(r8v, 1_8))
143 logical, parameter :: test_r8i16 = all(out_of_range(r8v, 1_16))
144 logical, parameter :: test_r10i1 = all(out_of_range(r10v, 1_1))
145 logical, parameter :: test_r10i2 = all(out_of_range(r10v, 1_2))
146 logical, parameter :: test_r10i4 = all(out_of_range(r10v, 1_4))
147 logical, parameter :: test_r10i8 = all(out_of_range(r10v, 1_8))
148 logical, parameter :: test_r10i16 = all(out_of_range(r10v, 1_16))
149 logical, parameter :: test_r16i1 = all(out_of_range(r16v, 1_1))
150 logical, parameter :: test_r16i2 = all(out_of_range(r16v, 1_2))
151 logical, parameter :: test_r16i4 = all(out_of_range(r16v, 1_4))
152 logical, parameter :: test_r16i8 = all(out_of_range(r16v, 1_8))
153 logical, parameter :: test_r16i16 = all(out_of_range(r16v, 1_16))
155 logical, parameter :: test_r2i1r = all(out_of_range(r2v, 1_1, .true.))
156 logical, parameter :: test_r2i2r = all(out_of_range(r2v, 1_2, .true.))
157 logical, parameter :: test_r2i4r = all(out_of_range(r2v, 1_4, .true.) .neqv. finites)
158 logical, parameter :: test_r2i8r = all(out_of_range(r2v, 1_8, .true.) .neqv. finites)
159 logical, parameter :: test_r2i16r = all(out_of_range(r2v, 1_16, .true.) .neqv. finites)
160 logical, parameter :: test_r3i1r = all(out_of_range(r3v, 1_1, .true.))
161 logical, parameter :: test_r3i2r = all(out_of_range(r3v, 1_2, .true.))
162 logical, parameter :: test_r3i4r = all(out_of_range(r3v, 1_4, .true.))
163 logical, parameter :: test_r3i8r = all(out_of_range(r3v, 1_8, .true.))
164 logical, parameter :: test_r3i16r = all(out_of_range(r3v, 1_16, .true.))
165 logical, parameter :: test_r4i1r = all(out_of_range(r4v, 1_1, .true.))
166 logical, parameter :: test_r4i2r = all(out_of_range(r4v, 1_2, .true.))
167 logical, parameter :: test_r4i4r = all(out_of_range(r4v, 1_4, .true.))
168 logical, parameter :: test_r4i8r = all(out_of_range(r4v, 1_8, .true.))
169 logical, parameter :: test_r4i16r = all(out_of_range(r4v, 1_16, .true.))
170 logical, parameter :: test_r8i1r = all(out_of_range(r8v, 1_1, .true.))
171 logical, parameter :: test_r8i2r = all(out_of_range(r8v, 1_2, .true.))
172 logical, parameter :: test_r8i4r = all(out_of_range(r8v, 1_4, .true.))
173 logical, parameter :: test_r8i8r = all(out_of_range(r8v, 1_8, .true.))
174 logical, parameter :: test_r8i16r = all(out_of_range(r8v, 1_16, .true.))
175 logical, parameter :: test_r10i1r = all(out_of_range(r10v, 1_1, .true.))
176 logical, parameter :: test_r10i2r = all(out_of_range(r10v, 1_2, .true.))
177 logical, parameter :: test_r10i4r = all(out_of_range(r10v, 1_4, .true.))
178 logical, parameter :: test_r10i8r = all(out_of_range(r10v, 1_8, .true.))
179 logical, parameter :: test_r10i16r = all(out_of_range(r10v, 1_16, .true.))
180 logical, parameter :: test_r16i1r = all(out_of_range(r16v, 1_1, .true.))
181 logical, parameter :: test_r16i2r = all(out_of_range(r16v, 1_2, .true.))
182 logical, parameter :: test_r16i4r = all(out_of_range(r16v, 1_4, .true.))
183 logical, parameter :: test_r16i8r = all(out_of_range(r16v, 1_8, .true.))
184 logical, parameter :: test_r16i16r = all(out_of_range(r16v, 1_16, .true.))
186 logical, parameter :: test_r2i1u = all(out_of_range(real(i1v, kind=2)+.5_2, 1_1, .false.) .eqv. [.false., .false.])
187 logical, parameter :: test_r2i1ur = all(out_of_range(real(i1v, kind=2)+.5_2, 1_1, .true.) .eqv. [.false., .true.])
188 logical, parameter :: test_r2i1d = all(out_of_range(real(i1v, kind=2)-.5_2, 1_1, .false.) .eqv. [.false., .false.])
189 logical, parameter :: test_r2i1dr = all(out_of_range(real(i1v, kind=2)-.5_2, 1_1, .true.) .eqv. [.true., .false.])
190 logical, parameter :: test_r2i2u = all(out_of_range(real(i2v, kind=2)+.5_2, 1_2, .false.) .eqv. [.false., .true.])
191 logical, parameter :: test_r2i2ur = all(out_of_range(real(i2v, kind=2)+.5_2, 1_2, .true.) .eqv. [.false., .true.])
192 logical, parameter :: test_r2i2d = all(out_of_range(real(i2v, kind=2)-.5_2, 1_2, .false.) .eqv. [.false., .true.])
193 logical, parameter :: test_r2i2dr = all(out_of_range(real(i2v, kind=2)-.5_2, 1_2, .true.) .eqv. [.false., .true.])
194 !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion
195 logical, parameter :: test_r2i4u = all(out_of_range(real(i4v, kind=2)+.5_2, 1_4, .false.) .eqv. [.true., .true.])
196 !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion
197 logical, parameter :: test_r2i4ur = all(out_of_range(real(i4v, kind=2)+.5_2, 1_4, .true.) .eqv. [.true., .true.])
198 !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion
199 logical, parameter :: test_r2i4d = all(out_of_range(real(i4v, kind=2)-.5_2, 1_4, .false.) .eqv. [.true., .true.])
200 !WARN: warning: overflow on INTEGER(4) to REAL(2) conversion
201 logical, parameter :: test_r2i4dr = all(out_of_range(real(i4v, kind=2)-.5_2, 1_4, .true.) .eqv. [.true., .true.])
202 !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion
203 logical, parameter :: test_r2i8u = all(out_of_range(real(i8v, kind=2)+.5_2, 1_8, .false.) .eqv. [.true., .true.])
204 !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion
205 logical, parameter :: test_r2i8ur = all(out_of_range(real(i8v, kind=2)+.5_2, 1_8, .true.) .eqv. [.true., .true.])
206 !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion
207 logical, parameter :: test_r2i8d = all(out_of_range(real(i8v, kind=2)-.5_2, 1_8, .false.) .eqv. [.true., .true.])
208 !WARN: warning: overflow on INTEGER(8) to REAL(2) conversion
209 logical, parameter :: test_r2i8dr = all(out_of_range(real(i8v, kind=2)-.5_2, 1_8, .true.) .eqv. [.true., .true.])
210 !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion
211 logical, parameter :: test_r2i16u = all(out_of_range(real(i16v, kind=2)+.5_2, 1_16, .false.) .eqv. [.true., .true.])
212 !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion
213 logical, parameter :: test_r2i16ur = all(out_of_range(real(i16v, kind=2)+.5_2, 1_16, .true.) .eqv. [.true., .true.])
214 !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion
215 logical, parameter :: test_r2i16d = all(out_of_range(real(i16v, kind=2)-.5_2, 1_16, .false.) .eqv. [.true., .true.])
216 !WARN: warning: overflow on INTEGER(16) to REAL(2) conversion
217 logical, parameter :: test_r2i16dr = all(out_of_range(real(i16v, kind=2)-.5_2, 1_16, .true.) .eqv. [.true., .true.])
219 logical, parameter :: test_r3i1u = all(out_of_range(real(i1v, kind=3)+.5_3, 1_1, .false.) .eqv. [.false., .false.])
220 logical, parameter :: test_r3i1ur = all(out_of_range(real(i1v, kind=3)+.5_3, 1_1, .true.) .eqv. [.false., .true.])
221 logical, parameter :: test_r3i1d = all(out_of_range(real(i1v, kind=3)-.5_3, 1_1, .false.) .eqv. [.false., .false.])
222 logical, parameter :: test_r3i1dr = all(out_of_range(real(i1v, kind=3)-.5_3, 1_1, .true.) .eqv. [.false., .false.])
223 logical, parameter :: test_r3i2u = all(out_of_range(real(i2v, kind=3)+.5_3, 1_2, .false.) .eqv. [.false., .true.])
224 logical, parameter :: test_r3i2ur = all(out_of_range(real(i2v, kind=3)+.5_3, 1_2, .true.) .eqv. [.false., .true.])
225 logical, parameter :: test_r3i2d = all(out_of_range(real(i2v, kind=3)-.5_3, 1_2, .false.) .eqv. [.false., .true.])
226 logical, parameter :: test_r3i2dr = all(out_of_range(real(i2v, kind=3)-.5_3, 1_2, .true.) .eqv. [.false., .true.])
227 logical, parameter :: test_r3i4u = all(out_of_range(real(i4v, kind=3)+.5_3, 1_4, .false.) .eqv. [.false., .true.])
228 logical, parameter :: test_r3i4ur = all(out_of_range(real(i4v, kind=3)+.5_3, 1_4, .true.) .eqv. [.false., .true.])
229 logical, parameter :: test_r3i4d = all(out_of_range(real(i4v, kind=3)-.5_3, 1_4, .false.) .eqv. [.false., .true.])
230 logical, parameter :: test_r3i4dr = all(out_of_range(real(i4v, kind=3)-.5_3, 1_4, .true.) .eqv. [.false., .true.])
231 logical, parameter :: test_r3i8u = all(out_of_range(real(i8v, kind=3)+.5_3, 1_8, .false.) .eqv. [.false., .true.])
232 logical, parameter :: test_r3i8ur = all(out_of_range(real(i8v, kind=3)+.5_3, 1_8, .true.) .eqv. [.false., .true.])
233 logical, parameter :: test_r3i8d = all(out_of_range(real(i8v, kind=3)-.5_3, 1_8, .false.) .eqv. [.false., .true.])
234 logical, parameter :: test_r3i8dr = all(out_of_range(real(i8v, kind=3)-.5_3, 1_8, .true.) .eqv. [.false., .true.])
235 logical, parameter :: test_r3i16u = all(out_of_range(real(i16v, kind=3)+.5_3, 1_16, .false.) .eqv. [.false., .true.])
236 logical, parameter :: test_r3i16ur = all(out_of_range(real(i16v, kind=3)+.5_3, 1_16, .true.) .eqv. [.false., .true.])
237 logical, parameter :: test_r3i16d = all(out_of_range(real(i16v, kind=3)-.5_3, 1_16, .false.) .eqv. [.false., .true.])
238 logical, parameter :: test_r3i16dr = all(out_of_range(real(i16v, kind=3)-.5_3, 1_16, .true.) .eqv. [.false., .true.])
240 logical, parameter :: test_r4i1u = all(out_of_range(real(i1v, kind=4)+.5_4, 1_1, .false.) .eqv. [.false., .false.])
241 logical, parameter :: test_r4i1ur = all(out_of_range(real(i1v, kind=4)+.5_4, 1_1, .true.) .eqv. [.false., .true.])
242 logical, parameter :: test_r4i1d = all(out_of_range(real(i1v, kind=4)-.5_4, 1_1, .false.) .eqv. [.false., .false.])
243 logical, parameter :: test_r4i1dr = all(out_of_range(real(i1v, kind=4)-.5_4, 1_1, .true.) .eqv. [.true., .false.])
244 logical, parameter :: test_r4i2u = all(out_of_range(real(i2v, kind=4)+.5_4, 1_2, .false.) .eqv. [.false., .false.])
245 logical, parameter :: test_r4i2ur = all(out_of_range(real(i2v, kind=4)+.5_4, 1_2, .true.) .eqv. [.false., .true.])
246 logical, parameter :: test_r4i2d = all(out_of_range(real(i2v, kind=4)-.5_4, 1_2, .false.) .eqv. [.false., .false.])
247 logical, parameter :: test_r4i2dr = all(out_of_range(real(i2v, kind=4)-.5_4, 1_2, .true.) .eqv. [.true., .false.])
248 logical, parameter :: test_r4i4u = all(out_of_range(real(i4v, kind=4)+.5_4, 1_4, .false.) .eqv. [.false., .true.])
249 logical, parameter :: test_r4i4ur = all(out_of_range(real(i4v, kind=4)+.5_4, 1_4, .true.) .eqv. [.false., .true.])
250 logical, parameter :: test_r4i4d = all(out_of_range(real(i4v, kind=4)-.5_4, 1_4, .false.) .eqv. [.false., .true.])
251 logical, parameter :: test_r4i4dr = all(out_of_range(real(i4v, kind=4)-.5_4, 1_4, .true.) .eqv. [.false., .true.])
252 logical, parameter :: test_r4i8u = all(out_of_range(real(i8v, kind=4)+.5_4, 1_8, .false.) .eqv. [.false., .true.])
253 logical, parameter :: test_r4i8ur = all(out_of_range(real(i8v, kind=4)+.5_4, 1_8, .true.) .eqv. [.false., .true.])
254 logical, parameter :: test_r4i8d = all(out_of_range(real(i8v, kind=4)-.5_4, 1_8, .false.) .eqv. [.false., .true.])
255 logical, parameter :: test_r4i8dr = all(out_of_range(real(i8v, kind=4)-.5_4, 1_8, .true.) .eqv. [.false., .true.])
256 logical, parameter :: test_r4i16u = all(out_of_range(real(i16v, kind=4)+.5_4, 1_16, .false.) .eqv. [.false., .true.])
257 logical, parameter :: test_r4i16ur = all(out_of_range(real(i16v, kind=4)+.5_4, 1_16, .true.) .eqv. [.false., .true.])
258 logical, parameter :: test_r4i16d = all(out_of_range(real(i16v, kind=4)-.5_4, 1_16, .false.) .eqv. [.false., .true.])
259 logical, parameter :: test_r4i16dr = all(out_of_range(real(i16v, kind=4)-.5_4, 1_16, .true.) .eqv. [.false., .true.])
261 logical, parameter :: test_r8i1u = all(out_of_range(real(i1v, kind=8)+.5_8, 1_1, .false.) .eqv. [.false., .false.])
262 logical, parameter :: test_r8i1ur = all(out_of_range(real(i1v, kind=8)+.5_8, 1_1, .true.) .eqv. [.false., .true.])
263 logical, parameter :: test_r8i1d = all(out_of_range(real(i1v, kind=8)-.5_8, 1_1, .false.) .eqv. [.false., .false.])
264 logical, parameter :: test_r8i1dr = all(out_of_range(real(i1v, kind=8)-.5_8, 1_1, .true.) .eqv. [.true., .false.])
265 logical, parameter :: test_r8i2u = all(out_of_range(real(i2v, kind=8)+.5_8, 1_2, .false.) .eqv. [.false., .false.])
266 logical, parameter :: test_r8i2ur = all(out_of_range(real(i2v, kind=8)+.5_8, 1_2, .true.) .eqv. [.false., .true.])
267 logical, parameter :: test_r8i2d = all(out_of_range(real(i2v, kind=8)-.5_8, 1_2, .false.) .eqv. [.false., .false.])
268 logical, parameter :: test_r8i2dr = all(out_of_range(real(i2v, kind=8)-.5_8, 1_2, .true.) .eqv. [.true., .false.])
269 logical, parameter :: test_r8i4u = all(out_of_range(real(i4v, kind=8)+.5_8, 1_4, .false.) .eqv. [.false., .false.])
270 logical, parameter :: test_r8i4ur = all(out_of_range(real(i4v, kind=8)+.5_8, 1_4, .true.) .eqv. [.false., .true.])
271 logical, parameter :: test_r8i4d = all(out_of_range(real(i4v, kind=8)-.5_8, 1_4, .false.) .eqv. [.false., .false.])
272 logical, parameter :: test_r8i4dr = all(out_of_range(real(i4v, kind=8)-.5_8, 1_4, .true.) .eqv. [.true., .false.])
273 logical, parameter :: test_r8i8u = all(out_of_range(real(i8v, kind=8)+.5_8, 1_8, .false.) .eqv. [.false., .true.])
274 logical, parameter :: test_r8i8ur = all(out_of_range(real(i8v, kind=8)+.5_8, 1_8, .true.) .eqv. [.false., .true.])
275 logical, parameter :: test_r8i8d = all(out_of_range(real(i8v, kind=8)-.5_8, 1_8, .false.) .eqv. [.false., .true.])
276 logical, parameter :: test_r8i8dr = all(out_of_range(real(i8v, kind=8)-.5_8, 1_8, .true.) .eqv. [.false., .true.])
277 logical, parameter :: test_r8i16u = all(out_of_range(real(i16v, kind=8)+.5_8, 1_16, .false.) .eqv. [.false., .true.])
278 logical, parameter :: test_r8i16ur = all(out_of_range(real(i16v, kind=8)+.5_8, 1_16, .true.) .eqv. [.false., .true.])
279 logical, parameter :: test_r8i16d = all(out_of_range(real(i16v, kind=8)-.5_8, 1_16, .false.) .eqv. [.false., .true.])
280 logical, parameter :: test_r8i16dr = all(out_of_range(real(i16v, kind=8)-.5_8, 1_16, .true.) .eqv. [.false., .true.])
282 logical, parameter :: test_r10i1u = all(out_of_range(real(i1v, kind=10)+.5_10, 1_1, .false.) .eqv. [.false., .false.])
283 logical, parameter :: test_r10i1ur = all(out_of_range(real(i1v, kind=10)+.5_10, 1_1, .true.) .eqv. [.false., .true.])
284 logical, parameter :: test_r10i1d = all(out_of_range(real(i1v, kind=10)-.5_10, 1_1, .false.) .eqv. [.false., .false.])
285 logical, parameter :: test_r10i1dr = all(out_of_range(real(i1v, kind=10)-.5_10, 1_1, .true.) .eqv. [.true., .false.])
286 logical, parameter :: test_r10i2u = all(out_of_range(real(i2v, kind=10)+.5_10, 1_2, .false.) .eqv. [.false., .false.])
287 logical, parameter :: test_r10i2ur = all(out_of_range(real(i2v, kind=10)+.5_10, 1_2, .true.) .eqv. [.false., .true.])
288 logical, parameter :: test_r10i2d = all(out_of_range(real(i2v, kind=10)-.5_10, 1_2, .false.) .eqv. [.false., .false.])
289 logical, parameter :: test_r10i2dr = all(out_of_range(real(i2v, kind=10)-.5_10, 1_2, .true.) .eqv. [.true., .false.])
290 logical, parameter :: test_r10i4u = all(out_of_range(real(i4v, kind=10)+.5_10, 1_4, .false.) .eqv. [.false., .false.])
291 logical, parameter :: test_r10i4ur = all(out_of_range(real(i4v, kind=10)+.5_10, 1_4, .true.) .eqv. [.false., .true.])
292 logical, parameter :: test_r10i4d = all(out_of_range(real(i4v, kind=10)-.5_10, 1_4, .false.) .eqv. [.false., .false.])
293 logical, parameter :: test_r10i4dr = all(out_of_range(real(i4v, kind=10)-.5_10, 1_4, .true.) .eqv. [.true., .false.])
294 logical, parameter :: test_r10i8u = all(out_of_range(real(i8v, kind=10)+.5_10, 1_8, .false.) .eqv. [.false., .false.])
295 logical, parameter :: test_r10i8ur = all(out_of_range(real(i8v, kind=10)+.5_10, 1_8, .true.) .eqv. [.false., .true.])
296 logical, parameter :: test_r10i8d = all(out_of_range(real(i8v, kind=10)-.5_10, 1_8, .false.) .eqv. [.false., .false.])
297 logical, parameter :: test_r10i8dr = all(out_of_range(real(i8v, kind=10)-.5_10, 1_8, .true.) .eqv. [.false., .false.])
298 logical, parameter :: test_r10i16u = all(out_of_range(real(i16v, kind=10)+.5_10, 1_16, .false.) .eqv. [.false., .true.])
299 logical, parameter :: test_r10i16ur = all(out_of_range(real(i16v, kind=10)+.5_10, 1_16, .true.) .eqv. [.false., .true.])
300 logical, parameter :: test_r10i16d = all(out_of_range(real(i16v, kind=10)-.5_10, 1_16, .false.) .eqv. [.false., .true.])
301 logical, parameter :: test_r10i16dr = all(out_of_range(real(i16v, kind=10)-.5_10, 1_16, .true.) .eqv. [.false., .true.])
303 logical, parameter :: test_r16i1u = all(out_of_range(real(i1v, kind=16)+.5_16, 1_1, .false.) .eqv. [.false., .false.])
304 logical, parameter :: test_r16i1ur = all(out_of_range(real(i1v, kind=16)+.5_16, 1_1, .true.) .eqv. [.false., .true.])
305 logical, parameter :: test_r16i1d = all(out_of_range(real(i1v, kind=16)-.5_16, 1_1, .false.) .eqv. [.false., .false.])
306 logical, parameter :: test_r16i1dr = all(out_of_range(real(i1v, kind=16)-.5_16, 1_1, .true.) .eqv. [.true., .false.])
307 logical, parameter :: test_r16i2u = all(out_of_range(real(i2v, kind=16)+.5_16, 1_2, .false.) .eqv. [.false., .false.])
308 logical, parameter :: test_r16i2ur = all(out_of_range(real(i2v, kind=16)+.5_16, 1_2, .true.) .eqv. [.false., .true.])
309 logical, parameter :: test_r16i2d = all(out_of_range(real(i2v, kind=16)-.5_16, 1_2, .false.) .eqv. [.false., .false.])
310 logical, parameter :: test_r16i2dr = all(out_of_range(real(i2v, kind=16)-.5_16, 1_2, .true.) .eqv. [.true., .false.])
311 logical, parameter :: test_r16i4u = all(out_of_range(real(i4v, kind=16)+.5_16, 1_4, .false.) .eqv. [.false., .false.])
312 logical, parameter :: test_r16i4ur = all(out_of_range(real(i4v, kind=16)+.5_16, 1_4, .true.) .eqv. [.false., .true.])
313 logical, parameter :: test_r16i4d = all(out_of_range(real(i4v, kind=16)-.5_16, 1_4, .false.) .eqv. [.false., .false.])
314 logical, parameter :: test_r16i4dr = all(out_of_range(real(i4v, kind=16)-.5_16, 1_4, .true.) .eqv. [.true., .false.])
315 logical, parameter :: test_r16i8u = all(out_of_range(real(i8v, kind=16)+.5_16, 1_8, .false.) .eqv. [.false., .false.])
316 logical, parameter :: test_r16i8ur = all(out_of_range(real(i8v, kind=16)+.5_16, 1_8, .true.) .eqv. [.false., .true.])
317 logical, parameter :: test_r16i8d = all(out_of_range(real(i8v, kind=16)-.5_16, 1_8, .false.) .eqv. [.false., .false.])
318 logical, parameter :: test_r16i8dr = all(out_of_range(real(i8v, kind=16)-.5_16, 1_8, .true.) .eqv. [.true., .false.])
319 logical, parameter :: test_r16i16u = all(out_of_range(real(i16v, kind=16)+.5_16, 1_16, .false.) .eqv. [.false., .true.])
320 logical, parameter :: test_r16i16ur = all(out_of_range(real(i16v, kind=16)+.5_16, 1_16, .true.) .eqv. [.false., .true.])
321 logical, parameter :: test_r16i16d = all(out_of_range(real(i16v, kind=16)-.5_16, 1_16, .false.) .eqv. [.false., .true.])
322 logical, parameter :: test_r16i16dr = all(out_of_range(real(i16v, kind=16)-.5_16, 1_16, .true.) .eqv. [.false., .true.])