Add eql method to Zig Matrix
This commit is contained in:
parent
d74d89995f
commit
c3263b88b9
@ -208,6 +208,13 @@ const Matrix = struct {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn eql(self: Matrix, other: Matrix) bool {
|
||||||
|
const dimEqual = (self.cols == other.cols) and (self.rows == other.rows);
|
||||||
|
const numEqual = std.mem.eql(i64, self.numbers, other.numbers);
|
||||||
|
|
||||||
|
return dimEqual and numEqual;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn deinit(self: Matrix) void {
|
pub fn deinit(self: Matrix) void {
|
||||||
self.allocator.free(self.numbers);
|
self.allocator.free(self.numbers);
|
||||||
}
|
}
|
||||||
@ -402,3 +409,34 @@ test "matrix mul" {
|
|||||||
try std.testing.expect(try mat3.get(.{ 1, 0 }) == 49);
|
try std.testing.expect(try mat3.get(.{ 1, 0 }) == 49);
|
||||||
try std.testing.expect(try mat3.get(.{ 1, 1 }) == 64);
|
try std.testing.expect(try mat3.get(.{ 1, 1 }) == 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "matrix eql" {
|
||||||
|
const mat1 = try Matrix.init(
|
||||||
|
std.testing.allocator,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
&.{ 1, 2, 3, 4, 5, 6 },
|
||||||
|
);
|
||||||
|
defer mat1.deinit();
|
||||||
|
|
||||||
|
const mat2 = try Matrix.init(
|
||||||
|
std.testing.allocator,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
&.{ 1, 2, 3, 4, 5, 6 },
|
||||||
|
);
|
||||||
|
defer mat2.deinit();
|
||||||
|
|
||||||
|
const mat3 = try Matrix.init(
|
||||||
|
std.testing.allocator,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
&.{ 1, 2, 3, 4, 5, 6 },
|
||||||
|
);
|
||||||
|
defer mat3.deinit();
|
||||||
|
|
||||||
|
try std.testing.expect(mat1.eql(mat1));
|
||||||
|
try std.testing.expect(mat1.eql(mat2));
|
||||||
|
try std.testing.expect(!mat1.eql(mat3));
|
||||||
|
try std.testing.expect(!mat2.eql(mat3));
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user