Logarithms

Example

import slash.*
import slash.Constant

log[4](16)
// res0: Double = 2.0

log[10](-1)
// res1: Double = NaN

log[2.7182818284590452](Constant.e)
// res2: Double = 1.0

println( s"log[2.0](42.0) = ${log[2.0](42.0)}" )
// log[2.0](42.0) = 5.392317422778761
var i: Int = 1; while (i > 0) {
// i: Int = 1; while (i > 0) {
  println( s"log[2]($i) = ${log[2](i)}" )
  i = i << 1
}
// log[2](1) = 0.0
// log[2](2) = 1.0
// log[2](4) = 2.0
// log[2](8) = 3.0
// log[2](16) = 4.0
// log[2](32) = 5.0
// log[2](64) = 6.0
// log[2](128) = 7.0
// log[2](256) = 8.0
// log[2](512) = 9.0
// log[2](1024) = 10.0
// log[2](2048) = 11.0
// log[2](4096) = 12.0
// log[2](8192) = 13.0
// log[2](16384) = 14.0
// log[2](32768) = 15.0
// log[2](65536) = 16.0
// log[2](131072) = 17.0
// log[2](262144) = 18.0
// log[2](524288) = 19.0
// log[2](1048576) = 20.0
// log[2](2097152) = 21.0
// log[2](4194304) = 22.0
// log[2](8388608) = 23.0
// log[2](16777216) = 24.0
// log[2](33554432) = 25.0
// log[2](67108864) = 26.0
// log[2](134217728) = 27.0
// log[2](268435456) = 28.0
// log[2](536870912) = 29.0
// log[2](1073741824) = 30.0