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
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -14,6 +14,7 @@ vgcore.*
|
|||
#editors
|
||||
.idea/
|
||||
.vscode/
|
||||
.ignore
|
||||
|
||||
#files too big to track in git
|
||||
editor/benches/resources/100000_lines.roc
|
||||
|
|
|
@ -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