improve bit_len
parent
33d796f071
commit
bdd2929266
|
|
@ -817,7 +817,7 @@ pub fn (a Integer) isqrt() Integer {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
mut shift := a.digits.len * 32 - bits.leading_zeros_32(a.digits.last())
|
mut shift := a.bit_len()
|
||||||
if shift & 1 == 1 {
|
if shift & 1 == 1 {
|
||||||
shift += 1
|
shift += 1
|
||||||
}
|
}
|
||||||
|
|
@ -901,16 +901,11 @@ pub fn (x Integer) gcd_binary(y Integer) Integer {
|
||||||
return b.lshift(shift)
|
return b.lshift(shift)
|
||||||
}
|
}
|
||||||
|
|
||||||
[direct_array_access]
|
[inline; direct_array_access]
|
||||||
pub fn (x Integer) bit_len() int {
|
pub fn (x Integer) bit_len() int {
|
||||||
if x.signum == 0 {
|
if x.signum == 0 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
mut length := 0
|
return x.digits.len * 32 - bits.leading_zeros_32(x.digits.last())
|
||||||
for _ in 1 .. x.digits.len {
|
|
||||||
length += 32
|
|
||||||
}
|
|
||||||
|
|
||||||
return length + (32 - bits.leading_zeros_32(x.digits.last()))
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue