16int64_t binary_gcd(
const int64_t a,
const int64_t b) {
29 return binary_gcd(a >> 1, b >> 1) << 1;
31 return binary_gcd(a >> 1, b);
35 return binary_gcd(a, b >> 1);
39 return binary_gcd((a - b) >> 1, b);
41 return binary_gcd((b - a) >> 1, a);
51int64_t euclidean_gcd(int64_t a, int64_t b) {
52 while (a > 0 && b > 0) {