big: Add ilog2.

This commit is contained in:
Jeroen van Rijn
2021-09-01 19:13:47 +02:00
parent 7d7ed6b95f
commit fd83cbf40b
3 changed files with 7 additions and 11 deletions
+6
View File
@@ -10,6 +10,8 @@
*/
package math_big
import "core:intrinsics"
/*
===========================
User-level routines
@@ -383,6 +385,10 @@ digit_log :: proc(a: DIGIT, base: DIGIT) -> (log: int, err: Error) {
}
log :: proc { int_log, digit_log, };
ilog2 :: proc(value: $T) -> (log2: T) {
return (size_of(T) * 8) - intrinsics.count_leading_zeros(value);
}
/*
Calculate `dest = base^power` using a square-multiply algorithm.
*/