Ë
    täi«@  ã                   óR  — d dl Z d dlmZ d gdz  Z edd«      D ]  Zegddez
  z  z  edez  ddedz   z  …<   Œ d"d„Zd"d„Zd„ Z	d	„ Z
d
„ Zd„ Ze j                  Ze j                  Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$y)#é    Né   é   é   é   c                 ó^  — | sy t        | |z	  «      } | dz  }|rt        |   |z   S d|z   }| dz  } | j                  «       dz
  }| d|z  k(  r||z   S |dk  r| dz  sG| dz  } |dz  }| dz  sŒn6|dz	  }| dz  s,| d|z  dz
  z  r|dz  }| d|z  dz
  z  rŒ| |z  } ||z  }| dz  sŒ,|t        | dz     z   S )Néÿ   r   r   i,  )ÚabsÚ_small_trailingÚ
bit_length)ÚxÚnÚlow_byteÚtÚzÚps         úe/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/external/ntheory.pyÚ	bit_scan1r      sþ   € ÙØÜˆA�‰F‹€AØ�4‰x€HÙÜ˜xÑ(¨1Ñ,Ð,à	ˆA‰€AØˆ!�G€Aà	�‰‹˜Ñ€AØˆA�‰F‚{Ø�1‰uˆàˆ3‚wà�d’(Ø�!‰GˆAØ�‰FˆAð �d”(ð �‰FˆØ�d’(Ø˜˜Q™ !‘|Ò$Ø�a‘�ð ˜˜Q™ !‘|Ó$à�!‰GˆAØ�‰FˆAð	 �d“(ð
 Œ˜q 4™xÑ(Ñ(Ð(ó    c                 ó&   — t        | d|z  z   |«      S )Nr   )r   )r   r   s     r   Ú	bit_scan0r   0   s   € Ü�Q˜!˜q™&‘\ 1Ó%Ð%r   c                 óx  — |dk  rt        d«      ‚| dk(  ry|dk(  rt        | «      }| |z	  |fS d}t        | |«      \  }}|sw|} |dz  }|dkD  rY|dz  g}|rQ|d   }t        | |«      \  }}|s(|dt        |«      z  z  }|} |j	                  |dz  «       n|j                  «        |rŒQt        | |«      \  }}|sŒw| |fS )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ˆØ�A‰v�qˆyÐØ	€AÜ�A�q‹\�F€A€sÙØˆØ	ˆQ‰ˆØˆqŠ5Ø˜1™�vˆHÙØ˜b‘\�Ü  2›‘��3ÙØ˜œc (›mÑ+Ñ+�AØ�AØ—O‘O B¨¡EÕ*à—L‘L”Nò ô ˜˜1“‰ˆˆ3ò ð ˆaˆ4€Kr   c                 óP   — t        t        j                  t        | «      «      «      S )z
Return x!.)ÚintÚmlibÚifac©r   s    r   Ú	factorialr-   P   s   € äŒt�y‰yœ˜Q›Ó Ó!Ð!r   c                 óP   — t        t        j                  t        | «      «      «      S )zInteger square root of x.)r)   r*   Úisqrtr,   s    r   Úsqrtr0   U   s   € äŒt�z‰zœ#˜a›&Ó!Ó"Ð"r   c                 óp   — t        j                  t        | «      «      \  }}t        |«      t        |«      fS )z'Integer square root of x and remainder.©r*   Úsqrtremr)   )r   ÚsÚrs      r   r3   r3   Z   s+   € ä�<‰<œ˜A›Ó�D€A€qÜ�‹F”C˜“FÐÐr   c                 ó   — | dk  rd|  fS d| fS )Nr   r   r   © ©r   s    r   Ú_signr9   d   s   € Øˆ1‚uØ�A�2ˆvˆØˆaˆ4€Kr   c                 ó  — | r|s&t        | «      xs t        |«      }|sy|| |z  ||z  fS t        | «      \  }} t        |«      \  }}d\  }}d\  }}|r*t        | |«      \  }	}
||
}} |||	|z  z
  }}|||	|z  z
  }}|rŒ*| ||z  ||z  fS )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ˆÙØØ�1˜‘6˜1 ™6Ð"Ð"ä�a“�I€FˆAÜ�a“�I€FˆAØ�D€A€qØ�D€A€qá
Ü�a˜‹|‰ˆˆ1Ø�!ˆ1ˆØ�!�a˜‘c‘'ˆ1ˆØ�!�a˜‘c‘'ˆ1ˆò	 ð ˆq�6‰z˜1˜v™:Ð&Ð&r   c                 óÀ   — | dk  rydd| dz  z  z  ry| dz  }dd|dz  z  z  ryd	d|d
z  z  z  rydd|dz  z  z  ryt        j                  t        | «      «      d   dk(  S )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                 óN   — 	 t        | d|«      S # t        $ r t        d«      ‚w xY w)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                 ól   — |dk  s|dz  st        d«      ‚| |z  } | syt        | |dz
  dz  |«      dk(  ryy)z€Legendre 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   ±   sK   € ð 	ˆA‚v�Q˜’UÜÐ3Ó4Ð4Øˆ�F€AÙØÜ
ˆ1ˆq�1‰u˜‰l˜AÓ !Ò#ØØr   c                 ó>  — |dk  s|dz  st        d«      ‚| |z  } | st        |dk(  «      S |dk(  s| dk(  ryt        | |«      dk7  ryd}| dk7  rP| dz  dk(  r"| dkD  r| dz  } |dz  dv r| }| dz  dk(  r| dkD  rŒ|| }} | dz  |dz  cxk(  rdk(  rn n| }| |z  } | dk7  rŒP|S )	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ˆaƒ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‰ˆð ˆq‹&ð €Hr   c                 ó¼   — t        | |«      dk7  ry|dk(  ry|dk  r| dk  rdnd}t        |«      }t        |«      }||z  }|dz  r
| dz  dv r| }|t        | |«      z  S )zKronecker symbol (x / y).r   r   r   r   r   rQ   )rT   r	   r   rV   )r   r#   Úsignr4   s       r   Ú	kroneckerrY   Ù   ss   € ä
ˆ1ˆaƒy�A‚~ØØˆA‚vØØ�Q’˜1˜qš5‰2 a€DÜˆA‹€AÜ�!‹€AØˆ!�G€AØˆ1‚u��Q‘˜&‘ØˆuˆØ”&˜˜A“,ÑÐr   c                 ó¬  — | dk  rt        d«      ‚|dk  rt        d«      ‚| dv r| dfS |dk(  r| dfS |dk(  r&t        j                  | «      \  }}t        |«      | fS || j	                  «       k\  ry	 t        | d	|z  z  d
z   «      }|dkD  r3d|}}	 ||dz
  z  }||dz
  |z  | |z  z   |z  }}t        ||z
  «      dk  rnŒ.|}||z  }|| k  r|dz  }||z  }|| k  rŒ|| kD  r|dz  }||z  }|| kD  rŒ||| k(  fS # t
        $ rT t        j                  | «      |z  }|dkD  r&t        |dz
  «      }t        d||z
  z  dz   «      |z  }nt        d|z  «      }Y ŒÌw xY w)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“‰ˆˆ3Ü�1‹v˜3�wˆÐØˆA�L‰L‹NÒØð"Ü�A˜˜1™‘I ‘OÓ$ˆð ˆu‚}à�uˆqˆØØ�A˜‘E‘
ˆAØ˜A ™E 1™9 q¨!¡tÑ+¨aÑ/�1ˆEÜ�1�u‘9‹~ Ò!Øð	 ð ˆà	ˆ1‰€AØ
ˆaŠ%Ø	ˆQ‰ˆØˆq‰Dˆð ˆa‹%ð ˆaŠ%Ø	ˆQ‰ˆØˆq‰Dˆð ˆa‹%ð ˆa�1‰fˆ9Ðøô3 ò "Ü�i‰i˜‹l˜1‰nˆØ�Š8Ü˜˜b™“MˆEÜ˜˜c E™kÑ*¨QÑ.Ó/°5Ñ8‰Eä˜˜S™“MˆEùð"ús   Á2C6 Ã6AEÅEc                 óÌ   — |dk  rt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S || z  }t        | |«      dk7  rt        d«      ‚t        || dz
  | «      dk(  S )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     s€   € Øˆ1‚uÜÐRÓSÐSØˆ1‚uÜÐIÓJÐJØˆA‚vØØˆ1�u�‚zØ�A‰vˆØˆ�F€AÜ
ˆ1ˆaƒy�A‚~ÜÐAÓBÐBÜˆq�!�a‘%˜Ó˜qÑ Ð r   c                 óæ   — |dk  rt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S || z  }t        | |«      dk7  rt        d«      ‚t        || dz	  | «      t        || «      | z  k(  S )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ˆaƒy�A‚~ÜÐ@ÓAÐAÜˆq�!�q‘&˜!Ó¤ q¨!£¨qÑ 0Ñ0Ð0r   c                 ó¾   — t        | dz
  «      }t        || |z	  | «      }|dk(  s|| dz
  k(  ryt        |dz
  «      D ]   }t        |d| «      }|| dz
  k(  r y|dk(  sŒ  y y)Nr   Tr   F)r   rK   Úrange)r   r<   r4   Ú_s       r   Ú_is_strong_prprl   4  sr   € Ü�!�a‘%Ó€AÜˆAˆq�A‰v�qÓ€AØˆA‚v��a˜!‘e’ØÜ�1�q‘5Ž\ˆÜ��1�a‹LˆØ��A‘Š:ÙØ�‹6Ùð ð r   c                 ó¾   — |dk  rt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S || z  }t        | |«      dk7  rt        d«      ‚t        | |«      S )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  su   € Øˆ1‚uÜÐRÓSÐSØˆ1‚uÜÐIÓJÐJØˆA‚vØØˆ1�u�‚zØ�A‰vˆØˆ�F€AÜ
ˆ1ˆaƒy�A‚~ÜÐAÓBÐBÜ˜!˜QÓÐr   c                 ó–  — |dk(  ry|dz  d|z  z
  }d}|}|| z  }|dk(  r_t        |«      dd D ]L  }||z  | z  }||z  dz
  | z  }|dk(  sŒ||z  |z   ||z  ||z  z   }}|dz  r|| z  }|dz  r|| z  }|dz	  |dz	  }}ŒN �nA|dk(  rj|d	k(  ret        |«      dd D ]N  }||z  | z  }|dk(  r||z  dz
  | z  }n||z  dz   | z  }d}|dk(  sŒ/||z   |dz  }}|dz  r|| z  }|dz  }||z  }d	}ŒP || z  }nÒ|dk(  r_t        |«      dd D ]M  }||z  | z  }||z  d|z  z
  | z  }||z  }|dk(  r&||z   ||z  dz  }}|dz  r|| z  }|dz  }||z
  }||z  }|| z  }ŒO nnt        |«      dd D ]]  }||z  | z  }||z  d|z  z
  | z  }||z  }|dk(  r6||z  |z   ||z  ||z  z   }}|dz  r|| z  }|dz  r|| z  }|dz	  |dz	  }}||z  }|| z  }Œ_ || z  || z  |fS )
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  sÄ  € ðr 	ˆA‚vØØ	ˆ1‰ˆq�‰s‰
€AØ	€AØ	€AØ	
ˆQ‰€BØˆA‚vä�Q“˜˜“ˆAØ�1‘˜‘	ˆAØ�1‘�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Ø�1‘˜‘	ˆAØ�QŠwØ�q‘S˜1‘W ‘M‘à�q‘S˜1‘W ‘M�Ø�Ø�C‹xð ˜A™˜q A™v�1�Ø�q’5Ø˜‘F�AØ�a‘�Ø�Q‘�Ø‘ð ð  	ˆa‰‰Ø	
ˆaŠÜ�Q“˜˜“ˆAØ�1‘˜‘	ˆAØ�1‘�q˜‘t‘˜qÑ ˆAØ�"‰HˆBØ�CŠxð ˜A™  !¡¨™z�1�Ø�q’5Ø˜‘F�AØ�a‘�Ø˜‘E�Ø�a‘�Ø�!‰G‰Bñ ô  �Q“˜˜“ˆAØ�1‘˜‘	ˆAØ�1‘�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�Ø�a‘�Ø�!‰G‰Bð ð �‰E�1�q‘5˜"ÐÐr   c                 ó¾   — |dz  d|z  z
  }|dk(  s	|dk  s|dvrt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | ||| «      d   || z  k(  S )	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˜a  AÓ& qÑ)¨Q°©UÑ2Ð2r   c           
      óü   — |dz  d|z  z
  }|dk(  rt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | ||z  «      d| fvrt        d«      ‚t        | ||| t        || «      z
  «      d   dk(  S )	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ˆa�‰cƒ{˜1˜a˜&Ñ ÜÐDÓEÐEÜ˜1˜a  A¬¨q°!«Ñ$4Ó5°aÑ8¸AÑ=Ð=r   c                 óê   — t        ddd«      D ]Y  }|dz  r| }t        || «      }|dk(  rt        | dd|z
  dz  | dz   «      d   dk(  c S |dk(  r|| z  r y|d	k(  sŒMt        | «      sŒY y t	        d
«      ‚)ad  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�a‹LˆØ�Š7Ü" 1 a¨!¨A©#°!©°Q¸±UÓ;¸AÑ>À!ÑCÒCØ�Š6�a˜!’eÙà�‹7”y •|Ùð $ô ÐTÓ
UÐUr   c                 ó^   — | dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | «      S )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                 ó   — |dz  d|z  z
  }|dk(  rt        d«      ‚| dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | ||z  «      d| fvrt        d«      ‚t        || «      }t        | |z
  «      }t	        | ||| |z
  |z	  «      \  }}}|dk(  s|dk(  ry	t        |dz
  «      D ]$  }	||z  d|z  z
  | z  }|dk(  r y	t        |d| «      }Œ& y)
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ˆa�‰cƒ{˜1˜a˜&Ñ ÜÐKÓLÐLÜˆq�!‹€AÜ�!�a‘%Ó€AÜ˜q ! Q¨¨Q©°1©Ó5�H€A€qˆ"ØˆA‚v��a’ØÜ�1�q‘5Ž\ˆØˆq‰S�1�R‘4‰Z˜1ÑˆØ�Š6ÙÜ��Q˜‹]‰ð	 ð
 r   c                 óŒ  — t        ddd«      D ]ª  }|dz  r| }t        || «      }|dk(  rpt        | dz   «      }t        | dd|z
  dz  | dz   |z	  «      \  }}}|dk(  s|dk(  r yt        |dz
  «      D ]%  }||z  d|z  z
  | z  }|dk(  r  yt	        |d| «      }Œ'  y	|dk(  r|| z  r y	|d
k(  sŒžt        | «      sŒª y	 t        d«      ‚)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�a‹LˆØ�Š7Ü˜!˜a™%Ó ˆAÜ& q¨!¨a°©c°a©Z¸!¸a¹%ÀA¹ÓF‰HˆAˆq�"Ø�AŠv˜˜ašÙÜ˜1˜q™5–\�Ø�q‘S˜1˜R™4‘Z 1Ñ$�Ø˜’6ÚÜ˜˜Q “]‘ð	 "ñ
 Ø�Š6�a˜!’eÙà�‹7”y •|Ùð' $ô( Ð[Ó
\Ð\r   c                 ó^   — | dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | «      S )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                 óz   — | dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | d«      xr t        | «      S )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                 óz   — | dk  rt        d«      ‚| dk(  ry| dz  dk(  r| dk(  S t        | d«      xr t        | «      S )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   