mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-26 13:29:12 +00:00
Add log
function to Dec
This commit is contained in:
parent
62964f68cf
commit
23b6b432c7
3 changed files with 14 additions and 0 deletions
|
@ -463,6 +463,10 @@ pub const RocDec = extern struct {
|
|||
return RocDec{ .num = out };
|
||||
}
|
||||
|
||||
pub fn log(self: RocDec) RocDec {
|
||||
return fromF64(@log(self.toF64())).?;
|
||||
}
|
||||
|
||||
// I belive the output of the trig functions is always in range of Dec.
|
||||
// If not, we probably should just make it saturate the Dec.
|
||||
// I don't think this should crash or return errors.
|
||||
|
@ -1190,6 +1194,10 @@ test "div: 500 / 1000" {
|
|||
try expectEqual(RocDec.fromStr(roc_str), number1.div(number2));
|
||||
}
|
||||
|
||||
test "log: 1" {
|
||||
try expectEqual(RocDec.fromU64(0), RocDec.log(RocDec.fromU64(1)));
|
||||
}
|
||||
|
||||
// exports
|
||||
|
||||
pub fn fromStr(arg: RocStr) callconv(.C) num_.NumParseResult(i128) {
|
||||
|
@ -1282,6 +1290,10 @@ pub fn divC(arg1: RocDec, arg2: RocDec) callconv(.C) i128 {
|
|||
return @call(.always_inline, RocDec.div, .{ arg1, arg2 }).num;
|
||||
}
|
||||
|
||||
pub fn logC(arg: RocDec) callconv(.C) i128 {
|
||||
return @call(.always_inline, RocDec.log, .{arg}).num;
|
||||
}
|
||||
|
||||
pub fn sinC(arg: RocDec) callconv(.C) i128 {
|
||||
return @call(.always_inline, RocDec.sin, .{arg}).num;
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ comptime {
|
|||
exportDecFn(dec.fromF64C, "from_float.f64");
|
||||
exportDecFn(dec.fromStr, "from_str");
|
||||
exportDecFn(dec.fromU64C, "from_u64");
|
||||
exportDecFn(dec.logC, "log");
|
||||
exportDecFn(dec.mulC, "mul_with_overflow");
|
||||
exportDecFn(dec.mulOrPanicC, "mul_or_panic");
|
||||
exportDecFn(dec.mulSaturatedC, "mul_saturated");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue