import kotlin.math.floor
import kotlin.math.log2
import kotlin.math.pow
import kotlin.math.abs
fun frexp(value: Double): Pair<Double, Int> {
if (value == 0.0) return Pair(0.0, 0)
val exponent = floor(log2(abs(value))).toInt() + 1
val fraction = value / 2.0.pow(exponent)
return Pair(fraction, exponent)
}
fun main() {
val d = 3.14
val (fraction, exponent) = frexp(d)
println("fraction = %.3f exponent = %d".format(fraction, exponent))
}
/*
run:
fraction = 0.785 exponent = 2
*/