ó
    ‰*£h«@  ã                   óZ  • S SK r S SKJr  S /S-  r\" SS5       H  r\/SS\-
  -  -  \S\-  SS\S-   -  2'   M      S"S jrS"S jrS r	S	 r
S
 rS r\ R                  r\ R                  rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S  r#S! r$g)#é    Né   é   é   é   c                 ó°  • U (       d  g [        X-	  5      n U S-  nU(       a  [        U   U-   $ SU-   nU S-  n U R                  5       S-
  nU SU-  :X  a  XC-   $ US:  a!  U S-  (       d  U S-  n US-  nU S-  (       d  M  OJUS-	  nU S-  (       d;  U SU-  S-
  -  (       a  US-  nU SU-  S-
  -  (       a  M  X-  n X5-  nU S-  (       d  M;  U[        U S-     -   $ )Néÿ   r   r   i,  )ÚabsÚ_small_trailingÚ
bit_length)ÚxÚnÚlow_byteÚtÚzÚps         ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/external/ntheory.pyÚ	bit_scan1r      sþ   € ÞØÜˆA‰F‹€AØ�4‰x€HÞÜ˜xÑ(¨1Ñ,Ð,à	ˆA‰€AØˆ!�G€Aà	�‰‹˜Ñ€AØˆA�‰Fƒ{Ø‰uˆàˆ3ƒwà�d—(Ø�!‰GˆAØ�‰FˆAð �d—(‘(øð �‰FˆØ�d—(Ø˜˜Q™ !‘|×$Ø�a‘�ð ˜˜Q™ !‘|×$Ñ$à‰GˆAØ‰FˆAð	 �d—(‘(ð
 Œ˜q 4™xÑ(Ñ(Ð(ó    c                 ó&   • [        U SU-  -   U5      $ )Nr   )r   )r   r   s     r   Ú	bit_scan0r   0   s   € Ü�Q˜!˜q™&‘\ 1Ó%Ð%r   c                 ó¦  • US:  a  [        S5      eU S:X  a  gUS:X  a  [        U 5      nX-	  U4$ Sn[        X5      u  pEU(       dŠ  Un US-  nUS:”  ag  US-  /nU(       aZ  US   n[        X5      u  pEU(       d(  US[        U5      -  -  nUn UR	                  US-  5        OUR                  5         U(       a  MZ  [        X5      u  pEU(       d  MŠ  X4$ )Né   zfactor must be > 1r   )r   r   r   é   éÿÿÿÿ)Ú
ValueErrorr   ÚdivmodÚlenÚappendÚpop)r   ÚfÚbÚmÚyÚremÚpow_listÚ_fs           r   Úremover'   4   sÝ   € Øˆ1ƒuÜÐ-Ó.Ð.ØˆAƒvØØˆAƒvÜ�a‹LˆØ‰v�qˆyÐØ	€AÜ�A‹\�F€AÞØˆØ	ˆQ‰ˆØˆq‹5Ø˜1™�vˆHÞØ˜b‘\�Ü ›‘�ÞØ˜œc (›mÑ+Ñ+�AØ�AØ—O‘O B¨¡EÕ*à—L‘L”N÷ �(ô ˜“‰ˆ÷ ˆcð ˆ4€Kr   c                 óR   • [        [        R                  " [        U 5      5      5      $ )z
Return x!.)ÚintÚmlibÚifac©r   s    r   Ú	factorialr-   P   s   € äŒt�yŠyœ˜Q›Ó Ó!Ð!r   c                 óR   • [        [        R                  " [        U 5      5      5      $ )zInteger square root of x.)r)   r*   Úisqrtr,   s    r   Úsqrtr0   U   s   € äŒt�zŠzœ#˜a›&Ó!Ó"Ð"r   c                 óp   • [         R                  " [        U 5      5      u  p[        U5      [        U5      4$ )z'Integer square root of x and remainder.©r*   Úsqrtremr)   )r   ÚsÚrs      r   r3   r3   Z   s)   € ä�<Š<œ˜A›Ó�D€AÜ�‹F”C˜“FÐÐr   c                 ó    • U S:  a  SU * 4$ SU 4$ )Nr   r   r   © ©r   s    r   Ú_signr9   d   s   € Øˆ1ƒuØ�A�2ˆvˆØˆaˆ4€Kr   c                 ó*  • U (       a  U(       d.  [        U 5      =(       d    [        U5      nU(       d  gX U-  X-  4$ [        U 5      u  p0[        U5      u  pASu  pVSu  pxU(       a&  [        X5      u  pšXpXeX–-  -
  peX‡X˜-  -
  p‡U(       a  M&  XU-  Xt-  4$ )N)r   r   r   )r   r   ©r   r   )r	   r9   r   )Úar!   ÚgÚx_signÚy_signr   r5   r#   r4   ÚqÚcs              r   ÚgcdextrB   j   s—   € Þ–AÜ�‹F×”c˜!“fˆÞØØ˜‘6˜1™6Ð"Ð"ä�a“�I€FÜ�a“�I€FØ�D€AØ�D€Aæ
Ü�a‹|‰ˆØˆ1Ø�a‘c‘'ˆ1Ø�a‘c‘'ˆ1÷	 ˆ!ð �6‰z˜1™:Ð&Ð&r   c                 óì   • U S:  a  gSSU S-  -  -  (       a  gU S-  nSSUS-  -  -  (       a  gS	SUS
-  -  -  (       a  gSSUS-  -  -  (       a  g[         R                  " [        U 5      5      S   S:H  $ )z$Return True if x is a square number.r   Fl	   ì}ù{·wïoÏ^¿?{þ~ý r   é   iE¯ l   ì}}k-î[o{?_}éc   l   ì=}:žM¯vÏ?£_ é[   l   ì}¬sŽ�;®y½éU   r2   ©r   r"   s     r   Ú	is_squarerI      s€   € àˆ1ƒuØð* *¨Q°1°s±7©^×<ØØ	ˆF‰
€AØ" a¨A°©F¡m×4ØØ  A¨!¨b©&¡M×2ØØ !¨¨B©¡-×0ØÜ�<Š<œ˜A›Ó Ñ" aÑ'Ð'r   c                 óP   •  [        U SU5      $ ! [         a    [        S5      ef = f)z½Modular inverse of x modulo m.

Returns y such that x*y == 1 mod m.

Uses ``math.pow`` but reproduces the behaviour of ``gmpy2.invert``
which raises ZeroDivisionError if no inverse exists.
r   zinvert() no inverse exists)Úpowr   ÚZeroDivisionErrorrH   s     r   ÚinvertrM   £   s0   € ð>Ü�1�b˜!‹}ÐøÜó >ÜÐ <Ó=Ð=ð>ús   ‚ �%c                 ó€   • US::  d
  US-  (       d  [        S5      eX-  n U (       d  g[        XS-
  S-  U5      S:X  a  gg)ztLegendre symbol (x / y).

Following the implementation of gmpy2,
the error is raised only when y is an even number.
r   r   zy should be an odd primer   r   )r   rK   )r   r#   s     r   ÚlegendrerO   ±   sG   € ð 	ˆAƒv�Q˜—UÜÐ3Ó4Ð4Ø�F€AÞØÜ
ˆ1�1‰u˜‰l˜AÓ !Ó#ØØr   c                 óh  • US::  d
  US-  (       d  [        S5      eX-  n U (       d  [        US:H  5      $ US:X  d  U S:X  a  g[        X5      S:w  a  gSnU S:w  aX  U S-  S:X  a(  U S:”  a"  U S-  n US-  S;   a  U* nU S-  S:X  a  U S:”  a  M"  XpU S-  US-  s=:X  a  S:X  a  O  OU* nX-  n U S:w  a  MX  U$ )	zJacobi symbol (x / y).r   r   z#y should be an odd positive integerr   r   ©é   r   é   rR   )r   r)   Úgcd)r   r#   Újs      r   ÚjacobirV   Á   sÖ   € àˆAƒv�Q˜—UÜÐ>Ó?Ð?Ø�F€AÞÜ�1˜‘6‹{ÐØˆAƒv��a“ØÜ
ˆ1ƒy�Aƒ~ØØ	€AØ
ˆq‹&Ø�!‰e�q‹j˜Q ›UØ�!‰GˆAØ�1‰u˜‹Ø�B�ð �!‰e�q‹j˜Q �Uð ˆ1Øˆq‰5�A˜‘EÕ˜QÖØ�ˆAØ	‰ˆð ˆq�&ð €Hr   c                 óÌ   • [        X5      S:w  a  gUS:X  a  gUS:  a  U S:  a  SOSn[        U5      n[        U5      nX-  nUS-  (       a  U S-  S;   a  U* nU[        X5      -  $ )zKronecker symbol (x / y).r   r   r   r   r   rQ   )rT   r	   r   rV   )r   r#   Úsignr4   s       r   Ú	kroneckerrY   Ù   sm   € ä
ˆ1ƒy�Aƒ~ØØˆAƒvØØ�Q“˜1˜q›5‰2 a€DÜˆA‹€AÜ�!‹€AØ�G€AØˆ1‡u��Q‘˜&“ØˆuˆØ”&˜“,ÑÐr   c                 ó¼  • U S:  a  [        S5      eUS:  a  [        S5      eU S;   a  U S4$ US:X  a  U S4$ US:X  a*  [        R                  " U 5      u  p#[        U5      U(       + 4$ XR	                  5       :¼  a  g [        U S	U-  -  S
-   5      nUS:”  a/  SUp' X!S-
  -  nX!S-
  U-  X-  -   U-  p'[        X'-
  5      S:  a  OM+  UnX!-  nX€:  a  US-  nX!-  nX€:  a  M  X€:”  a  US-  nX!-  nX€:”  a  M  X(U :H  4$ ! [
         aV    [        R                  " U 5      U-  nUS:”  a&  [        US-
  5      n[        SXV-
  -  S-   5      U-  n Nº[        SU-  5      n NÊf = f)Nr   zy must be nonnegativer   zn must be positiver;   Tr   )r   Fg      ð?g      à?é5   g       @l           r   )	r   r*   r3   r)   r   ÚOverflowErrorÚmathÚlog2r	   )	r#   r   r   r$   ÚguessÚexpÚshiftÚxprevr   s	            r   Úirootrc   è   s™  € Øˆ1ƒuÜÐ0Ó1Ð1Øˆ1ƒuÜÐ-Ó.Ð.ØˆFƒ{Ø�$ˆwˆØˆAƒvØ�$ˆwˆØˆAƒvÜ—’˜a“‰ˆÜ�1‹v˜3”wˆÐØ�L‰L‹NÓØð"Ü�A˜˜1™‘I ‘OÓ$ˆð ˆuƒ}à�uˆqØØ˜‘E‘
ˆAØ ™E 1™9 q¡tÑ+¨aÑ/�1Ü�1‘9‹~ Ó!Øñ	 ð ˆà	‰€AØ
‹%Ø	ˆQ‰ˆØ‰Dˆð �%ð ‹%Ø	ˆQ‰ˆØ‰Dˆð �%ð �1‰fˆ9Ðøô3 ó "Ü�iŠi˜‹l˜1‰nˆØ�‹8Ü˜˜b™“MˆEÜ˜˜c™kÑ*¨QÑ.Ó/°5Ñ8ŠEä˜˜S™“MŠEð"ús   Á<C; Ã;AEÅ
EÅEc                 óÐ   • US:  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ X-  n[        X5      S:w  a  [        S5      e[        XS-
  U 5      S:H  $ )Nr   z7is_fermat_prp() requires 'a' greater than or equal to 2r   z.is_fermat_prp() requires 'n' be greater than 0Fr   z&is_fermat_prp() requires gcd(n,a) == 1)r   rT   rK   ©r   r<   s     r   Úis_fermat_prprf     sz   € Øˆ1ƒuÜÐRÓSÐSØˆ1ƒuÜÐIÓJÐJØˆAƒvØØˆ1�u�ƒzØ�A‰vˆØ�F€AÜ
ˆ1ƒy�Aƒ~ÜÐAÓBÐBÜˆq�a‘%˜Ó˜qÑ Ð r   c                 óè   • US:  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ X-  n[        X5      S:w  a  [        S5      e[        XS-	  U 5      [        X5      U -  :H  $ )Nr   z6is_euler_prp() requires 'a' greater than or equal to 2r   z-is_euler_prp() requires 'n' be greater than 0Fr   z%is_euler_prp() requires gcd(n,a) == 1)r   rT   rK   rV   re   s     r   Úis_euler_prprh   %  sƒ   € Øˆ1ƒuÜÐQÓRÐRØˆ1ƒuÜÐHÓIÐIØˆAƒvØØˆ1�u�ƒzØ�A‰vˆØ�F€AÜ
ˆ1ƒy�Aƒ~ÜÐ@ÓAÐAÜˆq�q‘&˜!Ó¤ q£¨qÑ 0Ñ0Ð0r   c                 óÄ   • [        U S-
  5      n[        XU-	  U 5      nUS:X  d  XS-
  :X  a  g[        US-
  5       H"  n[        USU 5      nXS-
  :X  a    gUS:X  d  M"    g   g)Nr   Tr   F)r   rK   Úrange)r   r<   r4   Ú_s       r   Ú_is_strong_prprl   4  sl   € Ü�!�a‘%Ó€AÜˆA�A‰v�qÓ€AØˆAƒv�˜!‘e“ØÜ�1�q‘5Ž\ˆÜ��1�a‹LˆØ�A‘‹:ÙØ��6Ùñ ð r   c                 óÂ   • US:  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ X-  n[        X5      S:w  a  [        S5      e[        X5      $ )Nr   z7is_strong_prp() requires 'a' greater than or equal to 2r   z.is_strong_prp() requires 'n' be greater than 0Fr   z&is_strong_prp() requires gcd(n,a) == 1)r   rT   rl   re   s     r   Úis_strong_prprn   B  so   € Øˆ1ƒuÜÐRÓSÐSØˆ1ƒuÜÐIÓJÐJØˆAƒvØØˆ1�u�ƒzØ�A‰vˆØ�F€AÜ
ˆ1ƒy�Aƒ~ÜÐAÓBÐBÜ˜!ÓÐr   c                 ó¦  • US:X  a  gUS-  SU-  -
  nSnUnX -  nUS:X  ad  [        U5      SS  HP  nXV-  U -  nXf-  S-
  U -  nUS:X  d  M  XQ-  U-   Xa-  XT-  -   peUS-  (       a  XP-  nUS-  (       a  X`-  nUS-	  US-	  peMR     GOEUS:X  am  US	:X  ag  [        U5      SS  HP  nXV-  U -  nUS:X  a  Xf-  S-
  U -  nOXf-  S-   U -  nSnUS:X  d  M/  XV-   US-  peUS-  (       a  XP-  nUS-  nXe-  nS	nMR     Xp-  nOÒUS:X  a]  [        U5      SS  HJ  nXV-  U -  nXf-  SU-  -
  U -  nXw-  nUS:X  a%  XV-   X%-  S-  peUS-  (       a  XP-  nUS-  nXV-
  nXr-  nXp-  nML     Oo[        U5      SS  H]  nXV-  U -  nXf-  SU-  -
  U -  nXw-  nUS:X  a8  XQ-  U-   Xa-  XT-  -   peUS-  (       a  XP-  nUS-  (       a  X`-  nUS-	  US-	  peXr-  nXp-  nM_     XP-  X`-  U4$ )
a  Return the modular Lucas sequence (U_k, V_k, Q_k).

Explanation
===========

Given a Lucas sequence defined by P, Q, returns the kth values for
U and V, along with Q^k, all modulo n. This is intended for use with
possibly very large values of n and k, where the combinatorial functions
would be completely unusable.

.. math ::
    U_k = \begin{cases}
         0 & \text{if } k = 0\\
         1 & \text{if } k = 1\\
         PU_{k-1} - QU_{k-2} & \text{if } k > 1
    \end{cases}\\
    V_k = \begin{cases}
         2 & \text{if } k = 0\\
         P & \text{if } k = 1\\
         PV_{k-1} - QV_{k-2} & \text{if } k > 1
    \end{cases}

The modular Lucas sequences are used in numerous places in number theory,
especially in the Lucas compositeness tests and the various n + 1 proofs.

Parameters
==========

n : int
    n is an odd number greater than or equal to 3
P : int
Q : int
    D determined by D = P**2 - 4*Q is non-zero
k : int
    k is a nonnegative integer

Returns
=======

U, V, Qk : (int, int, int)
    `(U_k \bmod{n}, V_k \bmod{n}, Q^k \bmod{n})`

Examples
========

>>> from sympy.external.ntheory import _lucas_sequence
>>> N = 10**2000 + 4561
>>> sol = U, V, Qk = _lucas_sequence(N, 3, 1, N//2); sol
(0, 2, 1)

References
==========

.. [1] https://en.wikipedia.org/wiki/Lucas_sequence

r   )r   r   r   r   rS   r   rR   NÚ1r   )Úbin)	r   ÚPÚQÚkÚDÚUÚVÚQkr!   s	            r   Ú_lucas_sequencery   Q  sp  € ðr 	ˆAƒvØØ	ˆ1‰ˆq�‰s‰
€AØ	€AØ	€AØ	
‰€BØˆAƒvä�Q“˜˜“ˆAØ‘˜‘	ˆAØ‘�q‘˜A‘ˆAØ�C�xØ‘s˜Q‘w ¡ a¡c¡	�1Ø�q—5Ø‘F�AØ�q—5Ø‘F�AØ˜A‘v˜q A™v’1ó ð 
ˆa‹�A˜“Gä�Q“˜˜“ˆAØ‘˜‘	ˆAØ�Q‹wØ‘S˜1‘W ‘M‘à‘S˜1‘W ‘M�Ø�Ø�C�xð ™˜q A™v�1Ø�q—5Ø‘F�AØ�a‘�Ø‘�Ø’ñ ð  	‰‰Ø	
ˆa‹Ü�Q“˜˜“ˆAØ‘˜‘	ˆAØ‘�q˜‘t‘˜qÑ ˆAØ‰HˆBØ�C‹xð ™ ¡¨™z�1Ø�q—5Ø‘F�AØ�a‘�Ø‘E�Ø‘�Ø‰GŠBò ô  �Q“˜˜“ˆAØ‘˜‘	ˆAØ‘�q˜‘t‘˜qÑ ˆAØ‰HˆBØ�C‹xØ‘s˜Q‘w ¡ a¡c¡	�1Ø�q—5Ø‘F�AØ�q—5Ø‘F�AØ˜A‘v˜q A™v�1Ø‘�Ø‰GŠBñ ð ‰E�1‘5˜"ÐÐr   c                 óÆ   • US-  SU-  -
  nUS:X  d  US::  d  US;  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        XX 5      S   X-  :H  $ )	Nr   rS   r   )r   r   z,invalid values for p,q in is_fibonacci_prp()r   z1is_fibonacci_prp() requires 'n' be greater than 0F)r   ry   ©r   r   r@   Úds       r   Úis_fibonacci_prpr}   Ð  s}   € Ø	ˆ1‰ˆq�‰s‰
€AØˆAƒv��a“˜1 GÓ+ÜÐGÓHÐHØˆ1ƒuÜÐLÓMÐMØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ˜1 Ó& qÑ)¨Q©UÑ2Ð2r   c           
      ó   • US-  SU-  -
  nUS:X  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        XU-  5      SU 4;  a  [        S5      e[        XX [        X05      -
  5      S   S:H  $ )	Nr   rS   r   z(invalid values for p,q in is_lucas_prp()r   z-is_lucas_prp() requires 'n' be greater than 0Fz)is_lucas_prp() requires gcd(n,2*q*D) == 1)r   rT   ry   rV   r{   s       r   Úis_lucas_prpr   Ý  s—   € Ø	ˆ1‰ˆq�‰s‰
€AØˆAƒvÜÐCÓDÐDØˆ1ƒuÜÐHÓIÐIØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ
ˆ1�‰cƒ{˜1˜a˜&Ó ÜÐDÓEÐEÜ˜1 ¬¨q«Ñ$4Ó5°aÑ8¸AÑ=Ð=r   c                 ó  • [        SSS5       Hk  nUS-  (       a  U* n[        X5      nUS:X  a  [        U SSU-
  S-  U S-   5      S   S:H  s  $ US:X  a  X-  (       a    gUS	:X  d  MY  [        U 5      (       d  Mk    g   [	        S
5      e)a  Lucas compositeness test with the Selfridge parameters for n.

Explanation
===========

The Lucas compositeness test checks whether n is a prime number.
The test can be run with arbitrary parameters ``P`` and ``Q``, which also change the performance of the test.
So, which parameters are most effective for running the Lucas compositeness test?
As an algorithm for determining ``P`` and ``Q``, Selfridge proposed method A [1]_ page 1401
(Since two methods were proposed, referred to simply as A and B in the paper,
we will refer to one of them as "method A").

method A fixes ``P = 1``. Then, ``D`` defined by ``D = P**2 - 4Q`` is varied from 5, -7, 9, -11, 13, and so on,
with the first ``D`` being ``jacobi(D, n) == -1``. Once ``D`` is determined,
``Q`` is determined to be ``(P**2 - D)//4``.

References
==========

.. [1] Robert Baillie, Samuel S. Wagstaff, Lucas Pseudoprimes,
       Math. Comp. Vol 35, Number 152 (1980), pp. 1391-1417,
       https://doi.org/10.1090%2FS0025-5718-1980-0583518-6
       http://mpqs.free.fr/LucasPseudoprimes.pdf

r   é@B r   r   r   rS   r   Fé   z=appropriate value for D cannot be found in is_selfridge_prp())rj   rV   ry   rI   r   )r   ru   rU   s      r   Ú_is_selfridge_prprƒ   ì  sŠ   € ô4 �1�i Ö#ˆØˆq�5Ø�ˆAÜ�1‹LˆØ�‹7Ü" 1 a¨!¨A©#°!©°Q¸±UÓ;¸AÑ>À!ÑCÒCØ�‹6�a—eÙà��7”y —|“|Ùñ $ô ÐTÓ
UÐUr   c                 ód   • U S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        U 5      $ )Nr   ú1is_selfridge_prp() requires 'n' be greater than 0Fr   r   )r   rƒ   r8   s    r   Úis_selfridge_prpr†     s>   € Øˆ1ƒuÜÐLÓMÐMØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ˜QÓÐr   c                 ó¨  • US-  SU-  -
  nUS:X  a  [        S5      eU S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        XU-  5      SU 4;  a  [        S5      e[        X05      n[        X-
  5      n[	        XX U-
  U-	  5      u  pgnUS:X  d  US:X  a  g	[        US-
  5       H%  n	Xw-  SU-  -
  U -  nUS:X  a    g	[        USU 5      nM'     g)
Nr   rS   r   z/invalid values for p,q in is_strong_lucas_prp()r   r…   Fz0is_strong_lucas_prp() requires gcd(n,2*q*D) == 1T)r   rT   rV   r   ry   rj   rK   )
r   r   r@   ru   rU   r4   rv   rw   rx   rk   s
             r   Úis_strong_lucas_prprˆ     sö   € Ø	ˆ1‰ˆq�‰s‰
€AØˆAƒvÜÐJÓKÐKØˆ1ƒuÜÐLÓMÐMØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ
ˆ1�‰cƒ{˜1˜a˜&Ó ÜÐKÓLÐLÜˆq‹€AÜ�!‘%Ó€AÜ˜q Q¨Q©°1©Ó5�H€Aˆ"ØˆAƒv��a“ØÜ�1�q‘5Ž\ˆØ‰S�1�R‘4‰Z˜1ÑˆØ�‹6ÙÜ��Q˜‹]Šñ	 ð
 r   c                 ó¸  • [        SSS5       H¿  nUS-  (       a  U* n[        X5      nUS:X  as  [        U S-   5      n[        U SSU-
  S-  U S-   U-	  5      u  pEnUS:X  d  US:X  a    g[        US-
  5       H&  nXU-  SU-  -
  U -  nUS:X  a      g[	        USU 5      nM(       g	US:X  a  X-  (       a    g	US
:X  d  M­  [        U 5      (       d  M¿    g	   [        S5      e)Nr   r�   r   r   r   rS   r   TFr‚   zDappropriate value for D cannot be found in is_strong_selfridge_prp())rj   rV   r   ry   rK   rI   r   )r   ru   rU   r4   rv   rw   rx   rk   s           r   Ú_is_strong_selfridge_prprŠ   7  så   € Ü�1�i Ö#ˆØˆq�5Ø�ˆAÜ�1‹LˆØ�‹7Ü˜!˜a™%Ó ˆAÜ& q¨!¨a°©c°a©Z¸!¸a¹%ÀA¹ÓF‰HˆA�"Ø�A‹v˜˜a›ÙÜ˜1˜q™5–\�Ø‘S˜1˜R™4‘Z 1Ñ$�Ø˜“6ÚÜ˜˜Q “]’ñ	 "ñ
 Ø�‹6�a—eÙà��7”y —|“|Ùñ' $ô( Ð[Ó
\Ð\r   c                 ód   • U S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        U 5      $ )Nr   z8is_strong_selfridge_prp() requires 'n' be greater than 0Fr   r   )r   rŠ   r8   s    r   Úis_strong_selfridge_prprŒ   O  s>   € Øˆ1ƒuÜÐSÓTÐTØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ# AÓ&Ð&r   c                 óŠ   • U S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        U S5      =(       a    [        U 5      $ )Nr   z,is_bpsw_prp() requires 'n' be greater than 0Fr   r   )r   rl   rƒ   r8   s    r   Úis_bpsw_prprŽ   Y  sK   € Øˆ1ƒuÜÐGÓHÐHØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ˜!˜QÓ×8Ô$5°aÓ$8Ð8r   c                 óŠ   • U S:  a  [        S5      eU S:X  a  gU S-  S:X  a  U S:H  $ [        U S5      =(       a    [        U 5      $ )Nr   z3is_strong_bpsw_prp() requires 'n' be greater than 0Fr   r   )r   rl   rŠ   r8   s    r   Úis_strong_bpsw_prpr�   c  sK   € Øˆ1ƒuÜÐNÓOÐOØˆAƒvØØˆ1�u�ƒzØ�A‰vˆÜ˜!˜QÓ×?Ô$<¸QÓ$?Ð?r   )r   )%r]   Úmpmath.libmpÚlibmpr*   r
   rj   rU   r   r   r'   r-   r0   r3   rT   Úlcmr9   rB   rI   rM   rO   rV   rY   rc   rf   rh   rl   rn   ry   r}   r   rƒ   r†   rˆ   rŠ   rŒ   rŽ   r�   r7   r   r   Ú<module>r”      s   ðó å ð �#˜‘)€Ù	ˆq�!Ž€AØ/0¨c°Q¸1¸q¹5±\Ñ.B€O�A˜‘FÐ*˜a A¨¡E™lÐ*Ó+ñ 
ô)ô@&òò8"ò
#ò
ð ‡h�h€Ø
‡h�h€òò'ò*!(òH>òò ò0ò+ò\!ò1òò ò|ò~
3ò>ò%VòP òò2]ò0'ò9ó@r   