Fix floating point conversions to match Kotlin/JVM

(cherry picked from commit de078d6)
This commit is contained in:
Pavel Punegov
2018-01-22 20:04:36 +03:00
committed by Pavel Punegov
parent df41389ef7
commit cc89dc2754
4 changed files with 80 additions and 12 deletions
+21
View File
@@ -1449,6 +1449,27 @@ task hash0(type: RunKonanTest) {
source = "runtime/basic/hash0.kt"
}
task ieee754(type: RunKonanTest) {
goldValue = "Infinity 2147483647 -1 -1\n" +
"3.4028235E38\n" +
"NAN2SHORT:: 0\n" +
"MAX2SHORT:: -1\n" +
"2147483647 -1\n" +
"FLOAT:: Infinity INT:: 2147483647\n" +
"FLOAT:: 1.7014117E38 INT:: 2147483647\n" +
"FLOAT:: 3.4028235E38 INT:: 2147483647\n" +
"FLOAT:: 3.14 INT:: 3\n" +
"FLOAT:: NaN INT:: 0\n" +
"FLOAT:: -33333.125 INT:: -33333\n" +
"FLOAT:: 1.4E-45 INT:: 0\n" +
"FLOAT:: -Infinity INT:: -2147483648\n" +
"FLOAT:: -1.2 INT:: -1\n" +
"FLOAT:: -12.6 INT:: -12\n" +
"FLOAT:: 2.3 INT:: 2\n" +
"OK\n"
source = "runtime/basic/ieee754.kt"
}
task array_list1(type: RunKonanTest) {
goldValue = "OK\n"
source = "runtime/collections/array_list1.kt"
@@ -0,0 +1,29 @@
package runtime.basic.ieee754
import kotlin.test.*
@Test fun runTest() {
val v = Float.POSITIVE_INFINITY
val i = v.toInt()
println("$v $i ${v.toShort()} ${i.toShort()}")
val a = 42
val b = Float.MAX_VALUE
println("${a + b}")
val s = Float.NaN.toShort()
println("NAN2SHORT:: $s")
val d: Float = Float.MAX_VALUE
println("MAX2SHORT:: ${d.toShort()}")
val d2i = d.toInt()
println("$d2i ${d2i.toShort()}")
for (f in arrayOf(Float.POSITIVE_INFINITY, Float.MAX_VALUE / 2, Float.MAX_VALUE,
3.14f, Float.NaN, -33333.12312f, Float.MIN_VALUE, Float.NEGATIVE_INFINITY,
-1.2f, -12.6f, 2.3f)) {
println("FLOAT:: $f INT:: ${f.toInt()}")
}
println("OK")
}