Ë
    7^(h[  ã                   ó†  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlm Z m!Z!m"Z"m#Z# ddl$m%Z% g d¢Z& G d„ de«      Z' G d„ de'«      Z( G d„ de«      Z) G d„ de«      Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d „ Z0d(d"„Z1d#„ Z2d$„ Z3d%„ Z4d&„ Z5d'„ Z6y!))zClebsch-Gordon Coefficients.é    )ÚSum)ÚAdd)ÚExpr)Úexpand)ÚMul)ÚPow)ÚEq)ÚS)ÚWildÚsymbols)Úsympify)Úsqrt)Ú	Piecewise)Ú
prettyFormÚ
stringPict)ÚKroneckerDelta)Úclebsch_gordanÚ	wigner_3jÚ	wigner_6jÚ	wigner_9j)Ú
PRECEDENCE)ÚCGÚWigner3jÚWigner6jÚWigner9jÚcg_simpc                   óœ   — e Zd ZdZdZd„ Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zd„ Zd„ Zd„ Zy)r   a¤  Class for the Wigner-3j symbols.

    Explanation
    ===========

    Wigner 3j-symbols are coefficients determined by the coupling of
    two angular momenta. When created, they are expressed as symbolic
    quantities that, for numerical parameters, can be evaluated using the
    ``.doit()`` method [1]_.

    Parameters
    ==========

    j1, m1, j2, m2, j3, m3 : Number, Symbol
        Terms determining the angular momentum of coupled angular momentum
        systems.

    Examples
    ========

    Declare a Wigner-3j coefficient and calculate its value

        >>> from sympy.physics.quantum.cg import Wigner3j
        >>> w3j = Wigner3j(6,0,4,0,2,0)
        >>> w3j
        Wigner3j(6, 0, 4, 0, 2, 0)
        >>> w3j.doit()
        sqrt(715)/143

    See Also
    ========

    CG: Clebsch-Gordan coefficients

    References
    ==========

    .. [1] Varshalovich, D A, Quantum Theory of Angular Momentum. 1988.
    Tc           	      óZ   — t        t        ||||||f«      }t        j                  | g|¢­Ž S ©N©Úmapr   r   Ú__new__)ÚclsÚj1Úm1Új2Úm2Új3Úm3Úargss           úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/quantum/cg.pyr"   zWigner3j.__new__Q   s/   € Ü”7˜R  R¨¨R°Ð4Ó5ˆÜ�|‰|˜CÐ' $Ò'Ð'ó    c                 ó    — | j                   d   S ©Nr   ©r*   ©Úselfs    r+   r$   zWigner3j.j1U   ó   € à�y‰y˜‰|Ðr,   c                 ó    — | j                   d   S ©Né   r/   r0   s    r+   r%   zWigner3j.m1Y   r2   r,   c                 ó    — | j                   d   S ©Né   r/   r0   s    r+   r&   zWigner3j.j2]   r2   r,   c                 ó    — | j                   d   S ©Né   r/   r0   s    r+   r'   zWigner3j.m2a   r2   r,   c                 ó    — | j                   d   S ©Né   r/   r0   s    r+   r(   zWigner3j.j3e   r2   r,   c                 ó    — | j                   d   S ©Né   r/   r0   s    r+   r)   zWigner3j.m3i   r2   r,   c                 ó<   — t        d„ | j                  D «       «       S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   ©Ú	is_number©Ú.0Úargs     r+   ú	<genexpr>z'Wigner3j.is_symbolic.<locals>.<genexpr>o   ó   è ø€ Ò:¨�s—}•}Ñ:ùó   ‚©Úallr*   r0   s    r+   Úis_symboliczWigner3j.is_symbolicm   ó   € äÑ:°·	±	Ô:Ó:Ð:Ð:r,   c                 óà  ‡‡— |j                  | j                  «      |j                  | j                  «      f|j                  | j                  «      |j                  | j                  «      f|j                  | j
                  «      |j                  | j                  «      ffŠd}d}dgdz  }t        d«      D ]#  Št        ˆˆfd„t        d«      D «       «      |‰<   Œ% d }t        d«      D ]é  }d }t        d«      D ]”  Š‰‰   |   }	|‰   |	j                  «       z
  }
|
dz  }|
|z
  }t        |	j                  d|z  «      Ž }	t        |	j                  d|z  «      Ž }	|€|	}Œdt        |j                  d|z  «      Ž }t        |j                  |	«      Ž }Œ– |€|}Œ¬t        |«      D ]  }t        |j                  d«      Ž }Œ t        |j                  |«      Ž }Œë t        |j                  «       Ž }|S )Nr8   r5   éÿÿÿÿr;   c              3   óJ   •K  — | ]  }‰‰   |   j                  «       –— Œ y ­wr   ©Úwidth©rG   ÚiÚjÚms     €€r+   rI   z#Wigner3j._pretty.<locals>.<genexpr>z   ó   øè ø€ Ò<¨a˜!˜A™$˜q™'Ÿ-™-Ÿ/Ñ<ùó   ƒ #ú )Ú_printr$   r%   r&   r'   r(   r)   ÚrangeÚmaxrT   r   ÚrightÚleftÚbelowÚparens©r1   Úprinterr*   ÚhsepÚvsepÚmaxwÚDrV   ÚD_rowÚsÚwdeltaÚwleftÚwrightÚ_rW   rX   s                 @@r+   Ú_prettyzWigner3j._prettyr   s×  ù€ Ø�n‰n˜TŸW™WÓ% w§~¡~°d·g±gÓ'>Ð?Ø�^‰^˜DŸG™GÓ$ g§n¡n°T·W±WÓ&=Ð>Ø�^‰^˜DŸG™GÓ$ g§n¡n°T·W±WÓ&=Ð>ð@ˆð ˆØˆØˆt�A‰vˆÜ�q“ò 	=ˆAÜÔ<´5¸³8Ô<Ó<ˆD�ŠGð	=àˆÜ�q“ò 	,ˆAØˆEÜ˜1“Xò 4�Ø�a‘D˜‘G�Ø˜a™ 1§7¡7£9Ñ,�Ø ™
�Ø %™�ä §¡¨¨F©
Ó 3Ð4�Ü §¡ s¨5¡yÓ 1Ð2�à�=Ø�EØÜ" E§K¡K°°D±Ó$9Ð:�Ü" E§K¡K°£NÐ3‘ð4ð ˆyØ�ØÜ˜4“[ò .�Ü §¡¨£Ð-‘ð.ä˜AŸG™G E›NÐ+‰Að+	,ô, ˜Ÿ™›
Ð#ˆØˆr,   c           	      óÎ   — t        |j                  | j                  | j                  | j                  | j
                  | j                  | j                  f«      }dt        |«      z  S )NzH\left(\begin{array}{ccc} %s & %s & %s \\ %s & %s & %s \end{array}\right))	r!   r\   r$   r&   r(   r%   r'   r)   Útuple©r1   rd   r*   Úlabels       r+   Ú_latexzWigner3j._latex•   sP   € Ü�G—N‘N T§W¡W¨d¯g©g°t·w±wØ—G‘G˜TŸW™W d§g¡gð%/ó 0ˆàZÜ�%‹Lñð 	r,   c                 óÈ   — | j                   rt        d«      ‚t        | j                  | j                  | j
                  | j                  | j                  | j                  «      S ©NzCoefficients must be numerical)	rN   Ú
ValueErrorr   r$   r&   r(   r%   r'   r)   ©r1   Úhintss     r+   ÚdoitzWigner3j.doit›   sD   € Ø×ÒÜÐ=Ó>Ð>Ü˜Ÿ™ $§'¡'¨4¯7©7°D·G±G¸T¿W¹WÀdÇgÁgÓNÐNr,   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_commutativer"   Úpropertyr$   r%   r&   r'   r(   r)   rN   ro   rt   rz   © r,   r+   r   r   &   s±   „ ñ&ðP €Nò(ð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñ;ó ð;ò!òFóOr,   r   c                   ó2   — e Zd ZdZed   dz
  Zd„ Zd„ Zd„ Zy)r   a÷  Class for Clebsch-Gordan coefficient.

    Explanation
    ===========

    Clebsch-Gordan coefficients describe the angular momentum coupling between
    two systems. The coefficients give the expansion of a coupled total angular
    momentum state and an uncoupled tensor product state. The Clebsch-Gordan
    coefficients are defined as [1]_:

    .. math ::
        C^{j_3,m_3}_{j_1,m_1,j_2,m_2} = \left\langle j_1,m_1;j_2,m_2 | j_3,m_3\right\rangle

    Parameters
    ==========

    j1, m1, j2, m2 : Number, Symbol
        Angular momenta of states 1 and 2.

    j3, m3: Number, Symbol
        Total angular momentum of the coupled system.

    Examples
    ========

    Define a Clebsch-Gordan coefficient and evaluate its value

        >>> from sympy.physics.quantum.cg import CG
        >>> from sympy import S
        >>> cg = CG(S(3)/2, S(3)/2, S(1)/2, -S(1)/2, 1, 1)
        >>> cg
        CG(3/2, 3/2, 1/2, -1/2, 1, 1)
        >>> cg.doit()
        sqrt(3)/2
        >>> CG(j1=S(1)/2, m1=-S(1)/2, j2=S(1)/2, m2=+S(1)/2, j3=1, m3=0).doit()
        sqrt(2)/2


    Compare [2]_.

    See Also
    ========

    Wigner3j: Wigner-3j symbols

    References
    ==========

    .. [1] Varshalovich, D A, Quantum Theory of Angular Momentum. 1988.
    .. [2] `Clebsch-Gordan Coefficients, Spherical Harmonics, and d Functions
        <https://pdg.lbl.gov/2020/reviews/rpp2020-rev-clebsch-gordan-coefs.pdf>`_
        in P.A. Zyla *et al.* (Particle Data Group), Prog. Theor. Exp. Phys.
        2020, 083C01 (2020).
    r   r5   c                 óÈ   — | j                   rt        d«      ‚t        | j                  | j                  | j
                  | j                  | j                  | j                  «      S rv   )	rN   rw   r   r$   r&   r(   r%   r'   r)   rx   s     r+   rz   zCG.doitÚ   sD   € Ø×ÒÜÐ=Ó>Ð>Ü˜dŸg™g t§w¡w°·±¸¿¹À$Ç'Á'È4Ï7É7ÓSÐSr,   c                 óø  — |j                  | j                  | j                  | j                  | j                  fd¬«      }|j                  | j
                  | j                  fd¬«      }t        |j                  «       |j                  «       «      }t        |j                  d«      Ž }t        |j                  d«      Ž }||j                  «       k(  s+t        |j                  d||j                  «       z
  z  «      Ž }||j                  «       k(  s+t        |j                  d||j                  «       z
  z  «      Ž }t        dd|z  z   «      }t        |j                  |«      Ž }t        |j                  |«      Ž }|S )Nú,)Ú	delimiterr[   ÚC)Ú
_print_seqr$   r%   r&   r'   r(   r)   r^   rT   r   r`   r_   r   ra   Úabove)r1   rd   r*   ÚbotÚtopÚpadrj   s          r+   ro   z
CG._prettyß   s1  € Ø× Ñ Ø�W‰W�d—g‘g˜tŸw™w¨¯©Ð0¸Cð !ó Aˆà× Ñ  $§'¡'¨4¯7©7Ð!3¸sÐ ÓCˆä�#—)‘)“+˜sŸy™y›{Ó+ˆÜ˜#Ÿ(™( 3›-Ð(ˆÜ˜#Ÿ(™( 3›-Ð(ˆà�c—i‘i“kÒ!Ü˜cŸi™i¨¨S°3·9±9³;Ñ->Ñ(?Ó@ÐAˆCØ�c—i‘i“kÒ!Ü˜cŸi™i¨¨S°3·9±9³;Ñ->Ñ(?Ó@ÐAˆCÜ�s˜S ™W‘}Ó%ˆÜ˜Ÿ™ ›Ð%ˆÜ˜Ÿ™ ›Ð%ˆØˆr,   c           	      óÎ   — t        |j                  | j                  | j                  | j                  | j
                  | j                  | j                  f«      }dt        |«      z  S )NzC^{%s,%s}_{%s,%s,%s,%s})	r!   r\   r(   r)   r$   r%   r&   r'   rq   rr   s       r+   rt   z	CG._latexñ   sK   € Ü�G—N‘N T§W¡W¨d¯g©g°t·w±wØ—G‘G˜TŸW™W d§g¡gð%/ó 0ˆà)¬E°%«LÑ8Ð8r,   N)	r{   r|   r}   r~   r   Ú
precedencerz   ro   rt   r�   r,   r+   r   r   ¡   s)   „ ñ5ðl ˜EÑ" QÑ&€JòTò
ó$9r,   r   c                   ó˜   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zd
„ Zd„ Zd„ Zy)r   zaClass for the Wigner-6j symbols

    See Also
    ========

    Wigner3j: Wigner-3j symbols

    c           	      óZ   — t        t        ||||||f«      }t        j                  | g|¢­Ž S r   r    )r#   r$   r&   Új12r(   rW   Új23r*   s           r+   r"   zWigner6j.__new__   s/   € Ü”7˜R  S¨"¨a°Ð5Ó6ˆÜ�|‰|˜CÐ' $Ò'Ð'r,   c                 ó    — | j                   d   S r.   r/   r0   s    r+   r$   zWigner6j.j1  r2   r,   c                 ó    — | j                   d   S r4   r/   r0   s    r+   r&   zWigner6j.j2  r2   r,   c                 ó    — | j                   d   S r7   r/   r0   s    r+   r‘   zWigner6j.j12  r2   r,   c                 ó    — | j                   d   S r:   r/   r0   s    r+   r(   zWigner6j.j3  r2   r,   c                 ó    — | j                   d   S r=   r/   r0   s    r+   rW   z
Wigner6j.j  r2   r,   c                 ó    — | j                   d   S r@   r/   r0   s    r+   r’   zWigner6j.j23  r2   r,   c                 ó<   — t        d„ | j                  D «       «       S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   rD   rF   s     r+   rI   z'Wigner6j.is_symbolic.<locals>.<genexpr>  rJ   rK   rL   r0   s    r+   rN   zWigner6j.is_symbolic  rO   r,   c                 óæ  ‡‡— |j                  | j                  «      |j                  | j                  «      f|j                  | j                  «      |j                  | j                  «      f|j                  | j
                  «      |j                  | j                  «      ffŠd}d}dgdz  }t        d«      D ]#  Št        ˆˆfd„t        d«      D «       «      |‰<   Œ% d }t        d«      D ]é  }d }t        d«      D ]”  Š‰‰   |   }	|‰   |	j                  «       z
  }
|
dz  }|
|z
  }t        |	j                  d|z  «      Ž }	t        |	j                  d|z  «      Ž }	|€|	}Œdt        |j                  d|z  «      Ž }t        |j                  |	«      Ž }Œ– |€|}Œ¬t        |«      D ]  }t        |j                  d«      Ž }Œ t        |j                  |«      Ž }Œë t        |j                  dd¬	«      Ž }|S )
Nr8   r5   rQ   r;   c              3   óJ   •K  — | ]  }‰‰   |   j                  «       –— Œ y ­wr   rS   rU   s     €€r+   rI   z#Wigner6j._pretty.<locals>.<genexpr>)  rY   rZ   r[   ú{ú}©r`   r_   )r\   r$   r(   r&   rW   r‘   r’   r]   r^   rT   r   r_   r`   ra   rb   rc   s                 @@r+   ro   zWigner6j._pretty!  sÞ  ù€ Ø�n‰n˜TŸW™WÓ% w§~¡~°d·g±gÓ'>Ð?Ø�^‰^˜DŸG™GÓ$ g§n¡n°T·V±VÓ&<Ð=Ø�^‰^˜DŸH™HÓ% w§~¡~°d·h±hÓ'?Ð@ðBˆð ˆØˆØˆt�A‰vˆÜ�q“ò 	=ˆAÜÔ<´5¸³8Ô<Ó<ˆD�ŠGð	=àˆÜ�q“ò 	,ˆAØˆEÜ˜1“Xò 4�Ø�a‘D˜‘G�Ø˜a™ 1§7¡7£9Ñ,�Ø ™
�Ø %™�ä §¡¨¨F©
Ó 3Ð4�Ü §¡ s¨5¡yÓ 1Ð2�à�=Ø�EØÜ" E§K¡K°°D±Ó$9Ð:�Ü" E§K¡K°£NÐ3‘ð4ð ˆyØ�ØÜ˜4“[ò .�Ü §¡¨£Ð-‘ð.ä˜AŸG™G E›NÐ+‰Að+	,ô, ˜Ÿ™ c°˜Ó5Ð6ˆØˆr,   c           	      óÎ   — t        |j                  | j                  | j                  | j                  | j
                  | j                  | j                  f«      }dt        |«      z  S )NzJ\left\{\begin{array}{ccc} %s & %s & %s \\ %s & %s & %s \end{array}\right\})	r!   r\   r$   r&   r‘   r(   rW   r’   rq   rr   s       r+   rt   zWigner6j._latexD  sP   € Ü�G—N‘N T§W¡W¨d¯g©g°t·x±xØ—G‘G˜TŸV™V T§X¡Xð%/ó 0ˆà\Ü�%‹Lñð 	r,   c                 óÈ   — | j                   rt        d«      ‚t        | j                  | j                  | j
                  | j                  | j                  | j                  «      S rv   )	rN   rw   r   r$   r&   r‘   r(   rW   r’   rx   s     r+   rz   zWigner6j.doitJ  sD   € Ø×ÒÜÐ=Ó>Ð>Ü˜Ÿ™ $§'¡'¨4¯8©8°T·W±W¸d¿f¹fÀdÇhÁhÓOÐOr,   N)r{   r|   r}   r~   r"   r€   r$   r&   r‘   r(   rW   r’   rN   ro   rt   rz   r�   r,   r+   r   r   ÷   s©   „ ñò(ð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñ;ó ð;ò!òFóPr,   r   c                   óÈ   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zy)r   zaClass for the Wigner-9j symbols

    See Also
    ========

    Wigner3j: Wigner-3j symbols

    c
                 ó`   — t        t        |||||||||	f	«      }
t        j                  | g|
¢­Ž S r   r    )r#   r$   r&   r‘   r(   Új4Új34Új13Új24rW   r*   s              r+   r"   zWigner9j.__new__Y  s5   € Ü”7˜R  S¨"¨b°#°s¸CÀÐCÓDˆÜ�|‰|˜CÐ' $Ò'Ð'r,   c                 ó    — | j                   d   S r.   r/   r0   s    r+   r$   zWigner9j.j1]  r2   r,   c                 ó    — | j                   d   S r4   r/   r0   s    r+   r&   zWigner9j.j2a  r2   r,   c                 ó    — | j                   d   S r7   r/   r0   s    r+   r‘   zWigner9j.j12e  r2   r,   c                 ó    — | j                   d   S r:   r/   r0   s    r+   r(   zWigner9j.j3i  r2   r,   c                 ó    — | j                   d   S r=   r/   r0   s    r+   r¤   zWigner9j.j4m  r2   r,   c                 ó    — | j                   d   S r@   r/   r0   s    r+   r¥   zWigner9j.j34q  r2   r,   c                 ó    — | j                   d   S )Né   r/   r0   s    r+   r¦   zWigner9j.j13u  r2   r,   c                 ó    — | j                   d   S )Né   r/   r0   s    r+   r§   zWigner9j.j24y  r2   r,   c                 ó    — | j                   d   S )Né   r/   r0   s    r+   rW   z
Wigner9j.j}  r2   r,   c                 ó<   — t        d„ | j                  D «       «       S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   rD   rF   s     r+   rI   z'Wigner9j.is_symbolic.<locals>.<genexpr>ƒ  rJ   rK   rL   r0   s    r+   rN   zWigner9j.is_symbolic�  rO   r,   c                 ó‚  ‡‡— |j                  | j                  «      |j                  | j                  «      |j                  | j                  «      f|j                  | j                  «      |j                  | j
                  «      |j                  | j                  «      f|j                  | j                  «      |j                  | j                  «      |j                  | j                  «      ffŠd}d}dgdz  }t        d«      D ]#  Št        ˆˆfd„t        d«      D «       «      |‰<   Œ% d }t        d«      D ]é  }d }t        d«      D ]”  Š‰‰   |   }	|‰   |	j                  «       z
  }
|
dz  }|
|z
  }t        |	j                  d|z  «      Ž }	t        |	j                  d|z  «      Ž }	|€|	}Œdt        |j                  d|z  «      Ž }t        |j                  |	«      Ž }Œ– |€|}Œ¬t        |«      D ]  }t        |j!                  d«      Ž }Œ t        |j!                  |«      Ž }Œë t        |j#                  dd¬	«      Ž }|S )
Nr8   r5   rQ   r;   c              3   óJ   •K  — | ]  }‰‰   |   j                  «       –— Œ y ­wr   rS   rU   s     €€r+   rI   z#Wigner9j._pretty.<locals>.<genexpr>‘  rY   rZ   r[   r�   rž   rŸ   )r\   r$   r(   r¦   r&   r¤   r§   r‘   r¥   rW   r]   r^   rT   r   r_   r`   ra   rb   rc   s                 @@r+   ro   zWigner9j._pretty†  s  ù€ à�^‰^Ø—‘óØ!Ÿ.™.¨¯©Ó1°7·>±>À$Ç(Á(Ó3KðMà�^‰^Ø—‘óØ!Ÿ.™.¨¯©Ó1°7·>±>À$Ç(Á(Ó3KðMà�^‰^˜DŸH™HÓ% w§~¡~°d·h±hÓ'?ÀÇÁÐPT×PVÑPVÓAWÐXðZˆð ˆØˆØˆt�A‰vˆÜ�q“ò 	=ˆAÜÔ<´5¸³8Ô<Ó<ˆD�ŠGð	=àˆÜ�q“ò 	,ˆAØˆEÜ˜1“Xò 4�Ø�a‘D˜‘G�Ø˜a™ 1§7¡7£9Ñ,�Ø ™
�Ø %™�ä §¡¨¨F©
Ó 3Ð4�Ü §¡ s¨5¡yÓ 1Ð2�à�=Ø�EØÜ" E§K¡K°°D±Ó$9Ð:�Ü" E§K¡K°£NÐ3‘ð4ð ˆyØ�ØÜ˜4“[ò .�Ü §¡¨£Ð-‘ð.ä˜AŸG™G E›NÐ+‰Að+	,ô, ˜Ÿ™ c°˜Ó5Ð6ˆØˆr,   c                 ó  — t        |j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  f	«      }dt        |«      z  S )NzZ\left\{\begin{array}{ccc} %s & %s & %s \\ %s & %s & %s \\ %s & %s & %s \end{array}\right\})r!   r\   r$   r&   r‘   r(   r¤   r¥   r¦   r§   rW   rq   rr   s       r+   rt   zWigner9j._latex¬  sc   € Ü�G—N‘N T§W¡W¨d¯g©g°t·x±xÀÇÁØ—‘˜Ÿ™ 4§8¡8¨T¯X©X°t·v±vð%?ó @ˆàlÜ�%‹Lñð 	r,   c                 ó
  — | j                   rt        d«      ‚t        | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  «	      S rv   )rN   rw   r   r$   r&   r‘   r(   r¤   r¥   r¦   r§   rW   rx   s     r+   rz   zWigner9j.doit²  s_   € Ø×ÒÜÐ=Ó>Ð>Ü˜Ÿ™ $§'¡'¨4¯8©8°T·W±W¸d¿g¹gÀtÇxÁxÐQU×QYÑQYÐ[_×[cÑ[cÐei×ekÑekÓlÐlr,   N)r{   r|   r}   r~   r"   r€   r$   r&   r‘   r(   r¤   r¥   r¦   r§   rW   rN   ro   rt   rz   r�   r,   r+   r   r   P  så   „ ñò(ð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñó ðð ñ;ó ð;ò$òLómr,   r   c                 ó`  — t        | t        «      rt        | «      S t        | t        «      rt	        | «      S t        | t
        «      r)t        | j                  D �cg c]  }t        |«      ‘Œ c}Ž S t        | t        «      r)t        t        | j                  «      | j                  «      S | S c c}w )aÇ  Simplify and combine CG coefficients.

    Explanation
    ===========

    This function uses various symmetry and properties of sums and
    products of Clebsch-Gordan coefficients to simplify statements
    involving these terms [1]_.

    Examples
    ========

    Simplify the sum over CG(a,alpha,0,0,a,alpha) for all alpha to
    2*a+1

        >>> from sympy.physics.quantum.cg import CG, cg_simp
        >>> a = CG(1,1,0,0,1,1)
        >>> b = CG(1,0,0,0,1,0)
        >>> c = CG(1,-1,0,0,1,-1)
        >>> cg_simp(a+b+c)
        3

    See Also
    ========

    CG: Clebsh-Gordan coefficients

    References
    ==========

    .. [1] Varshalovich, D A, Quantum Theory of Angular Momentum. 1988.
    )Ú
isinstancer   Ú_cg_simp_addr   Ú_cg_simp_sumr   r*   r   r   ÚbaseÚexp)ÚerH   s     r+   r   r   ¸  s‚   € ôB �!”SÔÜ˜A‹ÐÜ	�A”sÔ	Ü˜A‹ÐÜ	�A”sÔ	Ü¨Q¯V©VÖ4 c”W˜S•\Ò4Ð5Ð5Ü	�A”sÔ	Ü”7˜1Ÿ6™6“? A§E¡EÓ*Ð*àˆùò	 5s   ÁB+c                 óä  — g }g }t        | «      } | j                  D ]å  }|j                  t        «      r½t	        |t
        «      r|j                  t        |«      «       ŒCt	        |t        «      rpd}|j                  D ]&  }t	        |t
        «      r|t        |«      z  }Œ"||z  }Œ( |j                  t        «      r|j                  |«       Œ±|j                  |«       ŒÃ|j                  |«       ŒÕ|j                  |«       Œç t        |«      \  }}|j                  |«       t        |«      \  }}|j                  |«       t        |«      \  }}|j                  |«       t        |Ž t        |Ž z   S )a¢  Takes a sum of terms involving Clebsch-Gordan coefficients and
    simplifies the terms.

    Explanation
    ===========

    First, we create two lists, cg_part, which is all the terms involving CG
    coefficients, and other_part, which is all other terms. The cg_part list
    is then passed to the simplification methods, which return the new cg_part
    and any additional terms that are added to other_part
    r5   )r   r*   Úhasr   r»   r   Úappendr½   r   Ú_check_varsh_871_1Ú_check_varsh_871_2Ú_check_varsh_872_9r   )rÀ   Úcg_partÚ
other_partrH   ÚtermsÚtermÚothers          r+   r¼   r¼   å  sA  € ð €GØ€Jäˆq‹	€AØ�v‰vò #ˆØ�7‰7”2Œ;Ü˜#œsÔ#Ø×!Ñ!¤,¨sÓ"3Õ4Ü˜C¤Ô%Ø�ØŸH™Hò &�DÜ! $¬Ô,Ø¤¨dÓ!3Ñ3™à ™™ð	&ð
 —9‘9œR”=Ø—N‘N 5Õ)à×%Ñ% eÕ,à—‘˜sÕ#à×Ñ˜cÕ"ð%#ô( (¨Ó0�N€GˆUØ×Ñ�eÔÜ'¨Ó0�N€GˆUØ×Ñ�eÔÜ'¨Ó0�N€GˆUØ×Ñ�eÔÜ�ˆ=œ3 
Ð+Ñ+Ð+r,   c                 óä   — t        t        d«      \  }}}}|t        |||d||«      z  }d|z  dz   t        |d«      z  }|t	        |«      z  }d|z  dz   }||z   }	t        ||||| ||||f||f||	«	      S )N)ÚaÚalphaÚbÚltr   r8   r5   )r!   r   r   r   ÚabsÚ_check_cg_simp)
Ú	term_listrÍ   rÎ   rÏ   rÐ   ÚexprÚsimpÚsignÚ
build_exprÚ
index_exprs
             r+   rÄ   rÄ     s—   € äœ$Ð 9Ó:�O€A€uˆa�ØŒb��E˜1˜a  EÓ*Ñ*€DØˆa‰C�!‰G”^ A qÓ)Ñ)€DØŒc�"‹g‰:€DØ�1‘�q‘€JØ�U‘€JÜ˜$  d¨B°	¸A¸uÀaÈÐ;LÈqÐRSÈfÐV`ÐblÓmÐmr,   c                 ó
  — t        t        d«      \  }}}}|t        |||| |d«      z  }t        d|z  dz   «      t	        |d«      z  }d||z
  z  |z  t        |«      z  }d|z  dz   }||z   }	t        ||||| ||||f||f||	«	      S )N)rÍ   rÎ   ÚcrÐ   r   r8   r5   rQ   )r!   r   r   r   r   rÑ   rÒ   )
rÓ   rÍ   rÎ   rÚ   rÐ   rÔ   rÕ   rÖ   r×   rØ   s
             r+   rÅ   rÅ     s¬   € äœ$Ð 9Ó:�O€A€uˆa�ØŒb��E˜1˜u˜f a¨Ó+Ñ+€DÜ��!‘�a‘‹=œ¨¨1Ó-Ñ-€DØ�!�e‘)Ñ˜RÑ¤ B£Ñ'€DØ�1‘�q‘€JØ�U‘€JÜ˜$  d¨B°	¸A¸uÀaÈÐ;LÈqÐRSÈfÐV`ÐblÓmÐmr,   c                 ó¦  — t        t        d«      \	  }}}}}}}}}	|	t        ||||||«      dz  z  }
t        j                  }|	t        |	«      z  }t        ||z
  «      }t        ||z   «      }||z   dz   t        |||kD  fdt        ||«      f|||kD  f«      z
  }||z   |z
  }t        |
|||	| |||||||	f||||f||«	      \  } }t        ||z
  «      }||z   }|dz   |z
  ||z   dz   z  }||z
  ||z   z  |z   |z   }t        |
|||	| |||||||	f||||f||«	      \  } }t        ||||||«      t        ||||||«      z  }
t        ||«      t        ||«      z  }t        j                  }t        ||z
  «      }t        ||z   «      }||z   dz   t        |||kD  fdt        ||«      f|||kD  f«      z
  }||z   |z
  }t        |
||t        j                  | ||||||||f||||||f||«	      \  } }t        ||z
  «      }||z   }|dz   |z
  ||z   dz   z  }||z
  ||z   z  |z   |z   }t        |
||t        j                  | ||||||||f||||||f||«	      \  } }| ||z   |z   fS )N)	rÍ   rÎ   ÚalphaprÏ   ÚbetaÚbetaprÚ   ÚgammarÐ   r8   r5   r   )
r!   r   r   r
   ÚOnerÑ   r   r	   rÒ   r   )rÓ   rÍ   rÎ   rÜ   rÏ   rÝ   rÞ   rÚ   rß   rÐ   rÔ   rÕ   rÖ   ÚxÚyr×   rØ   Úother1Úother2Úother3Úother4s                        r+   rÆ   rÆ   )  s�  € ä58¼ð @Jó 6KÑ2€A€uˆf�a˜˜u a¨°ð
 Œb��E˜1˜d A uÓ-¨qÑ0Ñ0€DÜ�5‰5€DØŒc�"‹g‰:€DÜˆA�‰E‹
€AÜˆE�D‰LÓ€AØ�Q‘˜‘œY¨¨1¨q©5 z°A´r¸!¸Q³x°=À1ÀaÈ!ÁeÀ*ÓMÑM€JØ�Q‘˜‘€JÜ& t¨T°4¸¸YÈÈEÐSTÐVZÐ\]Ð_dÐfhÐHiÐlmÐotÐvwÐy}Ðk~ð  AKð  MWó  XÑ€Iˆvô 	ˆA�‰E‹
€AØ	ˆA‰€AØ�a‘%˜!‘)˜a !™e a™iÑ(€JØ�a‘%˜!˜a™%‘ 1Ñ$ uÑ,€JÜ& t¨T°4¸¸YÈÈEÐSTÐVZÐ\]Ð_dÐfhÐHiÐlmÐotÐvwÐy}Ðk~ð  AKð  MWó  XÑ€Iˆvô
 ˆa�˜˜4  EÓ*¬2¨a°¸¸EÀ1ÀeÓ+LÑL€DÜ˜% Ó(¬¸¸eÓ)DÑD€DÜ�5‰5€DÜˆA�‰E‹
€AÜˆE�D‰LÓ€AØ�Q‘˜‘œY¨¨1¨q©5 z°A´r¸!¸Q³x°=À1ÀaÈ!ÁeÀ*ÓMÑM€JØ�Q‘˜‘€JÜ& t¨T°4¼¿¹À	ÈAÈuÐV\Ð^_ÐaeÐglÐnoÐqvÐKwÐz{ð  ~Cð  EKð  MNð  PTð  V[ð  z\ð  ^hð  jtó  uÑ€Iˆvô 	ˆA�‰E‹
€AØ	ˆA‰€AØ�a‘%˜!‘)˜a !™e a™iÑ(€JØ�a‘%˜!˜a™%‘ 1Ñ$ uÑ,€JÜ& t¨T°4¼¿¹À	ÈAÈuÐV\Ð^_ÐaeÐglÐnoÐqvÐKwÐz{ð  ~Cð  EKð  MNð  PTð  V[ð  z\ð  ^hð  jtó  uÑ€Iˆvà�f˜v‘o¨Ñ.Ð.Ð.r,   c	           
      óT  — d}	d}
|
t        |«      k  �r~t        ||
   | t        |«      «      }|€|
dz  }
Œ0|j                  |«      j                  s|
dz  }
ŒQ|D �cg c]	  }|||   f‘Œ }}dg|j                  |«      z  }t	        |
t        |«      «      D �]	  }t        ||   | j                  |«      t        |«      t        |«      z
  |j                  |«      |j                  |«      f¬«      }|€Œ]|j                  |«      j                  |«      j                  sŒˆ|| j                  |d«      j                  |«      j                  |«      |j                  |«      |j                  |«      j                  |«      f||j                  |«      j                  |«      <   �Œ t        d„ |D «       «      sÊt        |D �cg c]  }t        |d   «      ‘Œ c}Ž }|D �cg c]  }|d   ‘Œ	 }}|j                  «        |j                  «        |D �cg c]  }|j                  |«      ‘Œ c} |D ]7  }t        |d   «      |kD  sŒ|j                  |d   ||d   z  z
  |d   z  «       Œ9 |	|||z  j                  |«      z  z  }	n|
dz  }
|
t        |«      k  r�Œ~||	fS c c}w c c}w c c}w c c}w )a½   Checks for simplifications that can be made, returning a tuple of the
    simplified list of terms and any terms generated by simplification.

    Parameters
    ==========

    expr: expression
        The expression with Wild terms that will be matched to the terms in
        the sum

    simp: expression
        The expression with Wild terms that is substituted in place of the CG
        terms in the case of simplification

    sign: expression
        The expression with Wild terms denoting the sign that is on expr that
        must match

    lt: expression
        The expression with Wild terms that gives the leading term of the
        matched expr

    term_list: list
        A list of all of the terms is the sum to be simplified

    variables: list
        A list of all the variables that appears in expr

    dep_variables: list
        A list of the variables that must match for all the terms in the sum,
        i.e. the dependent variables

    build_index_expr: expression
        Expression with Wild terms giving the number of elements in cg_index

    index_expr: expression
        Expression with Wild terms giving the index terms have when storing
        them to cg_index

    r   Nr5   )rÖ   c              3   ó$   K  — | ]  }|d u –— Œ
 y ­wr   r�   )rG   rV   s     r+   rI   z!_check_cg_simp.<locals>.<genexpr>’  s   è ø€ Ò/ �1˜”9Ñ/ùs   ‚r8   r;   )ÚlenÚ	_check_cgÚsubsrE   r]   ÚanyÚminrÑ   ÚsortÚreverseÚpoprÃ   )rÔ   rÕ   rÖ   rÐ   rÓ   Ú	variablesÚdep_variablesÚbuild_index_exprrØ   rÈ   rV   Úsub_1rá   Úsub_depÚcg_indexrW   Úsub_2rÊ   Úmin_ltÚindicess                       r+   rÒ   rÒ   V  så  € ðR €JØ	€AØ
Œc�)‹nÓ
Ü˜) A™,¨¬c°)«nÓ=ˆØˆ=Ø�‰FˆAØØ×$Ñ$ UÓ+×5Ò5Ø�‰FˆAØØ*7Ö8 Q�A�u˜Q‘x’=Ð8ˆÐ8Ø�6Ð*×/Ñ/°Ó6Ñ6ˆÜ�qœ#˜i›.Ó)ó 	[ˆAÜ˜i¨™l¨D¯I©I°gÓ,>ÄÀIÃÔQTÐUbÓQcÑ@cÐko×ktÑktÐuzÓk{ð  ~B÷  ~Gñ  ~Gð  HOó  ~Pð  kQô  RˆEØˆ}ØØ—?‘? 7Ó+×0Ñ0°Ó7×AÒAØØ=>ÀÇ	Á	È"ÈaÓ@P×@UÑ@UÐV]Ó@^×@cÑ@cÐdiÓ@jÐln×lsÑlsÐtyÓlzð  }A÷  }Fñ  }Fð  GNó  }O÷  }Tñ  }Tð  UZó  }[ð  >[ˆH�Z—_‘_ WÓ-×2Ñ2°5Ó9Ó:ð	[ô Ñ/ hÔ/Ô/Ü°XÖ?¨TœC  Q¡�LÒ?Ð@ˆFØ,4Ö5 D˜˜Q›Ð5ˆGÐ5Ø�L‰LŒNØ�O‰OÔØ(/Ö1 1ˆi�m‰m˜AÕÓ1Ø ò K�Ü�t˜A‘w“< &Ó(Ø×$Ñ$ t¨A¡w°¸¸Q¹±Ñ'?ÀÀaÁÑ&HÕJðKð ˜& $ t¡)×!1Ñ!1°%Ó!8Ñ8Ñ8‰Jà�‰FˆAð9 Œc�)‹nÔ
ð: �jÐ Ð ùò+ 9ùò @ùÚ5ùò 2s   ÁJÆ<JÇJ ÈJ%Nc                 ó¼   — | j                  |«      }|€y|�6t        |t        «      st        d«      ‚|d   |d   j	                  |«      k(  syt        |«      |k(  r|S y)z2Checks whether a term matches the given expressionNzsign must be a tupler   r5   )Úmatchr»   rq   Ú	TypeErrorrë   ré   )Úcg_termrÔ   ÚlengthrÖ   Úmatchess        r+   rê   rê   ¡  sh   € ð �m‰m˜DÓ!€GØ€ØØÐÜ˜$¤Ô&ÜÐ2Ó3Ð3Ø�A‰w˜4 ™7Ÿ.™.¨Ó1Ò1ØÜ
ˆ7ƒ|�vÒØˆð r,   c                 óH   — t        | «      } t        | «      } t        | «      } | S r   )Ú_check_varsh_sum_871_1Ú_check_varsh_sum_871_2Ú_check_varsh_sum_872_4)rÀ   s    r+   r½   r½   °  s%   € Ü˜qÓ!€AÜ˜qÓ!€AÜ˜qÓ!€AØ€Hr,   c                 ó
  — t        d«      }t        d«      }t        d«      }| j                  t        t	        |||d||«      || |f«      «      }|�2t        |«      dk(  r$d|z  dz   t        |d«      z  j                  |«      S | S )NrÍ   rÎ   rÏ   r   r8   r5   )r   r   rû   r   r   ré   r   rë   )rÀ   rÍ   rÎ   rÏ   rû   s        r+   r  r  ·  s„   € ÜˆS‹	€AÜ�GÓ€EÜˆS‹	€AØ�G‰G”Cœ˜1˜e Q¨¨1¨eÓ4°u¸q¸bÀ!°nÓEÓF€EØÐœS ›Z¨1š_Ø�1‘�q‘œ.¨¨AÓ.Ñ.×4Ñ4°UÓ;Ð;Ø€Hr,   c                 ó0  — t        d«      }t        d«      }t        d«      }| j                  t        d||z
  z  t	        |||| |d«      z  || |f«      «      }|�;t        |«      dk(  r-t        d|z  dz   «      t        |d«      z  j                  |«      S | S )NrÍ   rÎ   rÚ   rQ   r   r8   r5   )	r   r   rû   r   r   ré   r   r   rë   )rÀ   rÍ   rÎ   rÚ   rû   s        r+   r  r  Á  sœ   € ÜˆS‹	€AÜ�GÓ€EÜˆS‹	€AØ�G‰GÜˆR�1�u‘9Ñœb  E¨1¨u¨f°a¸Ó;Ñ;¸eÀaÀRÈ¸^ÓLóN€EàÐœS ›Z¨1š_Ü�Q�q‘S˜1‘W“œn¨Q°Ó2Ñ2×8Ñ8¸Ó?Ð?Ø€Hr,   c           	      óB  — t        d«      }t        d«      }t        d«      }t        d«      }t        d«      }t        d«      }t        d«      }t        d«      }t        ||||||«      }	t        ||||||«      }
| j                  t	        |	|
z  || |f|| |f«      «      }|�6t        |«      d	k(  r(t        ||«      t        ||«      z  j                  |«      S | j                  t	        |	d
z  || |f|| |f«      «      }|�t        |«      dk(  rt        j                  S | S )NrÎ   rÝ   rÍ   rÏ   rÚ   Úcprß   Úgammapr¯   r8   r>   )
r   r   r   rû   r   ré   r   rë   r
   rà   )rÀ   rÎ   rÝ   rÍ   rÏ   rÚ   r  rß   r  Úcg1Úcg2Úmatch1Úmatch2s                r+   r  r  Ì  s  € Ü�GÓ€EÜ�6‹?€DÜˆS‹	€AÜˆS‹	€AÜˆS‹	€AÜ	ˆd‹€BÜ�‹M€EÜ�(‹^€FÜ
ˆQ��q˜$  5Ó
)€CÜ
ˆQ��q˜$  FÓ
+€CØ�W‰W”S˜˜S™ 5¨1¨"¨a .°4¸!¸¸Q°-Ó@ÓA€FØÐœc &›k¨QÒ.Ü˜q "Ó%¤n°U¸FÓ&CÑC×IÑIÈ&ÓQÐQØ�W‰W”S˜˜a™ %¨!¨¨Q °$¸¸¸A°Ó?Ó@€FØÐœc &›k¨QÒ.Ü�u‰uˆØ€Hr,   c                 ó4  — t        | t        «      r| fddfS g }d}t        | t        t        f«      st	        d«      ‚t        | t        «      ro| j
                  j                  rY| j
                  j                  r=t        | j
                  «      D �cg c]  }|j                  | j                  «      ‘Œ c} n| fddfS t        | t        «      rI| j                  D ])  }t        |t        «      r|j                  |«       Œ%||z  }Œ+ |||t        |«      z  fS y c c}w )Nr5   z term must be CG, Add, Mul or Pow)r»   r   r   r   ÚNotImplementedErrorr¿   rE   r]   rÃ   r¾   r*   rÑ   )rÊ   ÚcgÚcoeffrn   rH   s        r+   Ú_cg_listr  à  sï   € Ü�$œÔØˆw˜˜1ˆ}ÐØ	€BØ€EÜ�dœS¤#˜JÔ'Ü!Ð"DÓEÐEÜ�$œÔ §¡×!3Ò!3Ø�8‰8×ÒÜ,1°$·(±(«OÖ= qˆb�i‰i˜Ÿ	™	Õ"Ô=à�7˜A˜q�=Ð Ü�$œÔØ—9‘9ò 	ˆCÜ˜#œrÔ"Ø—	‘	˜#•à˜‘‘ð		ð
 �5˜%¤ E£
Ñ*Ð*Ð*ð ùò >s   Â"Dr   )7r~   Úsympy.concrete.summationsr   Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.functionr   Úsympy.core.mulr   Úsympy.core.powerr   Úsympy.core.relationalr	   Úsympy.core.singletonr
   Úsympy.core.symbolr   r   Úsympy.core.sympifyr   Ú(sympy.functions.elementary.miscellaneousr   Ú$sympy.functions.elementary.piecewiser   Ú sympy.printing.pretty.stringpictr   r   Ú(sympy.functions.special.tensor_functionsr   Úsympy.physics.wignerr   r   r   r   Úsympy.printing.precedencer   Ú__all__r   r   r   r   r   r¼   rÄ   rÅ   rÆ   rÒ   rê   r½   r  r  r  r  r�   r,   r+   ú<module>r#     sÉ   ðñ
 #å )Ý Ý  Ý &Ý Ý  Ý $Ý "ß -Ý &Ý 9Ý :ß Cå Cß PÓ PÝ 0ò€ôxOˆtô xOôvS9ˆô S9ôlVPˆtô VPôremˆtô emòP*òZ+,ò\nònò*/òZH!óVòòòòó(+r,   