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

Merge request reports

Loading