28 lines
491 B
Kotlin
28 lines
491 B
Kotlin
package com.infendro.encoding.util
|
|
|
|
import kotlin.math.log2
|
|
|
|
internal fun Int.divCeil(n: Int): Int =
|
|
(this + n - 1) / n
|
|
|
|
internal fun Int.align(n: Int): Int =
|
|
divCeil(n) * n
|
|
|
|
internal fun log2(value: Int): Double =
|
|
log2(value.toDouble())
|
|
|
|
internal fun gcd(a: Int, b: Int): Int {
|
|
var x = a
|
|
var y = b
|
|
while (y != 0) {
|
|
val temp = y
|
|
y = x % y
|
|
x = temp
|
|
}
|
|
return x
|
|
}
|
|
|
|
internal fun lcm(a: Int, b: Int): Int {
|
|
return (a * b) / gcd(a, b)
|
|
}
|