この中には E や PI などの定数、三角関数、双曲線関数、べき乗、対数、丸め、符号と絶対値が含まれています。
試しに全部使ってみました。基本 Float を使ってますが Double も用意されています。
package net.yanzm.sample
import kotlin.math.*
fun main(args: Array) {
println(E) // 2.718281828459045
println(PI) // 3.141592653589793
// unit in the last place
println(PI.ulp) // 4.440892098500626E-16
// the remainder of division
println(10f.IEEErem(3f)) // 1.0
//
// sign and absolute value
//
println(10.sign) // 1
println((-10).sign) // -1
println(sign(10f)) // 1.0
println(sign(-10f)) // -1.0
println((1.1f).withSign(-2f)) // -1.1
println((1.1f).withSign(2f)) // 1.1
println((-1.1f).withSign(-2f)) // -1.1
println((-1.1f).withSign(2f)) // 1.1
println(10.absoluteValue) // 10
println((-10).absoluteValue) // 10
println(abs(10)) // 10
println(abs(-10)) // 10
//
// rounding
//
println(ceil(1.1f)) // 2.0
println(ceil(1.5f)) // 2.0
println(ceil(-1.1f)) // -1.0
println(ceil(-1.5f)) // -1.0
println(floor(1.1f)) // 1.0
println(floor(1.5f)) // 1.0
println(floor(-1.1f)) // -2.0
println(floor(-1.5f)) // -2.0
println(truncate(1.1f)) // 1.0
println(truncate(1.5f)) // 1.0
println(truncate(-1.1f)) // -1.0
println(truncate(-1.5f)) // -1.0
println(round(1.1f)) // 1.0
println(round(1.5f)) // 2.0
println(round(-1.1f)) // -1.0
println(round(-1.5f)) // -2.0
println((1.1f).roundToInt()) // 1
println((1.5f).roundToInt()) // 2
println((-1.1f).roundToInt()) // -1
println((-1.5f).roundToInt()) // -2
println((1.1f).roundToLong()) // 1L
println((1.5f).roundToLong()) // 2L
println((-1.1f).roundToLong()) // -1L
println((-1.5f).roundToLong()) // -2L
//
// trigonometric
//
println(sin(PI / 2)) // 1.0
println(asin(1f)) // 1.5707964
println(cos(PI)) // -1.0
println(acos(-1f)) // 3.1415927
println(tan(PI / 4)) // 0.9999999999999999
println(atan(1f)) // 0.7853982
println(atan2(5f, 5f)) // 0.7853982
//
// hyperbolic
//
println(sinh(0.8813736f)) // 1.0
println(asinh(1f)) // 0.8813736
println(cosh(0f)) // 1.0
println(acosh(1f)) // 0.0
println(tanh(0.54930615f)) // 0.5
println(atanh(0.5f)) // 0.54930615
//
// exponentiation and power
//
println(exp(0f)) // 1.0
println(exp(1f)) // 2.7182817
println(expm1(0f)) // 0.0
println(expm1(1f)) // 1.7182817
println(2f.pow(2)) // 4.0
println(sqrt(4f)) // 2.0
// sqrt(x^2 + y^2)
println(hypot(3f, 4f)) // 5.0
//
// logarithmic
//
println(ln(E)) // 1.0
println(ln(1f)) // 0.0
// ln(x + 1)
println(ln1p(E - 1)) // 1.0
println(ln1p(0f)) // 0.0
println(log(10f, 10f)) // 1.0
println(log(1f, 10f)) // 0.0
println(log(2f, 2f)) // 1.0
println(log(1f, 2f)) // 0.0
// log(x, 10)
println(log10(10f)) // 1.0
println(log10(1f)) // 0.0
// log(x, 2)
println(log2(2f)) // 1.0
println(log2(1f)) // 0.0
//
// max, min
//
println(max(1, 2)) // 2
println(max(1f, 2f)) // 2.0
println(min(1, 2)) // 1
println(min(1f, 2f)) // 1.0
//
// nearest
//
println((1.1f).nextDown()) // 1.0999999
println((-1.1f).nextDown()) // -1.1000001
println((1.1f).nextUp()) // 1.1000001
println((-1.1f).nextUp()) // -1.0999999
println((1.1f).nextTowards(0f)) // 1.0999999
println((-1.1f).nextTowards(0f)) // -1.0999999
}
0 件のコメント:
コメントを投稿