ó
    Š*£hš  ã                  óœ   • % S r SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  \ " S
 S\\5      5       r0 rS\S'   S rg)z1Implementation of :class:`ModularInteger` class. é    )Úannotations)ÚAnyN)ÚPicklableWithSlots)ÚCoercionFailed)ÚDomainElement)Úpublic)Úsympy_deprecation_warningc                  ó  • \ rS rSrSrSu  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 5       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$ 5       r*S% r+Sr,g&)'ÚModularIntegeré   z(A class representing a modular integer. )NNNN)Úvalc                ó   • U R                   $ ©N)Ú_parent©Úselfs    Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/domains/modularinteger.pyÚparentÚModularInteger.parent   s   € Ø�|‰|Ðó    c                óÐ   • [        XR                  5      (       a  UR                  U R                  -  U l        g U R                  R                  U5      U R                  -  U l        g r   )Ú
isinstanceÚ	__class__r   ÚmodÚdomÚconvert)r   r   s     r   Ú__init__ÚModularInteger.__init__   sD   € Ü�cŸ>™>×*Ñ*Ø—w‘w §¡Ñ)ˆD�Hà—x‘x×'Ñ'¨Ó,¨t¯x©xÑ7ˆD�Hr   c                ó   • U R                   $ r   )r   r   s    r   ÚmodulusÚModularInteger.modulus    s   € Ø�x‰xˆr   c                óD   • [        U R                  U R                  45      $ r   )Úhashr   r   r   s    r   Ú__hash__ÚModularInteger.__hash__#   s   € Ü�T—X‘X˜tŸx™xÐ(Ó)Ð)r   c                óR   • U R                   R                  < SU R                  < S3$ )NÚ(Ú))r   Ú__name__r   r   s    r   Ú__repr__ÚModularInteger.__repr__&   s   € ØŸ>™>×2Ô2°D·H´HÐ=Ð=r   c                ó<   • U R                   < SU R                  < 3$ )Nz mod )r   r   r   s    r   Ú__str__ÚModularInteger.__str__)   s   € Ø"Ÿhœh¨¯«Ð1Ð1r   c                ó,   • [        U R                  5      $ r   )Úintr   r   s    r   Ú__int__ÚModularInteger.__int__,   s   € Ü�4—8‘8‹}Ðr   c                óÖ   • [        SSSS9  U R                  (       aB  U R                  U R                  S-  ::  a  U R                  $ U R                  U R                  -
  $ U R                  $ )NzModularInteger.to_int() is deprecated.

            Use int(a) or K = GF(p) and K.to_int(a) instead of a.to_int().
            ú1.13zmodularinteger-to-int)Údeprecated_since_versionÚactive_deprecations_targeté   )r	   Úsymr   r   r   s    r   Úto_intÚModularInteger.to_int/   sY   € ä!ðð &,Ø'>ò	
ð �8�8Ø�x‰x˜4Ÿ8™8 q™=Ó(Ø—x‘x�à—x‘x $§(¡(Ñ*Ð*à—8‘8ˆOr   c                ó   • U $ r   © r   s    r   Ú__pos__ÚModularInteger.__pos__B   s   € Øˆr   c                ó:   • U R                  U R                  * 5      $ r   )r   r   r   s    r   Ú__neg__ÚModularInteger.__neg__E   s   € Ø�~‰~˜tŸx™x˜iÓ(Ð(r   c                ó’   • [        X5      (       a  UR                  $  U R                  R                  U5      $ ! [         a     g f = fr   )r   r   r   r   r   )ÚclsÚothers     r   Ú_get_valÚModularInteger._get_valH   sA   € ä�e×!Ñ!Ø—9‘9ÐðØ—w‘w—‘ uÓ-Ð-øÜ!ó Ùðús   ž9 ¹
AÁAc                ór   • U R                  U5      nUb  U R                  U R                  U-   5      $ [        $ r   ©rE   r   r   ÚNotImplemented©r   rD   r   s      r   Ú__add__ÚModularInteger.__add__R   ó2   € Ø�m‰m˜EÓ"ˆà‰?Ø—>‘> $§(¡(¨S¡.Ó1Ð1ä!Ð!r   c                ó$   • U R                  U5      $ r   ©rK   ©r   rD   s     r   Ú__radd__ÚModularInteger.__radd__Z   ó   € Ø�|‰|˜EÓ"Ð"r   c                ór   • U R                  U5      nUb  U R                  U R                  U-
  5      $ [        $ r   rH   rJ   s      r   Ú__sub__ÚModularInteger.__sub__]   rM   r   c                ó&   • U * R                  U5      $ r   rO   rP   s     r   Ú__rsub__ÚModularInteger.__rsub__e   s   € Ø��‰˜uÓ%Ð%r   c                ór   • U R                  U5      nUb  U R                  U R                  U-  5      $ [        $ r   rH   rJ   s      r   Ú__mul__ÚModularInteger.__mul__h   rM   r   c                ó$   • U R                  U5      $ r   )r[   rP   s     r   Ú__rmul__ÚModularInteger.__rmul__p   rS   r   c                ó�   • U R                  U5      nUb-  U R                  U R                  U R                  U5      -  5      $ [        $ r   )rE   r   r   Ú_invertrI   rJ   s      r   Ú__truediv__ÚModularInteger.__truediv__s   s<   € Ø�m‰m˜EÓ"ˆà‰?Ø—>‘> $§(¡(¨T¯\©\¸#Ó->Ñ">Ó?Ð?ä!Ð!r   c                ó@   • U R                  5       R                  U5      $ r   )Úinvertr[   rP   s     r   Ú__rtruediv__ÚModularInteger.__rtruediv__{   s   € Ø�{‰{‹}×$Ñ$ UÓ+Ð+r   c                ór   • U R                  U5      nUb  U R                  U R                  U-  5      $ [        $ r   rH   rJ   s      r   Ú__mod__ÚModularInteger.__mod__~   rM   r   c                óp   • U R                  U5      nUb  U R                  X R                  -  5      $ [        $ r   rH   rJ   s      r   Ú__rmod__ÚModularInteger.__rmod__†   s0   € Ø�m‰m˜EÓ"ˆà‰?Ø—>‘> #¯©¡.Ó1Ð1ä!Ð!r   c                ó  • U(       d%  U R                  U R                  R                  5      $ US:  a  U R                  5       R                  U* pOU R                  nU R                  [        U[        U5      U R                  5      5      $ )Nr   )r   r   Úonere   r   Úpowr0   r   )r   Úexpr   s      r   Ú__pow__ÚModularInteger.__pow__Ž   sa   € ÞØ—>‘> $§(¡(§,¡,Ó/Ð/à�‹7Ø—{‘{“}×(Ñ(¨3¨$‘à—(‘(ˆCà�~‰~œc #¤s¨3£x°·±Ó:Ó;Ð;r   c                ót   • U R                  U5      nUc  [        $ U" U R                  X0R                  -  5      $ r   )rE   rI   r   r   ©r   rD   Úopr   s       r   Ú_compareÚModularInteger._compare™   s2   € Ø�m‰m˜EÓ"ˆà‰;Ü!Ð!á�$—(‘(˜C§(¡(™NÓ+Ð+r   c                óŒ   • U R                  U5      nUc  [        $ [        SSSSS9  U" U R                  X0R                  -  5      $ )Nz~Ordered comparisons with modular integers are deprecated.

            Use e.g. int(a) < int(b) instead of a < b.
            r4   zmodularinteger-compareé   )r5   r6   Ú
stacklevel)rE   rI   r	   r   r   ru   s       r   Ú_compare_deprecatedÚ"ModularInteger._compare_deprecated¡   sL   € Ø�m‰m˜EÓ"ˆà‰;Ü!Ð!ä!ðð &,Ø'?Øò	
ñ �$—(‘(˜C§(¡(™NÓ+Ð+r   c                óB   • U R                  U[        R                  5      $ r   )rw   ÚoperatorÚeqrP   s     r   Ú__eq__ÚModularInteger.__eq__³   ó   € Ø�}‰}˜U¤H§K¡KÓ0Ð0r   c                óB   • U R                  U[        R                  5      $ r   )rw   r   ÚnerP   s     r   Ú__ne__ÚModularInteger.__ne__¶   rƒ   r   c                óB   • U R                  U[        R                  5      $ r   )r|   r   ÚltrP   s     r   Ú__lt__ÚModularInteger.__lt__¹   ó   € Ø×'Ñ'¨¬x¯{©{Ó;Ð;r   c                óB   • U R                  U[        R                  5      $ r   )r|   r   ÚlerP   s     r   Ú__le__ÚModularInteger.__le__¼   rŒ   r   c                óB   • U R                  U[        R                  5      $ r   )r|   r   ÚgtrP   s     r   Ú__gt__ÚModularInteger.__gt__¿   rŒ   r   c                óB   • U R                  U[        R                  5      $ r   )r|   r   ÚgerP   s     r   Ú__ge__ÚModularInteger.__ge__Â   rŒ   r   c                ó,   • [        U R                  5      $ r   )Úboolr   r   s    r   Ú__bool__ÚModularInteger.__bool__Å   s   € Ü�D—H‘H‹~Ðr   c                óL   • U R                   R                  XR                  5      $ r   )r   re   r   )rC   Úvalues     r   ra   ÚModularInteger._invertÈ   s   € à�w‰w�~‰~˜e§W¡WÓ-Ð-r   c                óV   • U R                  U R                  U R                  5      5      $ r   )r   ra   r   r   s    r   re   ÚModularInteger.invertÌ   s   € Ø�~‰~˜dŸl™l¨4¯8©8Ó4Ó5Ð5r   N)-r)   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r8   r   Ú	__slots__r   r   r    r$   r*   r-   r1   r9   r=   r@   ÚclassmethodrE   rK   rQ   rU   rX   r[   r^   rb   rf   ri   rl   rr   rw   r|   r�   r†   rŠ   r�   r“   r—   r›   ra   re   Ú__static_attributes__r<   r   r   r   r      sÛ   † á2à3Ñ€Cˆˆc�7à€Iòò8òò*ò>ò2òòò&ò)ð ñó ðò"ò#ò"ò&ò"ò#ò"ò,ò"ò"ò	<ò,ò,ò$1ò1ò<ò<ò<ò<òð ñ.ó ð.õ6r   r   z0dict[tuple[Any, Any, Any], type[ModularInteger]]Ú_modular_integer_cachec                óD  ^ ^^^•  TR                  T 5      m SnU(       a  T S:  a  [        ST -  5      eT TT4n [        U   nU$ ! [         a    Sn N:f = f! [         a>     " UU UU4S jS[
        5      nT(       a  ST -  Ul        O
ST -  Ul        U[        U'    U$ f = f)	z1Create custom class for specific integer modulus.TFé   z*modulus must be a positive integer, got %sc                  ó0   >• \ rS rSr Y Y  Ysrrr YrSrg)Ú"ModularIntegerFactory.<locals>.clséâ   r<   N)	r)   r¢   r£   r¤   r   r   r8   r   r¨   )Ú_domÚ_modÚ_symr   s   €€€€r   rC   r­   â   s   ø† Ù ¡$©ˆMˆC��cÙ‹Gr   rC   zSymmetricModularIntegerMod%szModularIntegerMod%s)r   r   Ú
ValueErrorr©   ÚKeyErrorr   r)   )r°   r¯   r±   r   ÚokÚkeyrC   s   ````   r   ÚModularIntegerFactoryr¶   Ñ   s½   û€ ðØ�|‰|˜DÓ!ˆð ˆæ�˜“ÜÐEÈÑLÓMÐMà
��dÐ
€Cð*Ü$ SÑ)ˆð €Jøô1 ó ØŠðûô ó 
*÷	ò 	”.ô 	ö Ø9¸DÑ@ˆC�Là0°4Ñ7ˆCŒLà&)Ô˜sÒ#à€Jð
*ús#   †A º	A ÁAÁAÁABÂB)r¥   Ú
__future__r   Útypingr   r   Úsympy.polys.polyutilsr   Úsympy.polys.polyerrorsr   Ú!sympy.polys.domains.domainelementr   Úsympy.utilitiesr   Úsympy.utilities.exceptionsr	   r   r©   Ú__annotations__r¶   r<   r   r   Ú<module>r¿      sU   ðÚ 7å "Ý ã å 4Ý 1Ý ;å "Ý @àô}6Ð'¨ó }6ó ð}6ð~ LNÐ ÐHÓ Mór   