Create a Float16 value from a Float.
Create a Float16 value from a Float.
This value is guaranteed to be the closest possible Float16 value. However, because there are many more possible Float values, rounding will occur, and very large or very small values will end up as infinities.
Given any (x: Float16), Float16.fromFloat(x.toFloat) = x
The reverse is not necessarily true, since there are many Float values which are not precisely representable as Float16 values.
Implement left bit-shift with rounding.
Implement left bit-shift with rounding.
val shifts = ? val mask = (1 << shifts) - 1 val n = (? & mask) val res = round(n, shifts) assert(res <= (mask + 1))