New ieee754 arithmetic, Fix for KT-14651: Floating point comparisons shall operate according to IEEE754
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Object minus0()
|
||||
{
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Object plus0()
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass()
|
||||
|
||||
if ((jClass.minus0() as Double) < (jClass.plus0() as Double)) return "fail 1"
|
||||
|
||||
if ((jClass.minus0() as Double) != (jClass.plus0() as Double)) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Double minus0()
|
||||
{
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Double plus0()
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass()
|
||||
|
||||
if ((jClass.minus0() as Comparable<Double>) >= jClass.plus0()) return "fail 1"
|
||||
if ((jClass.minus0() as Comparable<Double>) == jClass.plus0()) return "fail 2"
|
||||
if (jClass.minus0() == (jClass.plus0() as Comparable<Double>)) return "fail 3"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Double minus0(){
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Double plus0(){
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
public Double null0(){
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass()
|
||||
|
||||
if (jClass.minus0() < jClass.plus0()) return "fail 1"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() < jClass.plus0()) return "fail 2"
|
||||
|
||||
|
||||
if (jClass.plus0() > jClass.minus0()) return "fail 3"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() < jClass.plus0()) return "fail 4"
|
||||
|
||||
if (jClass.minus0() != jClass.plus0()) return "fail 5"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() != jClass.plus0()) return "fail 6"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Double minus0(){
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Double plus0(){
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
public Double null0(){
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val jClass = JavaClass()
|
||||
|
||||
if (jClass.minus0().compareTo(jClass.plus0()) != -1) return "fail 1"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0().compareTo(jClass.plus0())) return "fail 2"
|
||||
try {
|
||||
if (jClass.minus0().compareTo(jClass.null0()) != -2) return "fail 3"
|
||||
return "fail: exception expected";
|
||||
} catch (e: IllegalStateException) {
|
||||
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Double minus0(){
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Double plus0(){
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
public Double null0(){
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass()
|
||||
|
||||
if (jClass.minus0().equals(jClass.plus0())) return "fail 5"
|
||||
|
||||
if (jClass.null0().equals(jClass.plus0())) return "fail 6"
|
||||
if (jClass.minus0().equals(jClass.null0())) return "fail 7"
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Float minus0()
|
||||
{
|
||||
return -0.0F;
|
||||
}
|
||||
|
||||
public Float plus0()
|
||||
{
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
public Float null0()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass()
|
||||
|
||||
if (jClass.minus0() < jClass.plus0()) return "fail 1"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() < jClass.plus0()) return "fail 2"
|
||||
|
||||
if (jClass.plus0() > jClass.minus0()) return "fail 3"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() < jClass.plus0()) return "fail 4"
|
||||
|
||||
|
||||
if (jClass.minus0() != jClass.plus0()) return "fail 5"
|
||||
|
||||
//TODO: KT-14989
|
||||
//if (jClass.null0() != jClass.plus0()) return "fail 6"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass<T> {
|
||||
|
||||
private T minus0;
|
||||
|
||||
private T plus0;
|
||||
|
||||
JavaClass(T minus0, T plus0)
|
||||
{
|
||||
this.minus0 = minus0;
|
||||
this.plus0 = plus0;
|
||||
}
|
||||
|
||||
public T minus0()
|
||||
{
|
||||
return minus0;
|
||||
}
|
||||
|
||||
public T plus0()
|
||||
{
|
||||
return plus0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
val jClass = JavaClass<Double>(-0.0, 0.0)
|
||||
|
||||
if (jClass.minus0() < jClass.plus0()) return "fail 2"
|
||||
if (jClass.minus0() != jClass.plus0()) return "fail 5"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// FILE: JavaClass.java
|
||||
|
||||
public class JavaClass {
|
||||
|
||||
public Object minus0()
|
||||
{
|
||||
return -0.0;
|
||||
}
|
||||
|
||||
public Object plus0()
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val jClass = JavaClass()
|
||||
|
||||
if ((jClass.minus0() as Double) < (jClass.plus0() as Double)) return "fail 2"
|
||||
if ((jClass.minus0() as Double) != (jClass.plus0() as Double)) return "fail 5"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user