| ... | @@ -194,7 +194,7 @@ fn testCmp(comptime T: type) !void { | ... | @@ -194,7 +194,7 @@ fn testCmp(comptime T: type) !void { |
| 194 | try expect(x <= 2.0); | 194 | try expect(x <= 2.0); |
| 195 | } | 195 | } |
| 196 | | 196 | |
| 197 | @setEvalBranchQuota(2_000); | 197 | @setEvalBranchQuota(4_000); |
| 198 | var edges = [_]T{ | 198 | var edges = [_]T{ |
| 199 | -math.inf(T), | 199 | -math.inf(T), |
| 200 | -math.floatMax(T), | 200 | -math.floatMax(T), |
| ... | @@ -210,6 +210,7 @@ fn testCmp(comptime T: type) !void { | ... | @@ -210,6 +210,7 @@ fn testCmp(comptime T: type) !void { |
| 210 | }; | 210 | }; |
| 211 | _ = &edges; | 211 | _ = &edges; |
| 212 | for (edges, 0..) |rhs, rhs_i| { | 212 | for (edges, 0..) |rhs, rhs_i| { |
| | 213 | const rhs_v: @Vector(4, T) = @splat(rhs); |
| 213 | for (edges, 0..) |lhs, lhs_i| { | 214 | for (edges, 0..) |lhs, lhs_i| { |
| 214 | const no_nan = lhs_i != 5 and rhs_i != 5; | 215 | const no_nan = lhs_i != 5 and rhs_i != 5; |
| 215 | const lhs_order = if (lhs_i < 5) lhs_i else lhs_i - 2; | 216 | const lhs_order = if (lhs_i < 5) lhs_i else lhs_i - 2; |
| ... | @@ -220,6 +221,14 @@ fn testCmp(comptime T: type) !void { | ... | @@ -220,6 +221,14 @@ fn testCmp(comptime T: type) !void { |
| 220 | try expect((lhs > rhs) == (no_nan and lhs_order > rhs_order)); | 221 | try expect((lhs > rhs) == (no_nan and lhs_order > rhs_order)); |
| 221 | try expect((lhs <= rhs) == (no_nan and lhs_order <= rhs_order)); | 222 | try expect((lhs <= rhs) == (no_nan and lhs_order <= rhs_order)); |
| 222 | try expect((lhs >= rhs) == (no_nan and lhs_order >= rhs_order)); | 223 | try expect((lhs >= rhs) == (no_nan and lhs_order >= rhs_order)); |
| | 224 | |
| | 225 | const lhs_v: @Vector(4, T) = @splat(lhs); |
| | 226 | try expect(@reduce(.And, (lhs_v == rhs_v)) == (no_nan and lhs_order == rhs_order)); |
| | 227 | try expect(@reduce(.And, (lhs_v != rhs_v)) == !(no_nan and lhs_order == rhs_order)); |
| | 228 | try expect(@reduce(.And, (lhs_v < rhs_v)) == (no_nan and lhs_order < rhs_order)); |
| | 229 | try expect(@reduce(.And, (lhs_v > rhs_v)) == (no_nan and lhs_order > rhs_order)); |
| | 230 | try expect(@reduce(.And, (lhs_v <= rhs_v)) == (no_nan and lhs_order <= rhs_order)); |
| | 231 | try expect(@reduce(.And, (lhs_v >= rhs_v)) == (no_nan and lhs_order >= rhs_order)); |
| 223 | } | 232 | } |
| 224 | } | 233 | } |
| 225 | } | 234 | } |