1! { dg-do run } 2! Tests for the constant folding of the NEAREST intrinsic 3! We compare against the results of the runtime implementation, 4! thereby making sure that they remain consistent 5REAL, PARAMETER :: x(10) = (/ 1., 0.49999997, 0.5, 8388609.0, -1., & 6 -0.49999997, -0.5, -8388609.0, & 7 0., 0. /), & 8 dir(10) = (/ -1., +1., -1., -1., +1., & 9 -1., +1., +1., & 10 +1.,-1./) 11REAL :: a(10) 12 13a = x 14if (nearest (x(1), dir(1)) /= nearest (a(1), dir(1))) call abort () 15if (nearest (x(2), dir(2)) /= nearest (a(2), dir(2))) call abort () 16if (nearest (x(3), dir(3)) /= nearest (a(3), dir(3))) call abort () 17if (nearest (x(4), dir(4)) /= nearest (a(4), dir(4))) call abort () 18if (nearest (x(5), dir(5)) /= nearest (a(5), dir(5))) call abort () 19if (nearest (x(6), dir(6)) /= nearest (a(6), dir(6))) call abort () 20if (nearest (x(7), dir(7)) /= nearest (a(7), dir(7))) call abort () 21if (nearest (x(8), dir(8)) /= nearest (a(8), dir(8))) call abort () 22! These last two tests are commented out because mpfr provides no support 23! for denormals, and therefore we get TINY instead of the correct result. 24!if (nearest (x(9), dir(9)) /= nearest (a(9), dir(9))) call abort () 25!if (nearest (x(10), dir(10)) /= nearest (a(10), dir(10))) call abort () 26 27end 28