aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/maximum_minimum.zig
blob: 59a86815aace0e959569322b9004f3c57070eb9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
const std = @import("std");
const builtin = @import("builtin");
const mem = std.mem;
const expect = std.testing.expect;
const expectEqual = std.testing.expectEqual;
const Vector = std.meta.Vector;

test "@maximum" {
    const S = struct {
        fn doTheTest() !void {
            try expect(@as(i32, 10) == @maximum(@as(i32, -3), @as(i32, 10)));
            try expect(@as(f32, 3.2) == @maximum(@as(f32, 3.2), @as(f32, 0.68)));

            var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
            var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
            var x = @maximum(a, b);
            try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 2147483647, 2147483647, 30, 40 }));

            var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 };
            var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 };
            var y = @maximum(c, d);
            try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ 0, 0.42, -0.64, 7.8 }));

            var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 };
            var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 };
            var z = @maximum(e, f);
            try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 }));
        }
    };
    try S.doTheTest();
    comptime try S.doTheTest();
}

test "@minimum" {
    const S = struct {
        fn doTheTest() !void {
            try expect(@as(i32, -3) == @minimum(@as(i32, -3), @as(i32, 10)));
            try expect(@as(f32, 0.68) == @minimum(@as(f32, 3.2), @as(f32, 0.68)));

            var a: Vector(4, i32) = [4]i32{ 2147483647, -2, 30, 40 };
            var b: Vector(4, i32) = [4]i32{ 1, 2147483647, 3, 4 };
            var x = @minimum(a, b);
            try expect(mem.eql(i32, &@as([4]i32, x), &[4]i32{ 1, -2, 3, 4 }));

            var c: Vector(4, f32) = [4]f32{ 0, 0.4, -2.4, 7.8 };
            var d: Vector(4, f32) = [4]f32{ -0.23, 0.42, -0.64, 0.9 };
            var y = @minimum(c, d);
            try expect(mem.eql(f32, &@as([4]f32, y), &[4]f32{ -0.23, 0.4, -2.4, 0.9 }));

            var e: Vector(2, f32) = [2]f32{ 0, std.math.qnan_f32 };
            var f: Vector(2, f32) = [2]f32{ std.math.qnan_f32, 0 };
            var z = @maximum(e, f);
            try expect(mem.eql(f32, &@as([2]f32, z), &[2]f32{ 0, 0 }));
        }
    };
    try S.doTheTest();
    comptime try S.doTheTest();
}