Files
kotlin/compiler/testData/codegen/box/constants/float.kt
Roman Artemev 6ba8fbd451 [IR BE] Refactored FoldConstantLowering
- Fix `toString` evaluation for unsigned types in FoldConstantLowering
 - make corner cases around float/double evaluation work for K/JS
 - remove usage of kotlin type
2019-12-24 19:26:06 +03:00

40 lines
1.2 KiB
Kotlin
Vendored

// KJS_WITH_FULL_RUNTIME
// WITH_RUNTIME
// IGNORE_BACKEND_FIR: JVM_IR
import kotlin.math.*
fun almostEqual(a: Float, b: Float): Boolean = abs(a - b) < 0.0000001F
val umax = UInt.MAX_VALUE
val ulmax = ULong.MAX_VALUE
val imax = Int.MAX_VALUE
val lmax = Long.MAX_VALUE
fun box(): String {
if (1F != 1.toFloat()) return "fail 1"
if (1.0F != 1.0.toFloat()) return "fail 2"
if (1e1F != 1e1.toFloat()) return "fail 3"
if (1.0e1F != 1.0e1.toFloat()) return "fail 4"
if (1e-1F != 1e-1.toFloat()) return "fail 5"
if (1.0e-1F != 1.0e-1.toFloat()) return "fail 6"
if (1f != 1.toFloat()) return "fail 7"
if (1.0f != 1.0.toFloat()) return "fail 8"
if (1e1f != 1e1.toFloat()) return "fail 9"
if (1.0e1f != 1.0e1.toFloat()) return "fail 10"
if (1e-1f != 1e-1.toFloat()) return "fail 11"
if (1.0e-1f != 1.0e-1.toFloat()) return "fail 12"
if (!almostEqual(kotlin.math.E.toFloat(), exp(1.0F))) return "fail 13"
if (2147483647.toFloat() != imax.toFloat()) return "fail 14"
if (9223372036854775807L.toFloat() != lmax.toFloat()) return "fail 15"
if (0xFFFF_FFFF.toFloat() != umax.toFloat()) return "fail 16"
if ((2.0f * Long.MAX_VALUE + 1) != ulmax.toFloat()) return "fail 17"
return "OK"
}