big: Test gcd.

This commit is contained in:
Jeroen van Rijn
2021-08-11 20:59:52 +02:00
parent b15ee059ad
commit 0028cb0258
4 changed files with 94 additions and 33 deletions
+20
View File
@@ -294,3 +294,23 @@ PyRes :: struct {
return PyRes{res = r, err = .None};
}
/*
dest = gcd(a, b)
*/
@export test_gcd :: 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 = gcd(dest, ai, bi); err != .None { return PyRes{res=":gcd:gcd(a, b):", err=err}; }
r: cstring;
r, err = int_itoa_cstring(dest, 16, context.temp_allocator);
if err != .None { return PyRes{res=":gcd:itoa(res):", err=err}; }
return PyRes{res = r, err = .None};
}