mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 22:09:09 +00:00
Add RocDec.sub
This commit is contained in:
parent
19d8c41e98
commit
dd2ac10ab9
2 changed files with 24 additions and 0 deletions
|
@ -213,6 +213,17 @@ pub const RocDec = struct {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn sub(self: RocDec, other: RocDec) RocDec {
|
||||
var answer: i128 = undefined;
|
||||
const overflowed = @subWithOverflow(i128, self.num, other.num, &answer);
|
||||
|
||||
if (!overflowed) {
|
||||
return RocDec{ .num = answer };
|
||||
} else {
|
||||
std.debug.panic("TODO runtime exception for overflow!", .{});
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mul(self: RocDec, other: RocDec) RocDec {
|
||||
const self_i128 = self.num;
|
||||
const other_i128 = other.num;
|
||||
|
@ -652,6 +663,18 @@ test "add: 1" {
|
|||
try expectEqual(RocDec{ .num = 1 }, dec.add(.{ .num = 1 }));
|
||||
}
|
||||
|
||||
test "sub: 0" {
|
||||
var dec: RocDec = .{ .num = 1 };
|
||||
|
||||
try expectEqual(RocDec{ .num = 1 }, dec.sub(.{ .num = 0 }));
|
||||
}
|
||||
|
||||
test "sub: 1" {
|
||||
var dec: RocDec = .{ .num = 1 };
|
||||
|
||||
try expectEqual(RocDec{ .num = 0 }, dec.sub(.{ .num = 1 }));
|
||||
}
|
||||
|
||||
test "mul: by 0" {
|
||||
var dec: RocDec = .{ .num = 0 };
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue