blob: c96e387b2691d8f06c737fe3bdaa3430808532f5 [file]
// LANGUAGE: +NormalizeNaNValuesInConstContext
const val floatNaNBits = 0x7fc00000
const val doubleNaNBits = 0x7ff8000000000000L
const val floatNaN = Float.NaN
const val doubleNaN = Double.NaN
const val floatPositiveDivisionNaN = 0.0f / 0.0f
const val floatNegativeDivisionNaN = -(0.0f / 0.0f)
const val doublePositiveDivisionNaN = 0.0 / 0.0
const val doubleNegativeDivisionNaN = -(0.0 / 0.0)
fun box(): String {
if (floatNaN.toRawBits() != floatNaNBits) return "Fail Float.NaN ${floatNaN.toRawBits()} != ${floatNaNBits}"
if (doubleNaN.toRawBits() != doubleNaNBits) return "Fail Double.NaN ${doubleNaN.toRawBits()} != ${doubleNaNBits}"
if (floatPositiveDivisionNaN.toRawBits() != floatNaNBits) return "Fail floatPositiveDivisionNaN ${floatPositiveDivisionNaN.toRawBits()} != ${floatNaNBits}"
if (floatNegativeDivisionNaN.toRawBits() != floatNaNBits) return "Fail floatNegativeDivisionNaN ${floatNegativeDivisionNaN.toRawBits()} != ${floatNaNBits}"
if (doublePositiveDivisionNaN.toRawBits() != doubleNaNBits) return "Fail doublePositiveDivisionNaN ${doublePositiveDivisionNaN.toRawBits()} != ${doubleNaNBits}"
if (doubleNegativeDivisionNaN.toRawBits() != doubleNaNBits) return "Fail doubleNegativeDivisionNaN ${doubleNegativeDivisionNaN.toRawBits()} != ${doubleNaNBits}"
return "OK"
}