don't CTZ(0) in gcd
This commit is contained in:
parent
c3681a0557
commit
55e0409582
@ -484,12 +484,13 @@ static u64 gcd_u64(u64 a, u64 b) {
|
|||||||
u8 sh = az<bz? az : bz;
|
u8 sh = az<bz? az : bz;
|
||||||
|
|
||||||
b >>= bz;
|
b >>= bz;
|
||||||
while (a > 0) {
|
while (1) {
|
||||||
a >>= az;
|
a >>= az;
|
||||||
u64 d = b - a;
|
u64 d = b - a;
|
||||||
az = CTZ(d);
|
|
||||||
b = b<a? b : a;
|
b = b<a? b : a;
|
||||||
|
if (d == 0) break;
|
||||||
a = b<a? -d : d;
|
a = b<a? -d : d;
|
||||||
|
az = CTZ(d);
|
||||||
}
|
}
|
||||||
return b << sh;
|
return b << sh;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user