+
    ‹°³j«   ã                   ó˜   € ^RI Ht ^RIHt ^RIHt ^RIHt ^RIH	t	H
t
 ^RIHt ^RIHt ^RIHtHtHtHt ^R	IHt  ! R
 R]4      tR# )é   )ÚAdd)Ú	gcd_terms)ÚDefinedFunction)Ú
NumberKind)Ú	fuzzy_andÚ	fuzzy_not)ÚMul)Úequal_valued)Úis_leÚis_ltÚis_geÚis_gt)ÚSc                   ó`   a € ] tR t^t o Rt]t]R 4       tR t	R t
R tR tR tRR ltR	tV tR
# )ÚModaù  Represents a modulo operation on symbolic expressions.

Parameters
==========

p : Expr
    Dividend.

q : Expr
    Divisor.

Notes
=====

The convention used is the same as Python's: the remainder always has the
same sign as the divisor.

Many objects can be evaluated modulo ``n`` much faster than they can be
evaluated directly (or at all).  For this, ``evaluate=False`` is
necessary to prevent eager evaluation:

>>> from sympy import binomial, factorial, Mod, Pow
>>> Mod(Pow(2, 10**16, evaluate=False), 97)
61
>>> Mod(factorial(10**9, evaluate=False), 10**9 + 9)
712524808
>>> Mod(binomial(10**18, 10**12, evaluate=False), (10**5 + 3)**2)
3744312326

Examples
========

>>> from sympy.abc import x, y
>>> x**2 % y
Mod(x**2, y)
>>> _.subs({x: 5, y: 6})
1

c           	     óV  a€ R  pV! VS4      pVe   V# \        W4      '       d`   VP                  ^,          pVS,          ^ 8X  d   V ! VP                  ^ ,          S4      # VSV,
          ,          P                  '       d   V# EM\        V) V 4      '       dc   V) P                  ^,          pVS,          ^ 8X  d   V ! V) P                  ^ ,          ) S4      # VSV,           ,          P                  '       d   V# EM™\        V\        4      '       dÇ   . . 3;pw  rxVP                   F$  p	V\        W�4      ,          P                  V	4       K&  	  V'       d�   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       dA   \	        V!  \	        V U
u. uF  qªP                  ^ ,          NK  	  up
!  ,           pV ! VS4      # EM½\        V\        4      '       Ed§   . . 3;pw  rxVP                   F$  p	V\        W�4      ,          P                  V	4       K&  	  V'       Ed`   \        ;QJ d    V3R lV 4       F  '       d   K   RM	  RM! V3R lV 4       4      '       Ed   \        ;QJ d&    R VP                   4       F  '       d   K   RM	  RM! R VP                   4       4      '       dÑ   SP                  '       d¿   V Uu. uF  qÀ! VS4      NK  	  pp. p. pV FI  p\        Wð4      '       d%   VP                  VP                  ^ ,          4       K8  VP                  V4       KK  	  \        V!  p\        V!  p\        V U
u. uF  qªP                  ^ ,          NK  	  up
!  pVV,          pVV ! VS4      ,          # SP                  '       dâ   S\        P                  JdÎ   \        ;QJ d&    R VP                   4       F  '       d   K   RM	  RM! R VP                   4       4      '       d€   VP                   U
u. uF  qªP                  '       d
   V
S,          MT
NK!  	  pp
\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        P                  # \        Wx,           !  p^ RIHp ^ R	IHp  V! VS4      p\%        V^4      '       g+   VS3 U
u. uF  p
\'        V
V,          RRR
7      NK  	  up
w  poTSppTP(                  '       dŒ   . pTP                   FU  p
T ! T
S4      pTP+                  T 4      T
P+                  T 4      8”  d   TP                  T
4       KD  TP                  T4       KW  	  T\-        TP                  4      8w  d
   \	        T!  pM¥TP/                  4       w  ppSP/                  4       w  poRpTP0                  '       d   TP0                  '       g@   TT,          p\%        T^ 4      '       d%   TT,          pT\3        TT,          4      ,          pRpT'       g   TT,          pTS,          oTP5                  4       '       d0   SP5                  4       '       d   TTS3 U
u. uF  qª) NK  	  up
w  ppoT! TS4      pTe
   TT,          # TP6                  '       d'   \%        T^4      '       d   TT,          pT ! TSRR7      # TP8                  '       dˆ   TP                  ^ ,          P6                  '       de   \%        TP                  ^ ,          ^4      '       dB   TP                  ^ ,          T,          p\        P:                  ! TP                  R,          4      pTT ! TSTS3TT38g  R7      ,          # u up
i u upi u up
i u up
i u up
i   T d    \        P                  p EL¾i ; iu up
i )c                óð  € VP                   '       d   \        R4      hV \        P                  J g5   V\        P                  J g!   V P                  RJ g   VP                  RJ d   \        P                  # V \        P
                  J g#   WV) 39   g   V P                  '       d   V^8X  d   \        P
                  # VP                  '       df   V P                  '       d	   W,          # V^8X  dE   V P                  '       d   \        P
                  # V P                  '       d   \        P                  # \        V R4      '       d   \        V R4      ! V4      pVe   V# W,          pVP                  '       d   \        P
                  #  \        V4      p\        V\        4      '       d*   WV,          ,
          pW!,          ^ 8  R8X  d	   W!,          pV#  VP                   '       d   \"        \$        reM VP&                  '       d   \(        \*        reMR# RV,          pW,
          p\-        ^4       F4  pV! Wp4      '       g    R# V! W74      '       d   W,
          u # Wq,          pK6  	  R#   \         d     L¡i ; i)zUTry to return p % q if both are numbers or +/-p is known
to be less than or equal q.
zModulo by zeroFÚ	_eval_ModNTéþÿÿÿ)Úis_zeroÚZeroDivisionErrorr   ÚNaNÚ	is_finiteÚZeroÚ
is_integerÚ	is_NumberÚis_evenÚis_oddÚOneÚhasattrÚgetattrÚintÚ
isinstanceÚ	TypeErrorÚis_positiver   r   Úis_negativer   r   Úrange)	ÚpÚqÚrvÚrÚdÚcomp1Úcomp2ÚlsÚ_s	   &&       ÚO/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/core/mod.pyÚnumber_evalÚMod.eval.<locals>.number_eval9   sÂ  € ð
 �y�yˆyÜ'Ð(8Ó9Ð9Ø”A—E‘E‹z˜Q¤!§%¡%›Z¨1¯;©;¸%Ó+?À1Ç;Á;ÐRWÓCWÜ—u‘u�Ø”A—F‘F‹{˜a¨ r 7œl¨q¯|¯|¨|ÀÀQÄÜ—v‘v�à�{�{ˆ{Ø—;—;�;Ø�3�JØ˜”6Ø—y—y�yÜ Ÿv™v˜ØŸŸ˜Ü Ÿu™u˜ä�q˜+×&Ò&Ü˜Q Ô,¨QÓ/�Ø’>Ø�Ið •ˆAØ�|�|ˆ|Ü—v‘v�ð	Ü˜“F�ô ˜a¤×%Ò%Ø˜q�S��BØ�˜q™ TÔ)Ø�˜Ø�Ið	 &ð �}�}ˆ}Ü$¤e‘uØ——�Ü$¤e‘uáØ�A•ˆBØ•ˆAÜ˜1–X�Ù˜R—|’|ÚÙ˜—<’<Ø�6’MØ•’ó øô' ô Ùðús   ÆI' É'I5É4I5c              3   óN   <"  € T F  qP                   ^,          S8H  x € K  	  R# 5i©r   N©Úargs©Ú.0Úinnerr)   s   & €r1   Ú	<genexpr>ÚMod.eval.<locals>.<genexpr>Œ   ó   øé € ÐC¹U°EŸZ™Z¨�]¨aÖ/»Uùó   ƒ"%FTc              3   óN   <"  € T F  qP                   ^,          S8H  x € K  	  R# 5ir5   r6   r8   s   & €r1   r;   r<   –   r=   r>   c              3   ó8   "  € T F  qP                   x € K  	  R # 5i©N©r   ©r9   Úts   & r1   r;   r<   –   s   é € ÐKiÑbhÐ]^ÏLÎLÓbhùó   ‚c              3   ó8   "  € T F  qP                   x € K  	  R # 5irA   rB   rC   s   & r1   r;   r<   §   s   é € Ð4©V¨—|–|«VùrE   c              3   óD   "  € T F  q\         P                  J x € K  	  R # 5irA   )r   r   )r9   Úiqs   & r1   r;   r<   ©   s   é € Ð<±)¨B¤§¡�<³)ùs   ‚ )ÚPolynomialError)Úgcd)ÚclearÚfraction)Úevaluate:r   NN)r#   r7   Úis_nonnegativeÚis_nonpositiver   ÚappendÚallr	   r   Ú
is_Integerr   r   Úanyr   Úsympy.polys.polyerrorsrI   Úsympy.polys.polytoolsrJ   r
   r   Úis_AddÚcountÚlistÚas_coeff_MulÚis_Rationalr"   Úcould_extract_minus_signÚis_FloatÚis_MulÚ
_from_args)Úclsr(   r)   r2   r*   ÚqinnerÚboth_lÚ	non_mod_lÚmod_lÚargÚiÚnetÚxÚmodÚnon_modÚjÚprod_modÚprod_non_modÚ	prod_mod1rI   rJ   ÚGÚpwasÚqwasr7   ÚaÚcpÚcqÚokr+   s   &&f                           r1   ÚevalÚMod.eval7   sù  ø€ ò8	ñt ˜˜AÓˆØŠ>ØˆIô �a×ÒØ—V‘V˜A•YˆFØ˜�z˜QŒÙ˜1Ÿ6™6 !�9 aÓ(Ð(Ø˜!˜f�*Õ%×5×5Ð5à�ñ 6ô ˜˜˜C× Ò Ø�b—Y‘Y˜q•\ˆFØ˜�z˜QŒÙ˜a˜RŸI™I a�L˜=¨!Ó,Ð,Ø˜!˜f�*Õ%×5×5Ð5à�ñ 6ô ˜œ3×Òà(*¨B¨Ð.ˆFÑ%�YØ—v”v�Ø”z #Ó+Õ,×3Ñ3°CÖ8ñ ÷ Ÿ›ÔC¹UÓCŸŸšÔC¹UÓC×CÒCÜ˜9‘o¬ÁÓ-GÁ¸A¯f©f°Q¯i¨iÁÑ-GÑ(HÕH�Ù˜3 “{Ð"ùä˜œ3×Óà(*¨B¨Ð.ˆFÑ%�YØ—v”v�Ø”z #Ó+Õ,×3Ñ3°CÖ8ñ ÷ ˆuŸ›ÔC¹UÓCŸŸšÔC¹UÓC×CÓCÏËÑKiÐbc×bhÒbhÓKiÏÏÊÑKiÐbc×bhÒbhÓKi×HiÒHiÐno×nz×nzÐnzá09Ó:±	¨1˜S  AžY±	�	Ð:Ø�Ø�Û"�AÜ! !×)Ò)ØŸ
™
 1§6¡6¨!¥9Ö-àŸ™ qÖ)ñ	 #ô
  ™9�Ü" G™}�Ü±UÓ!;±U°§&¡&¨§) )±UÑ!;Ñ<�	Ø Õ(�Ø#¡C¨¨Q£KÕ/Ð/à�|�|ˆ| ¬¯©£ß“3Ñ4¨Q¯VªVÓ4—3—3’3Ñ4¨Q¯VªVÓ4×4Ò4ØGHÇvÂvÓ NÁvÀ!¯,¯,¨,  Q¦¸AÒ!=Áv�IÐ Nß“sÑ<±)Ó<—s—s’sÑ<±)Ó<×<Ò<Ü Ÿv™v˜ä�iÕ'Ñ)ˆAõ 	;Ý-ð	Ù�A�q“	ˆAÜ  1×%Ò%à"# Q¡ó)Ù!'˜Aô " ! A¥#¨U¸U×CÙ!'ñ)‘��1ð ˜ˆdˆð �8�8ˆ8ØˆDØ—V”V�Ù˜˜1“I�Ø—7‘7˜3“< !§'¡'¨#£,Ô.Ø—K‘K –Nà—K‘K –Nñ ð ”t˜AŸF™F“|Ô#Ü˜‘J�øð —N‘NÓ$‰EˆB�Ø—N‘NÓ$‰EˆB�ØˆBØ—>—>�>¨¯¯¨Ø˜•G�Ü  1×%Ò%Ø˜•G�AØœ˜R �U›•O�AØ�BßØ�q•D�Ø�q•D�ð ×%Ñ%×'Ò'¨A×,FÑ,F×,HÒ,HØ$% q¨!¡9Ó-¡9˜a“r¡9Ñ-‰GˆAˆq�!ñ ˜˜AÓˆØŠ>Ø�a•4ˆKð �:�:ˆ:œ, q¨!×,Ò,Ø��FˆAÙ�q˜! eÔ,Ð,Ø�X�XˆX˜!Ÿ&™& �)×,×,Ð,´¸a¿f¹fÀQ½iÈ×1KÒ1KØ—‘�q•	˜!•ˆAÜ—’˜qŸv™v b�zÓ*ˆAØ‘�Q˜ Q¨ F¨t°T¨lÑ$:Ô;Õ;Ð;ùò} .Hùò ;ùò "<ùò !Oùò)øàô 	Ü—‘‹Að	üòH .sB   Æ$]/
Ë]4Í]9Ð%]>Ò!^ Ó ^Ó^ Ù^&Þ^ Þ^#Þ"^#c                óœ   € V P                   w  r\        VP                  VP                  \        VP                  4      .4      '       d   R # R# )TN)r7   r   r   r   r   )Úselfr(   r)   s   &  r1   Ú_eval_is_integerÚMod._eval_is_integerí   s9   € Ø�y‰y‰ˆÜ�a—l‘l A§L¡L´)¸A¿I¹IÓ2FÐG×HÒHÙñ Ió    c                óP   € V P                   ^,          P                  '       d   R# R# ©r   TN)r7   r%   ©rx   s   &r1   Ú_eval_is_nonnegativeÚMod._eval_is_nonnegativeò   ó   € Ø�9‰9�Q�<×#×#Ð#Ùñ $r{   c                óP   € V P                   ^,          P                  '       d   R# R# r}   )r7   r&   r~   s   &r1   Ú_eval_is_nonpositiveÚMod._eval_is_nonpositiveö   r�   r{   c                óD   € ^ RI Hp WV! W,          4      ,          ,
          # )é    ©Úfloor)Ú#sympy.functions.elementary.integersrˆ   )rx   rq   ÚbÚkwargsrˆ   s   &&&, r1   Ú_eval_rewrite_as_floorÚMod._eval_rewrite_as_floorú   s   € Ý=Ø‘U˜1�3“Z•<ÕÐr{   c                óR   € ^ RI Hp V P                  V4      P                  WVR7      # ©r†   r‡   )ÚlogxÚcdir)r‰   rˆ   ÚrewriteÚ_eval_as_leading_term)rx   rg   r�   r‘   rˆ   s   &&&& r1   r“   ÚMod._eval_as_leading_termþ   s$   € Ý=Ø�|‰|˜EÓ"×8Ñ8¸ÈDÐ8ÓQÐQr{   c                óR   € ^ RI Hp V P                  V4      P                  WW4R7      # r�   )r‰   rˆ   r’   Ú_eval_nseries)rx   rg   Únr�   r‘   rˆ   s   &&&&& r1   r–   ÚMod._eval_nseries  s$   € Ý=Ø�|‰|˜EÓ"×0Ñ0°¸DÐ0ÓLÐLr{   © N)r†   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚkindÚclassmethodru   ry   r   rƒ   rŒ   r“   r–   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r1   r   r      sM   ø‡ € ñ&ðP €Dàñs<ó ðs<òjò
òò òR÷Mò Mr{   r   N)Úaddr   Ú	exprtoolsr   Úfunctionr   rŸ   r   Úlogicr   r   Úmulr	   Únumbersr
   Ú
relationalr   r   r   r   Ú	singletonr   r   r™   r{   r1   Ú<module>r¬      s3   ðÝ Ý  Ý %Ý ß 'Ý Ý !ß 2Ó 2Ý ôxMˆ/ö xMr{   