It would be helpful (perhaps to developers of alternative implementations) to give a pure Python version of correctly-rounded long-to-float conversion. Attached is such a version, as a patch to test_long in the release27-maint branch.
I see there is already something similar for true division. I find + q_max, shift_max = 1 << sig_bits, sys.float_info.max_exp - sig_bits easier to read as two lines + q_max = 1 << sig_bits + shift_max = sys.float_info.max_exp - sig_bits Not having precedence memorized, I prefer added parens here: + ... (n >> shift) | bool(n & (1 << shift) - 1) I presume that for normal production testing, you would comment out + float = long_to_float