§
    1@Äjµ  ã                   ó$   — d Z ddlZddlmZ d„ ZdS )a¢  Shared BTPE binomial sampler, factored out of the legacy ``np.random`` path
(``numba.cpython.randomimpl``) and the ``Generator`` path
(``numba.np.random.distributions``).

The two paths differ only in (1) how a uniform double is drawn and (2) the
``case == 52`` squeeze test (whose Stirling constants are frozen at NumPy's
legacy values for ``np.random`` but track NumPy's corrected values for
``Generator``). Both are injected, so the ~100 lines of rejection scaffolding
live here once. Keep in sync with NumPy's ``random_binomial_btpe``.
https://github.com/numpy/numpy/blob/2538439951286e1e8be2c66c9648bd58cea6e849/numpy/random/src/distributions/distributions.c#L622-L806
é    N©Úregister_jitablec                 ó0   ‡ ‡— t           ˆ ˆfd„¦   «         }|S )aQ  Build a BTPE sampler closed over ``next_double(bitgen)`` (returns a
    uniform double; the legacy path ignores ``bitgen`` and draws
    ``np.random.random()``) and ``squeeze_reject(A, xm, m, n, y, r, q)`` (the
    ``case == 52`` acceptance test, ``True`` to reject). ``r`` is
    ``min(p, 1 - p)``; the caller owns the ``p > 0.5`` flip.c           	      óþ  •— d|z
  }||z  |z   }t          t          j        |¦  «        ¦  «        }t          j        dt          j        ||z  |z  ¦  «        z  d|z  z
  ¦  «        dz   }|dz   }||z
  }||z   }	ddd|z   z  z   }
||z
  |||z  z
  z  }|d|dz  z   z  }|	|z
  |	|z  z  }|d|dz  z   z  }|dd|
z  z   z  }||
|z  z   }||
|z  z   }d	}d
x}}	 |d	k    rW||z  |z  } ‰| ¦  «        |z  } ‰| ¦  «        }||k    rd}Œ1t          t          j        |||z  z
  |z   ¦  «        ¦  «        }d}Œ^|dk    rg||k    rd}Œm|||z
  |
z  z   }||
z  dz   t          j        ||z
  dz   ¦  «        |z  z
  }|dk    rd	}Œ§t          t          j        |¦  «        ¦  «        }d}ŒË|dk    ra||k    rd}ŒÚt          t          j        |t          j        |¦  «        |z  z   ¦  «        ¦  «        }|d
k     s|dk    rd	}�Œ#|||z
  z  |z  }d}�Œ2|dk    rXt          t          j        |	t          j        |¦  «        |z  z
  ¦  «        ¦  «        }||k    s|dk    rd	}�Œ�|||z
  z  |z  }d}�Œ�|dk    ršt          ||z
  ¦  «        }|dk    r||dz  dz
  k     rd}�Œ¾||z  }||dz   z  }d}||k     r%t          |dz   |dz   ¦  «        D ]}|||z  |z
  z  }Œn*||k    r$t          |dz   |dz   ¦  «        D ]}|||z  |z
  z  }Œ||k    rd	}�Œ,d}�Œ0|dk    rm||z  ||dz  dz   z  dz   |z  dz   z  }| |z  d|z  z  }t          j        |¦  «        }|||z
  k     rd}�Œ}|||z   k    rd	}�ŒŠ ‰|||||||¦  «        rd	}�ŒŸd}�Œ£|dk    r|S �Œ¬)Ng      ð?g�Âõ(\�@gffffff@g      à?gôýÔxé&Á?g     €4@gš™™™™™.@g       @é
   r   é   é   é<   é   é2   é(   g        é4   g      @g      ä?gUUUUUUÅ?é   )ÚintÚmathÚfloorÚsqrtÚfabsÚlogÚabsÚrange) ÚbitgenÚnÚrÚqÚfmÚmÚp1ÚxmÚxlÚxrÚcÚaÚlamlÚlamrÚp2Úp3Úp4ÚcaseÚyÚkÚnrqÚuÚvÚxÚsÚFÚiÚrhoÚtÚAÚnext_doubleÚsqueeze_rejects                                  €€úHC:\Projects\Historical\venv\Lib\site-packages\numba/cpython/_binomial.pyÚbinomial_btpez)make_binomial_btpe.<locals>.binomial_btpe   s«  ø€ à�!‰GˆØ�‰U�Q‰YˆÝ•”
˜2‘”ÑÔˆÝŒZ˜¥¤	¨!¨a©%°!©)Ñ 4Ô 4Ñ4°s¸Q±wÑ>Ñ?Ô?À#ÑEˆØ�‰WˆØ�"‰WˆØ�"‰WˆØ�D˜D 1™HÑ%Ñ%ˆØ�"‰W˜˜b 1™f™Ñ%ˆØ�C˜!˜c™'‘MÑ"ˆØ�"‰W˜˜a™Ñ ˆØ�C˜!˜c™'‘MÑ"ˆØ�3˜˜q™‘=Ñ!ˆØ�!�d‘(‰]ˆØ�!�d‘(‰]ˆàˆØˆ	ˆˆAðN	Ø�rŠzˆzØ˜!‘e˜a‘i�Ø�K Ñ'Ô'¨"Ñ,�Ø�K Ñ'Ô'�Ø�r’6�6Ø�DØÝ�œ
 2¨¨Q©¡;°¡?Ñ3Ô3Ñ4Ô4�Ø�ØØ˜’�Ø�r’6�6Ø�DØØ˜!˜b™& A™Ñ%�Ø˜‘E˜C‘K¥$¤)¨A°©E°C©KÑ"8Ô"8¸2Ñ"=Ñ=�Ø�s’7�7Ø�DØÝ�œ
 1™œÑ&Ô&�Ø�ØØ˜’�Ø�r’6�6Ø�DØÝ�œ
 2­¬°©¬°dÑ(:Ñ#:Ñ;Ô;Ñ<Ô<�Ø˜’E�E˜q Cšx˜xØ�DÙØ˜˜R™‘L 4Ñ'�Ø�ÙØ˜’�Ý�œ
 2­¬°©¬°dÑ(:Ñ#:Ñ;Ô;Ñ<Ô<�Ø˜’E�E˜q Cšx˜xØ�DÙØ˜˜R™‘L 4Ñ'�Ø�ÙØ˜’�Ý˜˜A™‘J”J�Ø˜’F�F  c¨C¡i°!¡mÒ!4Ð!4Ø�DÙØ˜‘E�Ø˜˜Q™‘K�Ø�Ø�q’5�5Ý" 1 q¡5¨!¨a©%Ñ0Ô0ð ,ð ,˜Ø  Q¡¨¡™O˜˜ð,à˜’U�UÝ" 1 q¡5¨!¨a©%Ñ0Ô0ð ,ð ,˜Ø  Q¡¨¡™O˜˜Ø�q’5�5Ø�DÙØ�ÙØ˜’�Ø˜3‘w A¨¨S©°5©Ñ$9Ø$7ñ%8Ø;>ñ$?ØADñ$Eñ F�à�B˜‘F˜a #™gÑ&�Ý”H˜Q‘K”K�Ø˜˜C™’=�=Ø�DÙØ˜˜C™’=�=Ø�DÙØ!�> ! R¨¨A¨q°!°QÑ7Ô7ð Ø�DÙØ�ÙØ˜’�Ø�ñ]N	ó    r   )r6   r7   r9   s   `` r8   Úmake_binomial_btper;      s>   øø€ õ ðað að að að añ ÔðaðF Ðr:   )Ú__doc__r   Únumba.core.extendingr   r;   © r:   r8   ú<module>r?      sJ   ðð
ð 
ð €€€à 1Ð 1Ð 1Ð 1Ð 1Ð 1ðkð kð kð kð kr:   