2 ! { dg-options "-fno-range-check" }
3 ! { dg-add-options ieee }
7 ! Test compile-time implementation of NEAREST
15 if (nearest(0.0, 1.0) &
19 if (nearest(nearest(0.0, 1.0), 1.0) &
20 <= nearest(0.0, 1.0)) &
23 if (nearest(nearest(nearest(0.0, 1.0), 1.0), 1.0) &
24 <= nearest(nearest(0.0, 1.0), 1.0)) &
27 if (nearest(nearest(0.0, 1.0), -1.0) &
31 if (nearest(nearest(nearest(0.0, 1.0), 1.0), -1.0) &
32 /= nearest(0.0, 1.0)) &
35 if (nearest(nearest(nearest(nearest(0.0, 1.0), 1.0), -1.0), -1.0) &
40 if (nearest(0.0, -1.0) &
44 if (nearest(nearest(0.0, -1.0), -1.0) &
45 >= nearest(0.0, -1.0)) &
48 if (nearest(nearest(nearest(0.0, -1.0), -1.0), -1.0) &
49 >= nearest(nearest(0.0, -1.0), -1.0)) &
52 if (nearest(nearest(0.0, -1.0), 1.0) &
56 if (nearest(nearest(nearest(0.0, -1.0), -1.0), 1.0) &
57 /= nearest(0.0, -1.0)) &
60 if (nearest(nearest(nearest(nearest(0.0, -1.0), -1.0), 1.0), 1.0) &
65 if (nearest(nearest(42.0, 1.0), 1.0) &
66 <= nearest(42.0, 1.0)) &
69 if (nearest(nearest(42.0, -1.0), -1.0) &
70 >= nearest(42.0, -1.0)) &
73 if (nearest(nearest(42.0, -1.0), 1.0) &
77 if (nearest(nearest(42.0, 1.0), -1.0) &
82 if (nearest(1.0/0.0, 1.0) /= 1.0/0.0) call abort()
84 if (nearest(-1.0/0.0, -1.0) /= -1.0/0.0) call abort()
86 if (.not
.isnan(nearest(0.0d0/0.0, 1.0))) call abort()
88 if (.not
.isnan(nearest(0.0d0/0.0, -1.0))) call abort()
93 if (nearest(0.0d0, 1.0) &
97 if (nearest(nearest(0.0d0, 1.0), 1.0) &
98 <= nearest(0.0d0, 1.0)) &
101 if (nearest(nearest(nearest(0.0d0, 1.0), 1.0), 1.0) &
102 <= nearest(nearest(0.0d0, 1.0), 1.0)) &
105 if (nearest(nearest(0.0d0, 1.0), -1.0) &
109 if (nearest(nearest(nearest(0.0d0, 1.0), 1.0), -1.0) &
110 /= nearest(0.0d0, 1.0)) &
113 if (nearest(nearest(nearest(nearest(0.0d0, 1.0), 1.0), -1.0), -1.0) &
118 if (nearest(0.0d0, -1.0) &
122 if (nearest(nearest(0.0d0, -1.0), -1.0) &
123 >= nearest(0.0d0, -1.0)) &
126 if (nearest(nearest(nearest(0.0d0, -1.0), -1.0), -1.0) &
127 >= nearest(nearest(0.0d0, -1.0), -1.0)) &
130 if (nearest(nearest(0.0d0, -1.0), 1.0) &
134 if (nearest(nearest(nearest(0.0d0, -1.0), -1.0), 1.0) &
135 /= nearest(0.0d0, -1.0)) &
138 if (nearest(nearest(nearest(nearest(0.0d0, -1.0), -1.0), 1.0), 1.0) &
143 if (nearest(nearest(42.0d0, 1.0), 1.0) &
144 <= nearest(42.0d0, 1.0)) &
147 if (nearest(nearest(42.0d0, -1.0), -1.0) &
148 >= nearest(42.0d0, -1.0)) &
151 if (nearest(nearest(42.0d0, -1.0), 1.0) &
155 if (nearest(nearest(42.0d0, 1.0), -1.0) &
160 if (nearest(1.0d0/0.0d0, 1.0) /= 1.0d0/0.0d0) call abort()
162 if (nearest(-1.0d0/0.0d0, -1.0) /= -1.0d0/0.0d0) call abort()
164 if (.not
.isnan(nearest(0.0d0/0.0, 1.0))) call abort()
166 if (.not
.isnan(nearest(0.0d0/0.0, -1.0))) call abort()