PyHash API
----------
-See also the :c:member:`PyTypeObject.tp_hash` member.
+See also the :c:member:`PyTypeObject.tp_hash` member and :ref:`numeric-hash`.
.. c:type:: Py_hash_t
.. versionadded:: 3.2
+.. c:macro:: PyHASH_MODULUS
+
+ The `Mersenne prime <https://en.wikipedia.org/wiki/Mersenne_prime>`_ ``P = 2**n -1``, used for numeric hash scheme.
+
+ .. versionadded:: 3.13
+
+.. c:macro:: PyHASH_BITS
+
+ The exponent ``n`` of ``P`` in :c:macro:`PyHASH_MODULUS`.
+
+ .. versionadded:: 3.13
+
+.. c:macro:: PyHASH_INF
+
+ The hash value returned for a positive infinity.
+
+ .. versionadded:: 3.13
+
+.. c:macro:: PyHASH_IMAG
+
+ The multiplier used for the imaginary part of a complex number.
+
+ .. versionadded:: 3.13
.. c:type:: PyHash_FuncDef
reduction modulo the prime 2**_PyHASH_BITS - 1. */
#if SIZEOF_VOID_P >= 8
-# define _PyHASH_BITS 61
+# define PyHASH_BITS 61
#else
-# define _PyHASH_BITS 31
+# define PyHASH_BITS 31
#endif
-#define _PyHASH_MODULUS (((size_t)1 << _PyHASH_BITS) - 1)
-#define _PyHASH_INF 314159
-#define _PyHASH_IMAG _PyHASH_MULTIPLIER
+#define PyHASH_MODULUS (((size_t)1 << _PyHASH_BITS) - 1)
+#define PyHASH_INF 314159
+#define PyHASH_IMAG _PyHASH_MULTIPLIER
+
+/* Aliases kept for backward compatibility with Python 3.12 */
+#define _PyHASH_BITS PyHASH_BITS
+#define _PyHASH_MODULUS PyHASH_MODULUS
+#define _PyHASH_INF PyHASH_INF
+#define _PyHASH_IMAG PyHASH_IMAG
/* Helpers for hash functions */
PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double);