Issue #27601: Merge from 3.5
This commit is contained in:
commit
3b055b5960
|
@ -692,16 +692,16 @@ number, :class:`float`, or :class:`complex`::
|
|||
m, n = m // P, n // P
|
||||
|
||||
if n % P == 0:
|
||||
hash_ = sys.hash_info.inf
|
||||
hash_value = sys.hash_info.inf
|
||||
else:
|
||||
# Fermat's Little Theorem: pow(n, P-1, P) is 1, so
|
||||
# pow(n, P-2, P) gives the inverse of n modulo P.
|
||||
hash_ = (abs(m) % P) * pow(n, P - 2, P) % P
|
||||
hash_value = (abs(m) % P) * pow(n, P - 2, P) % P
|
||||
if m < 0:
|
||||
hash_ = -hash_
|
||||
if hash_ == -1:
|
||||
hash_ = -2
|
||||
return hash_
|
||||
hash_value = -hash_value
|
||||
if hash_value == -1:
|
||||
hash_value = -2
|
||||
return hash_value
|
||||
|
||||
def hash_float(x):
|
||||
"""Compute the hash of a float x."""
|
||||
|
@ -716,13 +716,13 @@ number, :class:`float`, or :class:`complex`::
|
|||
def hash_complex(z):
|
||||
"""Compute the hash of a complex number z."""
|
||||
|
||||
hash_ = hash_float(z.real) + sys.hash_info.imag * hash_float(z.imag)
|
||||
hash_value = hash_float(z.real) + sys.hash_info.imag * hash_float(z.imag)
|
||||
# do a signed reduction modulo 2**sys.hash_info.width
|
||||
M = 2**(sys.hash_info.width - 1)
|
||||
hash_ = (hash_ & (M - 1)) - (hash & M)
|
||||
if hash_ == -1:
|
||||
hash_ == -2
|
||||
return hash_
|
||||
hash_value = (hash_value & (M - 1)) - (hash_value & M)
|
||||
if hash_value == -1:
|
||||
hash_value = -2
|
||||
return hash_value
|
||||
|
||||
.. _typeiter:
|
||||
|
||||
|
|
Loading…
Reference in New Issue