New ieee754 arithmetic, Fix for KT-14651: Floating point comparisons shall operate according to IEEE754
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
fun equals3(a: Byte?, b: Byte?) = a != null && b != null && a == b
|
||||
|
||||
fun equals4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a == b else null!!
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a == b else null!!
|
||||
|
||||
fun less3(a: Byte?, b: Byte?) = a != null && b != null && a < b
|
||||
|
||||
fun less4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a < b else true
|
||||
|
||||
fun less5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a < b else true
|
||||
|
||||
// 3 Intrinsics\.areEqual
|
||||
// 3 Intrinsics\.compare
|
||||
// for compare:
|
||||
// 3 IF_ICMPGE
|
||||
@@ -0,0 +1,16 @@
|
||||
fun equals3(a: Char?, b: Char?) = a != null && b != null && a == b
|
||||
|
||||
fun equals4(a: Char?, b: Char?) = if (a is Char && b is Char) a == b else null!!
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Char && b is Char) a == b else null!!
|
||||
|
||||
fun less3(a: Char?, b: Char?) = a != null && b != null && a < b
|
||||
|
||||
fun less4(a: Char?, b: Char?) = if (a is Char && b is Char) a < b else true
|
||||
|
||||
fun less5(a: Any?, b: Any?) = if (a is Char && b is Char) a < b else true
|
||||
|
||||
// 3 Intrinsics\.areEqual
|
||||
// 3 Intrinsics\.compare
|
||||
// for compare:
|
||||
// 3 IF_ICMPGE
|
||||
@@ -0,0 +1,16 @@
|
||||
fun box(): String {
|
||||
val zero: Any = 0.0
|
||||
val floatZero: Any = -0.0F
|
||||
if (zero is Double && floatZero is Float) {
|
||||
if (zero == floatZero) return "fail 1"
|
||||
|
||||
if (zero <= floatZero) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
return "fail"
|
||||
}
|
||||
|
||||
// 1 Intrinsics\.areEqual
|
||||
// 1 Double\.compare
|
||||
@@ -0,0 +1,16 @@
|
||||
fun equals3(a: Int?, b: Int?) = a != null && b != null && a == b
|
||||
|
||||
fun equals4(a: Int?, b: Int?) = if (a is Int && b is Int) a == b else null!!
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Int && b is Int) a == b else null!!
|
||||
|
||||
fun less3(a: Int?, b: Int?) = a != null && b != null && a < b
|
||||
|
||||
fun less4(a: Int?, b: Int?) = if (a is Int && b is Int) a < b else true
|
||||
|
||||
fun less5(a: Any?, b: Any?) = if (a is Int && b is Int) a < b else true
|
||||
|
||||
// 3 Intrinsics\.areEqual
|
||||
// 3 Intrinsics\.compare
|
||||
// for compare:
|
||||
// 3 IF_ICMPGE
|
||||
@@ -0,0 +1,16 @@
|
||||
fun equals3(a: Long?, b: Long?) = a != null && b != null && a == b
|
||||
|
||||
fun equals4(a: Long?, b: Long?) = if (a is Long && b is Long) a == b else null!!
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Long && b is Long) a == b else null!!
|
||||
|
||||
fun less3(a: Long?, b: Long?) = a != null && b != null && a < b
|
||||
|
||||
fun less4(a: Long?, b: Long?) = if (a is Long && b is Long) a < b else true
|
||||
|
||||
fun less5(a: Any?, b: Any?) = if (a is Long && b is Long) a < b else true
|
||||
|
||||
// 3 Intrinsics\.areEqual
|
||||
// 3 Intrinsics\.compare
|
||||
// for compare:
|
||||
// 3 IF_ICMPGE
|
||||
@@ -0,0 +1,16 @@
|
||||
fun equals3(a: Short?, b: Short?) = a != null && b != null && a == b
|
||||
|
||||
fun equals4(a: Short?, b: Short?) = if (a is Short && b is Short) a == b else null!!
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Short && b is Short) a == b else null!!
|
||||
|
||||
fun less3(a: Short?, b: Short?) = a != null && b != null && a < b
|
||||
|
||||
fun less4(a: Short?, b: Short?) = if (a is Short && b is Short) a < b else true
|
||||
|
||||
fun less5(a: Any?, b: Any?) = if (a is Short && b is Short) a < b else true
|
||||
|
||||
// 3 Intrinsics\.areEqual
|
||||
// 3 Intrinsics\.compare
|
||||
// for compare:
|
||||
// 3 IF_ICMPGE
|
||||
Reference in New Issue
Block a user