Fix random again
Reference issue
What does this implement/fix?
Provides a default random generator for custom floats. This uses double whose effective mantissa is the smaller of the target scalar's mantissa and that of double. As I learned when testing bfloat16 and half, this is necessary to prevent rounding bias when casting to the target scalar (if its smaller than double).
I went ahead and deleted the explicit specializations for AnnoyingScalar, MoveableScalar and SafeScalar as the resulting bit pattern should be exactly the same.
Additional information
Edited by Charles Schlosser