Ë
    7^(hñd  ã                   ó  — d Z ddlmZmZ ddl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mZmZmZmZmZmZmZmZmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddlm-Z- ddl.m/Z/ dd	l0m1Z1 dd
l2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d„ ZI e?j”                  eKe«      d„ «       ZL e?j”                  eeeeeeee«      d„ «       ZL e?jš                  e«      d„ «       ZL e?jš                  e«      d„ «       ZL e?jš                  e	«      d„ «       ZL e?jš                  e«      d„ «       ZL e?jš                  e «      d„ «       ZL e?j”                  e3e7e5«      d„ «       ZL e@jš                  e«      d„ «       ZL e@jš                  e«      d„ «       ZL e@j”                  eeeeeee«      d„ «       ZL e@jš                  e«      d„ «       ZL e@j”                  ee«      d„ «       ZL e@jš                  e	«      d„ «       ZL e@j”                  e#e$e%e+e,«      d „ «       ZL e@jš                  e'«      d!„ «       ZL e@j”                  e"e&«      d"„ «       ZL e@j”                  e!e)«      d#„ «       ZL eAjš                  e«      d$„ «       ZL eAjš                  e«      d%„ «       ZLd&„ ZN eBj”                  e eeee(eee*e«	      d'„ «       ZL eBj”                  eee«      d(„ «       ZL eBjš                  e«      d)„ «       ZL eBjš                  e«      d*„ «       ZL eBjš                  e«      d+„ «       ZL eBjš                  e	«      d,„ «       ZL eBj”                  e%e+«      d-„ «       ZL eBjš                  e'«      d.„ «       ZL eBjš                  e)«      d/„ «       ZL eBj”                  e3e7e5«      d0„ «       ZL eCjš                  eO«      d1„ «       ZL eCj”                  ee«      d2„ «       ZL eCj”                  eee	«      d3„ «       ZL eDjš                  eO«      d4„ «       ZL eDjš                  e«      d5„ «       ZL eDjš                  e«      d6„ «       ZL eDjš                  e	«      d7„ «       ZL eDj”                  e%e+«      d8„ «       ZL eDjš                  e'«      d9„ «       ZL eDjš                  e4«      d:„ «       ZL eEj”                  e e%e'e(ee)eee*e+«
      d;„ «       ZL eEj”                  ee«      d<„ «       ZL eEjš                  e«      d=„ «       ZL eEj”                  ee«      d>„ «       ZL eEjš                  e	«      d?„ «       ZL eEj”                  e3e7e5«      d@„ «       ZL eEjš                  e«      dA„ «       ZLdB„ ZP eFjš                  e«      dC„ «       ZL eFjš                  e«      dD„ «       ZL eFjš                  e«      dE„ «       ZL eFjš                  e«      dF„ «       ZL eFjš                  e	«      dG„ «       ZL eFjš                  e)«      dH„ «       ZL eFjš                  e'«      dI„ «       ZL eFj”                  ee«      dJ„ «       ZL eFjš                  e«      dK„ «       ZL eGjš                  eO«      dL„ «       ZL eGjš                  e«      dM„ «       ZL eGjš                  e«      dN„ «       ZL eGjš                  e	«      dO„ «       ZL eGjš                  e4«      dP„ «       ZL eHj”                  eeeee«      dQ„ «       ZL eHj”                  eeeee«      dR„ «       ZL eHj”                  ee«      dS„ «       ZL eHjš                  e	«      dT„ «       ZL eHjš                  e«      dU„ «       ZL eHj”                  e#e$e%e+e,«      dV„ «       ZL eHjš                  e'«      dW„ «       ZL eHj”                  e"e&«      dX„ «       ZL eHj”                  e!e)«      dY„ «       ZLyZ)[zL
Handlers for predicates related to set membership: integer, rational, etc.
é    )ÚQÚask)ÚAddÚBasicÚExprÚMulÚPowÚS)ÚAlgebraicNumberÚComplexInfinityÚExp1ÚFloatÚGoldenRatioÚImaginaryUnitÚInfinityÚIntegerÚNaNÚNegativeInfinityÚNumberÚNumberSymbolÚPiÚpiÚRationalÚTribonacciConstantÚE)Ú
fuzzy_bool)ÚAbsÚacosÚacotÚasinÚatanÚcosÚcotÚexpÚimÚlogÚreÚsinÚtan)ÚI)ÚEq)Ú	conjugate)ÚDeterminantÚ
MatrixBaseÚTrace)ÚMatrixElement)ÚMDNotImplementedErroré   )Útest_closed_groupÚask_allÚask_anyé   )
ÚIntegerPredicateÚRationalPredicateÚIrrationalPredicateÚRealPredicateÚExtendedRealPredicateÚHermitianPredicateÚComplexPredicateÚImaginaryPredicateÚAntihermitianPredicateÚAlgebraicPredicatec                 óŠ   — 	 t        | j                  «       «      }| |z
  j                  d«      st        ‚y# t        $ r Y yw xY w)Nr   TF)ÚintÚroundÚequalsÚ	TypeError©ÚexprÚassumptionsÚis      ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/sets.pyÚ_IntegerPredicate_numberrK      sC   € ð	Ü�D—J‘J“LÓ!ˆAØ˜1‘H×$Ñ$ QÔ'Ü�ØøÜò 	Ùð	ús   ‚36 ¶	AÁAc                  ó   — y©NT© ©rG   rH   s     rJ   Ú_rP   (   ó   € àó    c                  ó   — y©NFrN   rO   s     rJ   rP   rP   ,   ó   € ð rR   c                 ó.   — | j                   }|€t        ‚|S ©N)Ú
is_integerr1   ©rG   rH   Úrets      rJ   rP   rP   1   ó   € à
�/‰/€CØ
€{Ü#Ð#Ø€JrR   c                 óh   — | j                   rt        | |«      S t        | |t        j                  «      S )zw
    * Integer + Integer       -> Integer
    * Integer + !Integer      -> !Integer
    * !Integer + !Integer -> ?
    )Ú	is_numberrK   r3   r   ÚintegerrO   s     rJ   rP   rP   8   s+   € ð ‡~‚~Ü'¨¨kÓ:Ð:Ü˜T ;´·	±	Ó:Ð:rR   c           	      óî  — | j                   rt        | |«      S t        t        j                  | j
                  «       t        j                  | j
                  «      t        j                  | j                  «      |¬«      ryt        t        j                  | j
                  «      t        j                  | j                  «      |¬«      r­t        t        j                  | j                  «      t        j                  | j                  «      t        j                  | j
                  «       z  t        j                  | j
                  dz
  «      t        j                  | j
                  dz   «      |¬«      ryy y )N)rH   Tr2   )r]   rK   r4   r   ÚzeroÚbaseÚfiniter$   r^   r5   ÚpositiveÚnonnegativerO   s     rJ   rP   rP   C   s   € à‡~‚~Ü'¨¨kÓ:Ð:Ü”—‘�t—y‘yÓ!Ð!¤1§8¡8¨D¯I©IÓ#6¼¿¹¸t¿x¹xÓ8HÐVaÕbØÜŒq�y‰y˜Ÿ™Ó#¤Q§Y¡Y¨t¯x©xÓ%8ÀkÕRÜ”1—:‘:˜dŸh™hÓ'¬¯©°t·x±xÓ)@ÄAÇFÁFÈ4Ï9É9ÓDUÐCUÑ)UÔWX×W]ÑW]Ð^b×^gÑ^gÐhiÑ^iÓWjÔlm×lrÑlrÐsw×s|Ñs|Ð}~Ñs~Ólð  NYõ  ZØð Zð SrR   c                 óŽ  — | j                   rt        | |«      S d}| j                  D ]›  }t        t	        j
                  |«      |«      rŒ#|j                  rF|j                  dk(  r$t        t	        j                  d| z  «      |«      c S |j                  dz   sŒs yt        t	        j                  |«      |«      r|rd}Œ™ y y |S )z™
    * Integer*Integer      -> Integer
    * Integer*Irrational   -> !Integer
    * Odd/Even             -> !Integer
    * Integer*Rational     -> ?
    Tr6   r2   NF)
r]   rK   Úargsr   r   r^   Úis_RationalÚqÚevenÚ
irrational)rG   rH   Ú_outputÚargs       rJ   rP   rP   M   s¥   € ð ‡~‚~Ü'¨¨kÓ:Ð:Ø€GØ�y‰yò ˆÜ”1—9‘9˜S“> ;Õ/Ø�ŠØ—5‘5˜A’:ÜœqŸv™v a¨¡f›~¨{Ó;Ò;Ø—U‘U˜Q‘Y’<ÙÜ”Q—\‘\ #Ó&¨Ô4ÙØ#‘Gááðð €NrR   c                 ó^   — t        t        j                  | j                  d   «      |«      ryy ©Nr   T)r   r   r^   rf   rO   s     rJ   rP   rP   i   s%   € ä
Œ1�9‰9�T—Y‘Y˜q‘\Ó" KÔ0Øð 1rR   c                 óZ   — t        t        j                  | j                  d   «      |«      S ©Nr   )r   r   Úinteger_elementsrf   rO   s     rJ   rP   rP   n   ó"   € äŒq×!Ñ! $§)¡)¨A¡,Ó/°Ó=Ð=rR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP   u   rQ   rR   c                  ó   — y rW   rN   rO   s     rJ   rP   rP   y   rQ   rR   c                  ó   — yrT   rN   rO   s     rJ   rP   rP   }   rU   rR   c                 ó.   — | j                   }|€t        ‚|S rW   )Úis_rationalr1   rY   s      rJ   rP   rP   ‚   s   € à
×
Ñ
€CØ
€{Ü#Ð#Ø€JrR   c                 óx   — | j                   r| j                  «       d   ryt        | |t        j                  «      S )z}
    * Rational + Rational     -> Rational
    * Rational + !Rational    -> !Rational
    * !Rational + !Rational   -> ?
    r2   F)r]   Úas_real_imagr3   r   ÚrationalrO   s     rJ   rP   rP   ‰   s2   € ð ‡~‚~Ø×ÑÓ˜qÒ!ØÜ˜T ;´·
±
Ó;Ð;rR   c                 ó  — | j                   t        k(  rK| j                  }t        t	        j
                  |«      |«      rt        t	        j                  |«      |«      S yt        t	        j                  | j                  «      |«      }|�r,t        t	        j
                  | j                   «      |«      }|rYt        t	        j                  | j                   «      |«      }|du ry|r)t        t	        j                  | j                  «      «      ryt        t	        j                  | j                   «      |«      du r)t        t	        j                  | j                  «      |«      S t        t	        j                  | j                   «      |«      r*t        t	        j                  | j                  d«      «      ryyt        t	        j
                  | j                  «      |«      rªt        t	        j                  | j                   «      |«      r|du ryt        t	        j                  | j                   «      «      r)t        t	        j                  | j                  «      «      ryt        t	        j                  | j                   d«      «      ryyy)z�
    * Rational ** Integer      -> Rational
    * Irrational ** Rational   -> Irrational
    * Rational ** Irrational   -> ?
    NFTéÿÿÿÿr2   )ra   r   r$   r   r   rz   r`   r^   rc   Ú	algebraicrj   ÚeqÚprime)rG   rH   ÚxÚis_exp_integerÚis_base_rationalÚis_base_zeros         rJ   rP   rP   •   sª  € ð ‡y�y”A‚~Ø�H‰HˆÜŒq�z‰z˜!‹}˜kÔ*Ü”q—v‘v˜a“y +Ó.Ð.ØäœŸ™ 4§8¡8Ó,¨kÓ:€NÚÜœqŸz™z¨$¯)©)Ó4°[ÓAÐÙÜœqŸv™v d§i¡iÓ0°Ó=ˆLØ˜uÑ$ØÙ¤¤A§J¡J¨t¯x©xÓ$8Ô 9ØÜŒq�{‰{˜4Ÿ9™9Ó% kÓ2°eÑ;Ü”q—v‘v˜dŸh™hÓ'¨Ó5Ð5ÜŒq�|‰|˜DŸI™IÓ& {Ô3¼¼A¿D¹DÀÇÁÈ"Ó<MÔ8NØØÜ	ŒQ�Z‰Z˜Ÿ™Ó! ;Ô	/ÜŒq�w‰w�t—y‘yÓ! ;Ô/°NÀeÑ4KØÜŒq�v‰v�d—i‘iÓ Ô!¤c¬!¯*©*°T·X±XÓ*>Ô&?ØÜŒq�t‰t�D—I‘I˜aÓ Ô!Øð "ð 
0rR   c                 ó    — | j                   d   }t        t        j                  |«      |«      r t        t        j                  |«       |«      S y rp   ©rf   r   r   rz   Únonzero©rG   rH   r€   s      rJ   rP   rP   ¸   s=   € à�	‰	�!‰€AÜ
Œ1�:‰:�a‹=˜+Ô&Ü”A—I‘I˜a“L�= +Ó.Ð.ð 'rR   c                 óš   — | j                   }t        t        j                  |«      |«      r t        t        j                  |«       |«      S y rW   )r$   r   r   rz   r†   r‡   s      rJ   rP   rP   ¾   s9   € à�‰€AÜ
Œ1�:‰:�a‹=˜+Ô&Ü”A—I‘I˜a“L�= +Ó.Ð.ð 'rR   c                 ób   — | j                   d   }t        t        j                  |«      |«      ryy ©Nr   F)rf   r   r   rz   r‡   s      rJ   rP   rP   Ä   s)   € à�	‰	�!‰€AÜ
Œ1�:‰:�a‹=˜+Ô&Øð 'rR   c                 ó¦   — | j                   d   }t        t        j                  |«      |«      r#t        t        j                  |dz
  «       |«      S y ©Nr   r2   r…   r‡   s      rJ   rP   rP   Ê   sC   € à�	‰	�!‰€AÜ
Œ1�:‰:�a‹=˜+Ô&Ü”A—I‘I˜a !™eÓ$Ð$ kÓ2Ð2ð 'rR   c                 ó.   — | j                   }|€t        ‚|S rW   )Úis_irrationalr1   rY   s      rJ   rP   rP   Ó   s   € à
×
Ñ
€CØ
€{Ü#Ð#Ø€JrR   c                 ó’   — t        t        j                  | «      |«      }|r%t        t        j                  | «      |«      }|€y | S |S rW   )r   r   Úrealrz   )rG   rH   Ú_realÚ	_rationals       rJ   rP   rP   Ú   sD   € ä”—‘�t“˜kÓ*€EÙÜœŸ
™
 4Ó(¨+Ó6ˆ	ØÐØØˆ}ÐàˆrR   c                 ól   — | j                  «       d   j                  d«      }|j                  dk7  r| S y )Nr2   r6   ©ry   ÚevalfÚ_precrF   s      rJ   Ú_RealPredicate_numberr—   è   ó9   € ð 	×ÑÓ˜AÑ×$Ñ$ QÓ'€AØ‡w�w�!‚|Øˆuˆð rR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP   ñ   ó   € ð rR   c                  ó   — yrT   rN   rO   s     rJ   rP   rP   ö   ó   € àrR   c                 ó.   — | j                   }|€t        ‚|S rW   )Úis_realr1   rY   s      rJ   rP   rP   ú   s   € à
�,‰,€CØ
€{Ü#Ð#Ø€JrR   c                 óh   — | j                   rt        | |«      S t        | |t        j                  «      S )zT
    * Real + Real              -> Real
    * Real + (Complex & !Real) -> !Real
    )r]   r—   r3   r   r�   rO   s     rJ   rP   rP     s+   € ð ‡~‚~Ü$ T¨;Ó7Ð7Ü˜T ;´·±Ó7Ð7rR   c                 óè   — | j                   rt        | |«      S d}| j                  D ]H  }t        t	        j
                  |«      |«      rŒ#t        t	        j                  |«      |«      r|dz  }ŒH y |S )zx
    * Real*Real               -> Real
    * Real*Imaginary          -> !Real
    * Imaginary*Imaginary     -> Real
    TN)r]   r—   rf   r   r   r�   Ú	imaginary)rG   rH   Úresultrl   s       rJ   rP   rP     sk   € ð ‡~‚~Ü$ T¨;Ó7Ð7Ø€FØ�y‰yò ˆÜŒq�v‰v�c‹{˜KÔ(ØÜ”—‘˜SÓ! ;Ô/Ø˜d‘]‰Fáðð ˆrR   c                 ó  — | j                   rt        | |«      S | j                  t        k(  rWt	        t        j                  | j                  t        z  t        z  «      t        j                  | j                  «      z  |«      S | j                  j                  t        k(  s3| j                  j                  rþ| j                  j                  t        k(  rát	        t        j                  | j                  j                  «      |«      r*t	        t        j                  | j                  «      |«      ry| j                  j                  t        z  t        z  }t	        t        j                  d|z  «      |«      r=t	        t        j                  t        j                  |z  | j                  z  «      |«      S yt	        t        j                  | j                  «      |«      rXt	        t        j                  | j                  «      |«      r/t	        t        j                   | j                  «      |«      }|�| S yt	        t        j                  | j                  «      |«      r6t	        t        j                  t#        | j                  «      «      |«      }|�|S t	        t        j                  | j                  «      |«      �rHt	        t        j                  | j                  «      |«      �rt	        t        j$                  | j                  «      |«      dur+t	        t        j&                  | j                  «      |«      ryy| j                  j(                  r\t	        t        j*                  | j                  j,                  «      |«      r)t	        t        j&                  | j                  «      |«      S t	        t        j                  | j                  «      |«      ryt	        t        j&                  | j                  «      |«      ryyyy)aý  
    * Real**Integer              -> Real
    * Positive**Real             -> Real
    * Negative**Real             -> ?
    * Real**(Integer/Even)       -> Real if base is nonnegative
    * Real**(Integer/Odd)        -> Real
    * Imaginary**(Integer/Even)  -> Real
    * Imaginary**(Integer/Odd)   -> not Real
    * Imaginary**Real            -> ? since Real could be 0 (giving real)
                                    or 1 (giving imaginary)
    * b**Imaginary               -> Real if log(b) is imaginary and b != 0
                                    and exponent != integer multiple of
                                    I*pi/log(b)
    * Real**Real                 -> ? e.g. sqrt(-1) is imaginary and
                                    sqrt(2) is not
    Tr6   NF)r]   r—   ra   r   r   r   r^   r$   r*   r   r�   ÚfuncÚis_Powr¡   r
   ÚNegativeOneÚoddr&   r`   rc   rg   ri   rh   )rG   rH   rI   r§   Úimlogs        rJ   rP   rP     s™  € ð$ ‡~‚~Ü$ T¨;Ó7Ð7à‡y�y”A‚~ÜÜ�I‰I�d—h‘hœq‘j¤‘mÓ$¤q§v¡v¨d¯h©hÓ'7Ñ7¸ó
ð 	
ð ‡y�y‡~�~œÒ §¡×!1Ò!1°d·i±i·n±nÌÒ6IÜŒq�{‰{˜4Ÿ9™9Ÿ=™=Ó)¨;Ô7Ü”1—;‘;˜tŸx™xÓ(¨+Ô6Øð
 �I‰I�M‰Mœ!‰OœBÑˆÜŒq�y‰y˜˜1™‹~˜{Ô+Ü”q—v‘vœqŸ}™}¨aÑ/°$·(±(Ñ:Ó;¸[ÓIÐIØä
Œ1�;‰;�t—y‘yÓ! ;Ô/ÜŒq�y‰y˜Ÿ™Ó" KÔ0Ü”a—e‘e˜DŸH™H“o {Ó3ˆCØˆØ�w�Øä
Œ1�;‰;�t—x‘xÓ  +Ô.Ü”A—K‘K¤ D§I¡I£Ó/°Ó=ˆØÐð ˆLä
Œ1�6‰6�$—)‘)Ó˜kÕ*ÜŒq�v‰v�d—h‘hÓ Õ-Ü”1—6‘6˜$Ÿ)™)Ó$ kÓ2¸%Ñ?Ü”q—z‘z $§(¡(Ó+¨[Ô9ØØØ�x‰x×#Ò#ÜœŸ™˜tŸx™xŸz™zÓ*¨KÔ8Üœ1Ÿ:™: d§i¡iÓ0°+Ó>Ð>Ü”Q—Y‘Y˜tŸx™xÓ(¨+Ô6ØÜ”Q—Z‘Z §	¡	Ó*¨KÔ8Øð 9ð .ð +rR   c                 ó^   — t        t        j                  | j                  d   «      |«      ryy rn   )r   r   r�   rf   rO   s     rJ   rP   rP   b  s%   € ä
Œ1�6‰6�$—)‘)˜A‘,Ó Ô-Øð .rR   c                 ó°   — t        t        j                  | j                  t        z  t
        z  «      t        j                  | j                  «      z  |«      S rW   )r   r   r^   r$   r*   r   r�   rO   s     rJ   rP   rP   g  s;   € äÜ	�	‰	�$—(‘(œ1‘*œR‘-Ó ¤1§6¡6¨$¯(©(Ó#3Ñ3°[óð rR   c                 óZ   — t        t        j                  | j                  d   «      |«      S rp   )r   r   rc   rf   rO   s     rJ   rP   rP   m  s    € äŒq�z‰z˜$Ÿ)™) A™,Ó'¨Ó5Ð5rR   c                 óZ   — t        t        j                  | j                  d   «      |«      S rp   )r   r   Úreal_elementsrf   rO   s     rJ   rP   rP   q  s    € äŒq�‰˜tŸy™y¨™|Ó,¨kÓ:Ð:rR   c                 óð   — t        t        j                  | «      t        j                  | «      z  t        j                  | «      z  t        j
                  | «      z  t        j                  | «      z  |«      S rW   )r   r   Únegative_infiniteÚnegativer`   rc   Úpositive_infiniterO   s     rJ   rP   rP   x  sj   € äŒq×"Ñ" 4Ó(Ü—‘˜DÓ!ñ"ä—‘˜“ñô —‘˜DÓ!ñ"ô ×$Ñ$ TÓ*ñ	+ð
 óð rR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP   �  rQ   rR   c                 ó8   — t        | |t        j                  «      S rW   )r3   r   Úextended_realrO   s     rJ   rP   rP   …  s   € ä˜T ;´·±Ó@Ð@rR   c                 ób   — t        | t        «      ry t        t        j                  | «      |«      S rW   )Ú
isinstancer.   r   r   r�   rO   s     rJ   rP   rP   Œ  s$   € ä�$œ
Ô#ØÜŒq�v‰v�d‹|˜[Ó)Ð)rR   c                 ó\   — | j                   rt        ‚t        | |t        j                  «      S )zZ
    * Hermitian + Hermitian  -> Hermitian
    * Hermitian + !Hermitian -> !Hermitian
    )r]   r1   r3   r   Ú	hermitianrO   s     rJ   rP   rP   ’  s$   € ð ‡~‚~Ü#Ð#Ü˜T ;´·±Ó<Ð<rR   c                 ó:  — | j                   rt        ‚d}d}| j                  D ]u  }t        t	        j
                  |«      |«      r|dz  }n!t        t	        j                  |«      |«      s yt        t	        j                  |«       |«      sŒj|dz  }|dkD  sŒu y |S )zÒ
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> Hermitian
    * Hermitian*Antihermitian     -> !Hermitian
    * Antihermitian*Antihermitian -> Hermitian
    r   Tr2   N©r]   r1   rf   r   r   Úantihermitianr¸   Úcommutative©rG   rH   Únccountr¢   rl   s        rJ   rP   rP   œ  s�   € ð ‡~‚~Ü#Ð#Ø€GØ€FØ�y‰yò 
ˆÜŒq�‰˜sÓ# [Ô1Ø˜d‘]‰FÜ”Q—[‘[ Ó% {Ô3ÙÜ”—‘˜cÓ"Ð" KÕ0Ø�q‰LˆGØ˜‹{Ùð
ð ˆrR   c                 ó^  — | j                   rt        ‚| j                  t        k(  r0t	        t        j                  | j                  «      |«      ryt        ‚t	        t        j                  | j                  «      |«      r*t	        t        j                  | j                  «      |«      ryt        ‚)z+
    * Hermitian**Integer -> Hermitian
    T)	r]   r1   ra   r   r   r   r¸   r$   r^   rO   s     rJ   rP   rP   µ  ss   € ð
 ‡~‚~Ü#Ð#Ø‡y�y”A‚~ÜŒq�{‰{˜4Ÿ8™8Ó$ kÔ2ØÜ#Ð#Ü
Œ1�;‰;�t—y‘yÓ! ;Ô/ÜŒq�y‰y˜Ÿ™Ó" KÔ0ØÜ
ÐrR   c                 óh   — t        t        j                  | j                  d   «      |«      ryt        ‚rn   )r   r   r¸   rf   r1   rO   s     rJ   rP   rP   Å  s&   € ä
Œ1�;‰;�t—y‘y ‘|Ó$ kÔ2ØÜ
ÐrR   c                 ób   — t        t        j                  | j                  «      |«      ryt        ‚rM   )r   r   r¸   r$   r1   rO   s     rJ   rP   rP   Ë  s"   € ä
Œ1�;‰;�t—x‘xÓ  +Ô.ØÜ
ÐrR   c                 óâ   — | j                   \  }}d}t        |«      D ]G  }t        ||«      D ]6  }t        t        | ||f   t	        | ||f   «      «      «      }|€d }|dk(  sŒ5  y ŒI |€t
        ‚|S ©NTF©ÚshapeÚranger   r+   r,   r1   ©ÚmatrH   ÚrowsÚcolsÚret_valrI   ÚjÚconds           rJ   rP   rP   Ñ  sˆ   € à—‘�J€Dˆ$Ø€GÜ�4‹[ò ˆÜ�q˜$“ò 	ˆAÜœb  Q¨ T¡¬I°c¸!¸Q¸$±iÓ,@ÓAÓBˆDØˆ|Ø�Ø�u‹}Úñ	ðð €Ü#Ð#Ø€NrR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP   ã  rš   rR   c                  ó   — yrT   rN   rO   s     rJ   rP   rP   è  rœ   rR   c                 ó.   — | j                   }|€t        ‚|S rW   )Ú
is_complexr1   rY   s      rJ   rP   rP   ì  r[   rR   c                 ó8   — t        | |t        j                  «      S rW   )r3   r   ÚcomplexrO   s     rJ   rP   rP   ó  s   € ä˜T ;´·	±	Ó:Ð:rR   c                 ó`   — | j                   t        k(  ryt        | |t        j                  «      S rM   )ra   r   r3   r   rÓ   rO   s     rJ   rP   rP   ÷  s#   € à‡y�y”A‚~ØÜ˜T ;´·	±	Ó:Ð:rR   c                 óZ   — t        t        j                  | j                  d   «      |«      S rp   )r   r   Úcomplex_elementsrf   rO   s     rJ   rP   rP   ý  rr   rR   c                  ó   — y rW   rN   rO   s     rJ   rP   rP     rQ   rR   c                 ól   — | j                  «       d   j                  d«      }|j                  dk7  r| S y )Nr   r6   r2   r”   )rG   rH   Úrs      rJ   Ú_Imaginary_numberrÚ     r˜   rR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP     rQ   rR   c                 ó.   — | j                   }|€t        ‚|S rW   )Úis_imaginaryr1   rY   s      rJ   rP   rP     s   € à
×
Ñ
€CØ
€{Ü#Ð#Ø€JrR   c                 ó&  — | j                   rt        | |«      S d}| j                  D ]H  }t        t	        j
                  |«      |«      rŒ#t        t	        j                  |«      |«      r|dz  }ŒH y |dk(  ry|dt        | j                  «      fv ryy)zy
    * Imaginary + Imaginary -> Imaginary
    * Imaginary + Complex   -> ?
    * Imaginary + Real      -> !Imaginary
    r   r2   TFN©r]   rÚ   rf   r   r   r¡   r�   Úlen)rG   rH   Úrealsrl   s       rJ   rP   rP     s�   € ð ‡~‚~Ü   {Ó3Ð3à€EØ�y‰yò ˆÜŒq�{‰{˜3Ó Ô-ØÜ”—‘˜“˜kÔ*Ø�Q‰J‰Eáðð �AŠ:ØØ�Qœ˜DŸI™I›Ð'Ñ'àð (rR   c                 ó  — | j                   rt        | |«      S d}d}| j                  D ]H  }t        t	        j
                  |«      |«      r|dz  }Œ(t        t	        j                  |«      |«      rŒH y |t        | j                  «      k(  ry|S )zN
    * Real*Imaginary      -> Imaginary
    * Imaginary*Imaginary -> Real
    Fr   TNrß   )rG   rH   r¢   rá   rl   s        rJ   rP   rP   5  s€   € ð ‡~‚~Ü   {Ó3Ð3Ø€FØ€EØ�y‰yò ˆÜŒq�{‰{˜3Ó Ô-Ø˜d‘]‰FÜ”Q—V‘V˜C“[ +Õ.Ùð	ð ”C˜Ÿ	™	“NÒ"ØØˆrR   c                 ób  — | j                   rt        | |«      S | j                  t        k(  rS| j                  t
        z  t        z  }t        t        j                  d|z  «      t        j                  |«       z  |«      S | j                  j                  t        k(  s3| j                  j                  rý| j                  j                  t        k(  ràt        t        j                  | j                  j                  «      |«      r­t        t        j                  | j                  «      |«      ry| j                  j                  t
        z  t        z  }t        t        j                  d|z  «      |«      r=t        t        j                  t        j                  |z  | j                  z  «      |«      S t        t        j                  | j                  «      |«      rWt        t        j                  | j                  «      |«      r.t        t        j                  | j                  «      |«      }|�|S yt        t        j                  | j                  «      |«      r5t        t        j                  t!        | j                  «      «      |«      }|�yt        t        j"                  | j                  «      t        j"                  | j                  «      z  |«      rÚt        t        j$                  | j                  «      |«      ryt        t        j&                  | j                  «      |«      }|s|S t        t        j                  | j                  «      |«      ryt        t        j                  d| j                  z  «      |«      }|r)t        t        j(                  | j                  «      |«      S |S y)a¨  
    * Imaginary**Odd        -> Imaginary
    * Imaginary**Even       -> Real
    * b**Imaginary          -> !Imaginary if exponent is an integer
                               multiple of I*pi/log(b)
    * Imaginary**Real       -> ?
    * Positive**Real        -> Real
    * Negative**Integer     -> Real
    * Negative**(Integer/2) -> Imaginary
    * Negative**Real        -> not Imaginary if exponent is not Rational
    r6   FN)r]   rÚ   ra   r   r$   r*   r   r   r   r^   r¤   r¥   r¡   r
   r¦   r§   r&   r�   rc   rz   r°   )rG   rH   ÚarI   r§   r¨   ÚratÚhalfs           rJ   rP   rP   I  sb  € ð ‡~‚~Ü   {Ó3Ð3à‡y�y”A‚~Ø�H‰H”Q‰J”r‰MˆÜ”1—9‘9˜Q˜q™S“>¤Q§Y¡Y¨q£\ MÑ1°;Ó?Ð?à‡y�y‡~�~œÒ §¡×!1Ò!1°d·i±i·n±nÌÒ6IÜŒq�{‰{˜4Ÿ9™9Ÿ=™=Ó)¨;Ô7Ü”1—;‘;˜tŸx™xÓ(¨+Ô6ØØ—	‘	—‘œa‘¤Ñ"ˆAÜ”1—9‘9˜Q˜q™S“> ;Ô/Üœ1Ÿ;™;¬¯©°qÑ(8¸4¿8¹8Ñ'CÓDÀkÓRÐRä
Œ1�;‰;�t—y‘yÓ! ;Ô/ÜŒq�y‰y˜Ÿ™Ó" KÔ0Ü”a—e‘e˜DŸH™H“o {Ó3ˆCØˆØ�
Øä
Œ1�;‰;�t—x‘xÓ  +Ô.Ü”A—K‘K¤ D§I¡I£Ó/°Ó=ˆØÐàä
Œ1�6‰6�$—)‘)ÓœqŸv™v d§h¡hÓ/Ñ/°Ô=ÜŒq�z‰z˜$Ÿ)™)Ó$ kÔ2Øä”a—j‘j §¡Ó*¨KÓ8ˆCÙØ�
Ü”1—9‘9˜TŸX™XÓ&¨Ô4Øäœ1Ÿ9™9 Q t§x¡x¡ZÓ0°+Ó>�ÙÜœqŸz™z¨$¯)©)Ó4°kÓBÐBØ�ð >rR   c                 ó  — t        t        j                  | j                  d   «      |«      r.t        t        j                  | j                  d   «      |«      ryy | j                  d   j
                  t        k(  s9| j                  d   j                  rG| j                  d   j                  t        k(  r'| j                  d   j                  t        t         fv ryt        t        j                  | j                  d   «      |«      }|du ryy )Nr   FT)r   r   r�   rf   rc   r¤   r$   r¥   ra   r   r*   r¡   )rG   rH   r%   s      rJ   rP   rP   �  sÇ   € ä
Œ1�6‰6�$—)‘)˜A‘,Ó Ô-ÜŒq�z‰z˜$Ÿ)™) A™,Ó'¨Ô5ØØð
 ‡y�y��|×ÑœCÒ D§I¡I¨a¡L×$7Ò$7¸D¿I¹IÀa¹L×<MÑ<MÔQRÒ<RØ�9‰9�Q‰<×Ñ¤¤A 2˜wÑ&ØÜ	ŒQ�[‰[˜Ÿ™ 1™Ó&¨Ó	4€BØ	ˆU�{Øð rR   c                 ó¨   — | j                   t        z  t        z  }t        t	        j
                  d|z  «      t	        j
                  |«       z  |«      S )Nr6   )r$   r*   r   r   r   r^   )rG   rH   rä   s      rJ   rP   rP   ’  s;   € à�‰”‰
”2‰€AÜŒq�y‰y˜˜1™‹~¤§¡¨1£ Ñ-¨{Ó;Ð;rR   c                 ó0   — | j                  «       d   dk(   S )Nr2   r   )ry   rO   s     rJ   rP   rP   —  s   € à×!Ñ!Ó# AÑ&¨!Ñ+Ð,Ð,rR   c                  ó   — y rW   rN   rO   s     rJ   rP   rP   ›  rQ   rR   c                 ó¢   — t        | t        «      ry t        t        j                  | «      |«      ryt        t        j
                  | «      |«      S rM   )r¶   r.   r   r   r`   r¡   rO   s     rJ   rP   rP   ¢  s:   € ä�$œ
Ô#ØÜ
Œ1�6‰6�$‹<˜Ô%ØÜŒq�{‰{˜4Ó  +Ó.Ð.rR   c                 ó\   — | j                   rt        ‚t        | |t        j                  «      S )zr
    * Antihermitian + Antihermitian  -> Antihermitian
    * Antihermitian + !Antihermitian -> !Antihermitian
    )r]   r1   r3   r   r»   rO   s     rJ   rP   rP   ª  s$   € ð ‡~‚~Ü#Ð#Ü˜T ;´·±Ó@Ð@rR   c                 ó:  — | j                   rt        ‚d}d}| j                  D ]u  }t        t	        j
                  |«      |«      r|dz  }n!t        t	        j                  |«      |«      s yt        t	        j                  |«       |«      sŒj|dz  }|dkD  sŒu y |S )zß
    As long as there is at most only one noncommutative term:

    * Hermitian*Hermitian         -> !Antihermitian
    * Hermitian*Antihermitian     -> Antihermitian
    * Antihermitian*Antihermitian -> !Antihermitian
    r   FTr2   Nrº   r½   s        rJ   rP   rP   ´  s�   € ð ‡~‚~Ü#Ð#Ø€GØ€FØ�y‰yò 
ˆÜŒq�‰˜sÓ# [Ô1Ø˜d‘]‰FÜ”Q—[‘[ Ó% {Ô3ÙÜ”—‘˜cÓ"Ð" KÕ0Ø�q‰LˆGØ˜‹{Ùð
ð ˆrR   c                 óÞ  — | j                   rt        ‚t        t        j                  | j
                  «      |«      r0t        t        j                  | j                  «      |«      ryt        ‚t        t        j                  | j
                  «      |«      rTt        t        j                  | j                  «      |«      ryt        t        j                  | j                  «      |«      ryt        ‚)zˆ
    * Hermitian**Integer  -> !Antihermitian
    * Antihermitian**Even -> !Antihermitian
    * Antihermitian**Odd  -> Antihermitian
    FT)r]   r1   r   r   r¸   ra   r^   r$   r»   ri   r§   rO   s     rJ   rP   rP   Í  sœ   € ð ‡~‚~Ü#Ð#Ü
Œ1�;‰;�t—y‘yÓ! ;Ô/ÜŒq�y‰y˜Ÿ™Ó" KÔ0Øô  Ðô 
ŒQ�_‰_˜TŸY™YÓ'¨Ô	5ÜŒq�v‰v�d—h‘hÓ Ô-ØÜ”—‘�t—x‘x“ +Ô.ØÜ
ÐrR   c                 óä   — | j                   \  }}d}t        |«      D ]H  }t        ||«      D ]7  }t        t        | ||f   t	        | ||f   «       «      «      }|€d }|dk(  sŒ6  y ŒJ |€t
        ‚|S rÃ   rÄ   rÇ   s           rJ   rP   rP   à  s‹   € à—‘�J€Dˆ$Ø€GÜ�4‹[ò ˆÜ�q˜$“ò 	ˆAÜœb  Q¨ T¡¬Y°s¸1¸a¸4±yÓ-AÐ,AÓBÓCˆDØˆ|Ø�Ø�u‹}Úñ	ðð €Ü#Ð#Ø€NrR   c                  ó   — yrM   rN   rO   s     rJ   rP   rP   ò  rš   rR   c                  ó   — yrT   rN   rO   s     rJ   rP   rP   ÷  rU   rR   c                 ó8   — t        | |t        j                  «      S rW   )r3   r   r}   rO   s     rJ   rP   rP   ü  s   € ä˜T ;´·±Ó<Ð<rR   c                 óH  — | j                   t        k(  rTt        t        j                  | j
                  «      |«      r*t        t        j                  | j
                  «       |«      S y | j                   t        k(  rTt        t        j                  | j
                  «      |«      r*t        t        j                  | j
                  «      |«      ryy t        t        j                  | j
                  «      |«      }t        t        j                  | j                   «      |«      }t        t        j                  | j
                  «      |«      }|rW|rT|ryt        t        j                  | j                   d«      t        j                  | j                   d«      z  «      r|du ryy y y y )NFTr   r2   )ra   r   r   r   r}   r$   r†   r   r^   rc   rz   Úne)rG   rH   Úexp_rationalÚbase_algebraicÚexp_algebraics        rJ   rP   rP      s  € à‡y�y”A‚~ÜŒq�{‰{˜4Ÿ8™8Ó$ kÔ2ÜœŸ	™	 $§(¡(Ó+Ð+¨[Ó9Ð9ØØ‡y�y”B‚ÜŒq�y‰y˜Ÿ™Ó" KÔ0´S¼¿¹ÀDÇHÁHÓ9MÈ{Ô5[ØØÜ”q—z‘z $§(¡(Ó+¨[Ó9€LÜœŸ™ T§Y¡YÓ/°Ó=€NÜœŸ™ D§H¡HÓ-¨kÓ:€MÙ™-ÙØô Œq�t‰t�D—I‘I˜aÓ ¤1§4¡4¨¯	©	°!Ó#4Ñ4Ô5¸,È%Ñ:OØð ;PÐ5ð (€~rR   c                 ó    — | j                   dk7  S rp   )rh   rO   s     rJ   rP   rP     s   € à�6‰6�Q‰;ÐrR   c                 ó    — | j                   d   }t        t        j                  |«      |«      r t        t        j                  |«       |«      S y rp   ©rf   r   r   r}   r†   r‡   s      rJ   rP   rP     s=   € à�	‰	�!‰€AÜ
Œ1�;‰;�q‹>˜;Ô'Ü”A—I‘I˜a“L�= +Ó.Ð.ð (rR   c                 óš   — | j                   }t        t        j                  |«      |«      r t        t        j                  |«       |«      S y rW   )r$   r   r   r}   r†   r‡   s      rJ   rP   rP      s9   € à�‰€AÜ
Œ1�;‰;�q‹>˜;Ô'Ü”A—I‘I˜a“L�= +Ó.Ð.ð (rR   c                 ób   — | j                   d   }t        t        j                  |«      |«      ryy rŠ   )rf   r   r   r}   r‡   s      rJ   rP   rP   &  s)   € à�	‰	�!‰€AÜ
Œ1�;‰;�q‹>˜;Ô'Øð (rR   c                 ó¦   — | j                   d   }t        t        j                  |«      |«      r#t        t        j                  |dz
  «       |«      S y rŒ   rú   r‡   s      rJ   rP   rP   ,  sC   € à�	‰	�!‰€AÜ
Œ1�;‰;�q‹>˜;Ô'Ü”A—I‘I˜a !™eÓ$Ð$ kÓ2Ð2ð (rR   N)QÚ__doc__Úsympy.assumptionsr   r   Ú
sympy.corer   r   r   r   r	   r
   Úsympy.core.numbersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úsympy.core.logicr   Úsympy.functionsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   Úsympy.core.relationalr+   Ú$sympy.functions.elementary.complexesr,   Úsympy.matricesr-   r.   r/   Ú"sympy.matrices.expressions.matexprr0   Úsympy.multipledispatchr1   Úcommonr3   r4   r5   Úpredicates.setsr7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rK   Úregister_manyrB   rP   Úregisterr—   ÚobjectrÚ   rN   rR   rJ   ú<module>r     sx
  ðñ÷ %ß 4× 4÷C÷ C÷ C÷ Cõ Cõ (÷÷ ÷ õ å  Ý $Ý :ß 9Ñ 9Ý <å 8ç 7Ñ 7÷0÷ 0÷ 0òð  Ð×Ñ  WÓ-ñó .ðð  Ð×Ñ  k°=À(Ø˜"˜hÐ(:ó<ñó<ðð Ð×Ñ˜4Ó ñó !ðð Ð×Ñ˜3Óñ;ó  ð;ð Ð×Ñ˜3Óñó  ðð Ð×Ñ˜3Óñó  ðð6 Ð×Ñ˜3Óñó  ðð  Ð×Ñ ¨]¸EÓBñ>ó Cð>ð Ð×Ñ˜HÓ%ñó &ðð Ð×Ñ˜EÓ"ñó #ðð !Ð× Ñ   {°MÀ8Ø�bÐ,ó.ñó.ðð Ð×Ñ˜DÓ!ñó "ðð !Ð× Ñ   cÓ*ñ	<ó +ð	<ð Ð×Ñ˜CÓ ñ ó !ð ðD !Ð× Ñ   t¨S°#°sÓ;ñ/ó <ð/ð
 Ð×Ñ˜CÓ ñ/ó !ð/ð
 !Ð× Ñ   sÓ+ñó ,ðð
 !Ð× Ñ   sÓ+ñ3ó ,ð3ð Ð×Ñ˜dÓ#ñó $ðð Ð×Ñ˜eÓ$ñó %ðòð €×Ñ˜S $¨¨{¸BÀÀHØÐóñóðð €×Ñ˜]¨HÐ6FÓGñó Hðð €×Ñ˜Óñó ðð €×Ñ˜Óñ8ó ð8ð €×Ñ˜Óñó ðð& €×Ñ˜Óñ@ó ð@ðD €×Ñ˜S #Ó&ñó 'ðð €×Ñ˜Óñó ðð
 €×Ñ˜Óñ6ó ð6ð €×Ñ˜[¨-¸Ó?ñ;ó @ð;ð  Ð×Ñ Ó'ñó (ðð %Ð×$Ñ$ XÐ/?Ó@ñó Aðð %Ð×$Ñ$ S¨#¨sÓ3ñAó 4ðAð Ð×Ñ˜VÓ$ñ*ó %ð*ð
 Ð×Ñ˜SÓ!ñ=ó "ð=ð Ð×Ñ˜SÓ!ñó "ðð0 Ð×Ñ˜SÓ!ñ ó "ð ð "Ð×!Ñ! # sÓ+ñ ó ,ð ð
 Ð×Ñ˜SÓ!ñ ó "ð ð
 Ð×Ñ˜ZÓ(ñó )ðð"  Ð×Ñ  S¨#¨r°=À#ÀvØ�"�cóñóðð  Ð×Ñ Ð*:Ó;ñó <ðð Ð×Ñ˜4Ó ñó !ðð  Ð×Ñ  SÓ)ñ;ó *ð;ð Ð×Ñ˜3Óñ;ó  ð;ð
  Ð×Ñ ¨]¸EÓBñ>ó Cð>ð Ð×Ñ˜3Óñó  ðòð Ð×Ñ˜]Ó+ñó ,ðð Ð×Ñ˜TÓ"ñó #ðð Ð×Ñ˜SÓ!ñó "ðð0 Ð×Ñ˜SÓ!ñó "ðð& Ð×Ñ˜SÓ!ñ5ó "ð5ðn Ð×Ñ˜SÓ!ñó "ðð  Ð×Ñ˜SÓ!ñ<ó "ð<ð "Ð×!Ñ! &¨,Ó7ñ-ó 8ð-ð Ð×Ñ˜SÓ!ñó "ðð !Ð× Ñ  Ó(ñ/ó )ð/ð !Ð× Ñ  Ó%ñAó &ðAð !Ð× Ñ  Ó%ñó &ðð0 !Ð× Ñ  Ó%ñ ó &ð ð$ !Ð× Ñ  Ó,ñó -ðð" "Ð×!Ñ! /°5¸+ØÐ%ó'ñó'ðð "Ð×!Ñ! /°4¸Ø�bóñóðð "Ð×!Ñ! # sÓ+ñ=ó ,ð=ð Ð×Ñ˜SÓ!ñó "ðð* Ð×Ñ˜XÓ&ñó 'ðð "Ð×!Ñ! $¨¨c°3¸Ó<ñ/ó =ð/ð
 Ð×Ñ˜SÓ!ñ/ó "ð/ð
 "Ð×!Ñ! $¨Ó,ñó -ðð
 "Ð×!Ñ! $¨Ó,ñ3ó -ñ3rR   