§
    ]²Åjc  ã                   ó¤  — d Z ddlmZmZ ddlmZmZmZmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZmZm Z m!Z! d
„ Z" ej#        e¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej#        e	¦  «        d„ ¦   «         Z$ ej#        e
¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej%        eeee¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$ ej#        e¦  «        d„ ¦   «         Z$d„ Z& e j#        e¦  «        d„ ¦   «         Z$ e j#        e¦  «        d„ ¦   «         Z$ e j#        e	¦  «        d„ ¦   «         Z$ e j#        e¦  «        d„ ¦   «         Z$ e j#        e
¦  «        d„ ¦   «         Z$ e j#        e¦  «        d„ ¦   «         Z$ e j%        eeee¦  «        d„ ¦   «         Z$ e j#        e¦  «        d„ ¦   «         Z$ e j#        e¦  «        d„ ¦   «         Z$ e j#        e¦  «        d „ ¦   «         Z$ e j#        e¦  «        d!„ ¦   «         Z$ e j#        e¦  «        d"„ ¦   «         Z$ e!j#        e¦  «        d#„ ¦   «         Z$ e!j#        e¦  «        d$„ ¦   «         Z$d%S )&zD
Handlers for keys related to number theory: prime, even, odd, etc.
é    )ÚQÚask)ÚAddÚBasicÚExprÚFloatÚMulÚPowÚS)ÚImaginaryUnitÚInfinityÚIntegerÚNaNÚNegativeInfinityÚNumberSymbolÚRationalÚ
int_valued)ÚAbsÚimÚre©Úisprime)ÚMDNotImplementedErroré   )ÚPrimePredicateÚCompositePredicateÚEvenPredicateÚOddPredicatec                 ó  — |                       t          ¦  «         }	 t          |                      ¦   «         ¦  «        }| |z
                       d¦  «        du rt
          ‚n# t
          $ r Y dS w xY w|rt          |¦  «        S d S )Nr   F)Úatomsr   ÚintÚroundÚequalsÚ	TypeErrorr   )ÚexprÚassumptionsÚexactÚis       úSC:\Projects\Historical\venv\Lib\site-packages\sympy/assumptions/handlers/ntheory.pyÚ_PrimePredicate_numberr*      s—   € à—
’
�5Ñ!Ô!Ð!€EðÝ�—
’
‘”ÑÔˆØ�1‰H×Ò˜QÑÔ 5Ð(Ð(ÝˆOð )øåð ð ð Øˆuˆuðøøøàð Ý�q‰zŒzÐðð s   �AA  Á 
A.Á-A.c                 ó&   — | j         }|€t          ‚|S ©N)Úis_primer   ©r%   r&   Úrets      r)   Ú_r0   "   s   € à
Œ-€CØ
€{Ý#Ð#Ø€Jó    c                 ó4   — | j         rt          | |¦  «        S d S r,   )Ú	is_numberr*   ©r%   r&   s     r)   r0   r0   )   s&   € à„~ð 9Ý% d¨KÑ8Ô8Ð8ð9ð 9r1   c                 óÈ   — | j         rt          | |¦  «        S | j        D ]'}t          t	          j        |¦  «        |¦  «        s d S Œ(| j        D ]}|j         r
|j        r dS Œd S ©NF)r3   r*   Úargsr   r   ÚintegerÚis_composite)r%   r&   Úargs      r)   r0   r0   .   sŠ   € à„~ð 9Ý% d¨KÑ8Ô8Ð8ØŒyð ð ˆÝ•1”9˜S‘>”> ;Ñ/Ô/ð 	Ø�4�4ð	àŒyð ð ˆØŒ=ð 	˜SÔ-ð 	Ø�5�5øðð r1   c                 óØ   — | j         rt          | |¦  «        S t          t          j        | j        ¦  «        |¦  «        r)t          t          j        | j        ¦  «        |¦  «        rdS dS dS )z(
    Integer**Integer     -> !Prime
    FN)r3   r*   r   r   r8   ÚexpÚbaser4   s     r)   r0   r0   9   ss   € ð
 „~ð 9Ý% d¨KÑ8Ô8Ð8Ý
�1Œ9�T”XÑÔ Ñ,Ô,ð Ý•”	˜$œ)Ñ$Ô$ kÑ2Ô2ðàˆuðð ð ð r1   c                 ó    — t          | ¦  «        S r,   r   r4   s     r)   r0   r0   D   s   € å�4‰=Œ=Ðr1   c                 ó   — dS r6   © r4   s     r)   r0   r0   H   ó   € àˆ5r1   c                 ó"   — t          | |¦  «        S r,   ©r*   r4   s     r)   r0   r0   L   ó   € å! $¨Ñ4Ô4Ð4r1   c                 ó"   — t          | |¦  «        S r,   rC   r4   s     r)   r0   r0   P   rD   r1   c                 ó   — d S r,   r@   r4   s     r)   r0   r0   T   ó   € àˆ4r1   c                 ó&   — | j         }|€t          ‚|S r,   )r9   r   r.   s      r)   r0   r0   [   s   € à
Ô
€CØ
€{Ý#Ð#Ø€Jr1   c                 ó  — t          t          j        | ¦  «        |¦  «        }|rft          t          j        | ¦  «        |¦  «        }|r@t          t          j        | ¦  «        |¦  «        }|€d S |                      d¦  «        rdS | S |S |S )Né   F)r   r   Úpositiver8   Úprimer#   )r%   r&   Ú	_positiveÚ_integerÚ_primes        r)   r0   r0   b   s�   € å•A”J˜tÑ$Ô$ kÑ2Ô2€IØð Ý•q”y ‘”¨Ñ4Ô4ˆØð 
	Ý�œ ™œ¨Ñ4Ô4ˆFØˆ~Ø�ð �{Š{˜1‰~Œ~ð Ø�uØ�:ÐàˆOàÐr1   c                 ó  — t          | t          t          f¦  «        rt          | ¦  «        rd S dS 	 t	          |                      ¦   «         ¦  «        }n# t          $ r Y dS w xY w| |z
                       d¦  «        sdS |dz  dk    S )NFr   r   )Ú
isinstanceÚfloatr   r   r!   r"   r$   r#   )r%   r&   r(   s      r)   Ú_EvenPredicate_numberrS   x   s�   € å�$�¥˜Ñ'Ô'ð Ý�dÑÔð 	Ø�4ØˆuðÝ�—
’
‘”ÑÔˆˆøÝð ð ð Øˆuˆuðøøøà�1‰H×Ò˜QÑÔð ØˆuØˆq‰5�AŠ:Ðs   ±!A Á
A!Á A!c                 ó&   — | j         }|€t          ‚|S r,   )Úis_evenr   r.   s      r)   r0   r0   †   s   € à
Œ,€CØ
€{Ý#Ð#Ø€Jr1   c                 ó4   — | j         rt          | |¦  «        S d S r,   )r3   rS   r4   s     r)   r0   r0   �   s&   € à„~ð 8Ý$ T¨;Ñ7Ô7Ð7ð8ð 8r1   c                 ó6  — | j         rt          | |¦  «        S d\  }}}}| j        D ]Ð}t          t	          j        |¦  «        |¦  «        r}t          t	          j        |¦  «        |¦  «        rd}n…t          t	          j        |¦  «        |¦  «        r|dz  }n]|s-|dk    r't          t	          j        ||z   ¦  «        |¦  «        rd}n-t          t	          j        |¦  «        |¦  «        r|r dS d}n dS |}ŒÑ|rdS |rdS |t          | j        ¦  «        k    rdS dS )zë
    Even * Integer    -> Even
    Even * Odd        -> Even
    Integer * Odd     -> ?
    Odd * Odd         -> Odd
    Even * Even       -> Even
    Integer * Integer -> Even if Integer + Integer = Odd
    otherwise         -> ?
    )Fr   FrJ   TrJ   FN)
r3   rS   r7   r   r   r8   ÚevenÚoddÚ
irrationalÚlen)r%   r&   rX   rY   rZ   Úaccr:   s          r)   r0   r0   ’   sO  € ð „~ð 8Ý$ T¨;Ñ7Ô7Ð7Ø!3Ñ€Dˆ#ˆz˜3ØŒyð ð ˆå�qŒy˜‰~Œ~˜{Ñ+Ô+ð 	Ý•1”6˜#‘;”; Ñ,Ô,ð  Ø��Ý•Q”U˜3‘Z”Z Ñ-Ô-ð  Ø�q‘��Øð  ˜c Qšh˜hÝ•q”u˜S 3™YÑ'Ô'¨Ñ5Ô5ð  Ø�DøÝ•”˜cÑ"Ô" KÑ0Ô0ð 	ð ð Ø��ØˆJˆJàˆEˆEØˆˆàð 	Ø�5Øð 	Ø�4Ø•#�d”i‘.”.Ò Ð Ø�5ð !Ð r1   c                 óâ   — | j         rt          | |¦  «        S d}| j        D ]M}t          t	          j        |¦  «        |¦  «        rŒ%t          t	          j        |¦  «        |¦  «        r| }ŒK dS |S )zM
    Even + Odd  -> Odd
    Even + Even -> Even
    Odd  + Odd  -> Even

    TN)r3   rS   r7   r   r   rX   rY   )r%   r&   Ú_resultr:   s       r)   r0   r0   »   s€   € ð „~ð 8Ý$ T¨;Ñ7Ô7Ð7Ø€GØŒyð ð ˆÝ�qŒv�c‰{Œ{˜KÑ(Ô(ð 	ØÝ•”�s‘”˜[Ñ)Ô)ð 	Ø!�kˆGˆGàˆEˆEàˆr1   c                 óÔ  — | j         rt          | |¦  «        S t          t          j        | j        ¦  «        |¦  «        r§t          t          j        | j        ¦  «        |¦  «        r't          t          j        | j        ¦  «        |¦  «        S t          t          j	        | j        ¦  «         t          j
        | j        ¦  «        z  |¦  «        rdS | j        t          j        u rdS d S d S r6   )r3   rS   r   r   r8   r<   rK   rX   r=   ÚnegativerY   r   ÚNegativeOner4   s     r)   r0   r0   Ð   sÑ   € à„~ð 8Ý$ T¨;Ñ7Ô7Ð7Ý
�1Œ9�T”XÑÔ Ñ,Ô,ð Ý�qŒz˜$œ(Ñ#Ô# [Ñ1Ô1ð 	Ý•q”v˜dœiÑ(Ô(¨+Ñ6Ô6Ð6Ý•!”*˜TœXÑ&Ô&Ð&­¬¨t¬yÑ)9Ô)9Ñ9¸;ÑGÔGð 	Ø�5ØŒY�!œ-Ð'Ð'Ø�5ðð ð
 (Ð'r1   c                 ó2   — t          | j        dz  ¦  «         S )NrJ   )ÚboolÚpr4   s     r)   r0   r0   Ü   s   € å�D”F˜Q‘JÑÔÐÐr1   c                 ó   — dS r6   r@   r4   s     r)   r0   r0   à   rA   r1   c                 ó"   — t          | |¦  «        S r,   )rS   r4   s     r)   r0   r0   ä   s   € å   {Ñ3Ô3Ð3r1   c                 óº   — t          t          j        | j        d         ¦  «        |¦  «        r-t          t          j        | j        d         ¦  «        |¦  «        S d S ©Nr   ©r   r   Úrealr7   rX   r4   s     r)   r0   r0   è   óN   € å
�1Œ6�$”)˜A”,ÑÔ Ñ-Ô-ð 6Ý•1”6˜$œ) Aœ,Ñ'Ô'¨Ñ5Ô5Ð5ð6ð 6r1   c                 óº   — t          t          j        | j        d         ¦  «        |¦  «        r-t          t          j        | j        d         ¦  «        |¦  «        S d S rh   ri   r4   s     r)   r0   r0   í   rk   r1   c                 ód   — t          t          j        | j        d         ¦  «        |¦  «        rdS d S )Nr   T)r   r   rj   r7   r4   s     r)   r0   r0   ò   s3   € å
�1Œ6�$”)˜A”,ÑÔ Ñ-Ô-ð Øˆtðð r1   c                 ó   — d S r,   r@   r4   s     r)   r0   r0   ÷   rG   r1   c                 ó&   — | j         }|€t          ‚|S r,   )Úis_oddr   r.   s      r)   r0   r0   þ   s   € à
Œ+€CØ
€{Ý#Ð#Ø€Jr1   c                 ó    — t          t          j        | ¦  «        |¦  «        }|r)t          t          j        | ¦  «        |¦  «        }|€d S | S |S r,   )r   r   r8   rX   )r%   r&   rN   Ú_evens       r)   r0   r0     sO   € å•1”9˜T‘?”? KÑ0Ô0€HØð Ý•A”F˜4‘L”L +Ñ.Ô.ˆØˆ=Ø�4ØˆyÐØ€Or1   N)'Ú__doc__Úsympy.assumptionsr   r   Ú
sympy.corer   r   r   r   r	   r
   r   Úsympy.core.numbersr   r   r   r   r   r   r   r   Úsympy.functionsr   r   r   Úsympy.ntheoryr   Úsympy.multipledispatchr   Úpredicates.ntheoryr   r   r   r   r*   Úregisterr0   Úregister_manyrS   r@   r1   r)   ú<module>r}      s}  ððð ð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ð:ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø !Ð !Ð !Ð !Ð !Ð !à 8Ð 8Ð 8Ð 8Ð 8Ð 8ð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð
ð 
ð 
ð €Ô˜ÑÔðð ñ Ôðð €Ô˜ÑÔð9ð 9ñ  Ôð9ð €Ô˜ÑÔðð ñ Ôðð €Ô˜ÑÔðð ñ Ôðð €Ô˜Ñ!Ô!ðð ñ "Ô!ðð €Ô˜h¨Ð2BÀMÑRÔRðð ñ SÔRðð €Ô˜ÑÔð5ð 5ñ  Ôð5ð €Ô˜Ñ&Ô&ð5ð 5ñ 'Ô&ð5ð €Ô˜ÑÔðð ñ Ôðð ÐÔ˜TÑ"Ô"ðð ñ #Ô"ðð ÐÔ˜UÑ#Ô#ðð ñ $Ô#ðð*ð ð ð €Ô˜ÑÔðð ñ Ôðð €Ô˜ÑÔð8ð 8ñ Ôð8ð €Ô˜ÑÔð&ð &ñ Ôð&ðP €Ô˜ÑÔðð ñ Ôðð( €Ô˜ÑÔð	ð 	ñ Ôð	ð €Ô˜Ñ Ô ð ð  ñ !Ô ð ð €Ô˜X xÐ1AÀ=ÑQÔQðð ñ RÔQðð €Ô˜Ñ%Ô%ð4ð 4ñ &Ô%ð4ð €Ô˜ÑÔð6ð 6ñ Ôð6ð €Ô˜ÑÔð6ð 6ñ Ôð6ð €Ô˜ÑÔðð ñ Ôðð €Ô˜ÑÔðð ñ Ôðð €Ô�tÑÔðð ñ Ôðð €Ô�uÑÔðð ñ Ôðð ð r1   