diff options
-rw-r--r-- | src/library/scala/math/package.scala | 17 | ||||
-rw-r--r-- | test/files/jvm/signum.scala | 6 |
2 files changed, 9 insertions, 14 deletions
diff --git a/src/library/scala/math/package.scala b/src/library/scala/math/package.scala index 0417461f85..71a7f8e5ed 100644 --- a/src/library/scala/math/package.scala +++ b/src/library/scala/math/package.scala @@ -115,21 +115,10 @@ package object math { def min(x: Float, y: Float): Float = java.lang.Math.min(x, y) def min(x: Double, y: Double): Double = java.lang.Math.min(x, y) - def signum(x: Double): Double = - if (x == 0d) 0d - else if (x < 0) -1.0 - else if (x > 0) 1.0 - else x // NaN - - def signum(x: Float): Float = - if (x == 0f) 0f - else if (x < 0) -1.0f - else if (x > 0) 1.0f - else x // NaN - - def signum(x: Long): Long = java.lang.Long.signum(x) - def signum(x: Int): Int = java.lang.Integer.signum(x) + def signum(x: Long): Long = java.lang.Long.signum(x) + def signum(x: Float): Float = java.lang.Math.signum(x) + def signum(x: Double): Double = java.lang.Math.signum(x) // ----------------------------------------------------------------------- // root functions diff --git a/test/files/jvm/signum.scala b/test/files/jvm/signum.scala index feb28d3e43..76602a6641 100644 --- a/test/files/jvm/signum.scala +++ b/test/files/jvm/signum.scala @@ -11,5 +11,11 @@ object Test { assert(math.signum(0) == 0) assert(math.signum(-1) == -1) assert(math.signum(Int.MinValue) == -1) + + assert(java.lang.Float.floatToIntBits(math.signum(0f)) == 0x0) + assert(java.lang.Float.floatToIntBits(math.signum(-0f)) == 0x80000000) + + assert(java.lang.Double.doubleToLongBits(math.signum(0d)) == 0x0L) + assert(java.lang.Double.doubleToLongBits(math.signum(-0d)) == 0x8000000000000000L) } } |