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