If <em>nan1</em> and <em>nan2</em> are of different precisions,
the lower-precision value is converted to at least the precision
of the other value.
The payloads from different precisions are not guaranteed to be comparable when treated as simple integers. (I haven't found the wording in IEEE that specifies this yet) -- I have observed that on x86, a low->high conversion packs the payload upward, and on high->low drops the least-significant bits.
How about this instead:
If <em>nan1</em> and <em>nan2</em> are of different precisions, the lower-precision value is first converted to the precision of the other value, or both are converted to a common higher precision.