Summary
PyFloat::py_new always return new float object even if the argument's oid is same.
Expected
>>> import math
>>> a = math.nan
>>> id(float(a))
4358871344
>>> a= math.nan
>>> id(float(a))
4358871344
>>> id(float(a))
4358871344
>>> id(float(a))
4358871344
>>> id(float(a))
4358871344
Actual
>>> import math
>>> a = math.nan
>>>>> id(float(a))
140470641517808
>>>>> id(float(a))
140470639935376
>>>>> id(float(a))
140470629849984
>>>>> id(float(a))
140470642896176
>>>>> id(float(a))
140470639935376