big: Add lcm and its test.

This commit is contained in:
Jeroen van Rijn
2021-08-11 20:59:52 +02:00
parent 0028cb0258
commit 8b1d8c8453
4 changed files with 89 additions and 14 deletions
+20
View File
@@ -314,3 +314,23 @@ PyRes :: struct {
return PyRes{res = r, err = .None};
}
/*
dest = lcm(a, b)
*/
@export test_lcm :: proc "c" (a, b: cstring) -> (res: PyRes) {
context = runtime.default_context();
err: Error;
ai, bi, dest := &Int{}, &Int{}, &Int{};
defer destroy(ai, bi, dest);
if err = atoi(ai, string(a), 16); err != .None { return PyRes{res=":gcd:atoi(a):", err=err}; }
if err = atoi(bi, string(b), 16); err != .None { return PyRes{res=":gcd:atoi(b):", err=err}; }
if err = lcm(dest, ai, bi); err != .None { return PyRes{res=":lcm:lcm(a, b):", err=err}; }
r: cstring;
r, err = int_itoa_cstring(dest, 16, context.temp_allocator);
if err != .None { return PyRes{res=":lcm:itoa(res):", err=err}; }
return PyRes{res = r, err = .None};
}