Convert constant value to conform to given type.
NaNs to be identical, despite non-equality
Consider -0d to be distinct from 0d, despite equality
We use the raw versions (i.e.
floatToRawIntBits rather than
to avoid treating different encodings of
NaN as the same constant.
You probably can't express different
NaN varieties as compile time
constants in regular Scala code, but it is conceivable that you could
conjure them with a macro.
We need the equals method to take account of tags as well as values.
The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.