Ë
    óÿæiQ.  ã                  óø   — d dl mZ d dlmZ d dlmZ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 d d	lmZmZmZ d d
lmZ erd dlmZ  G d„ de«      Z G d„ dee«      Z G d„ dee«      Z  G d„ de«      Z!y)é    )Úannotations)ÚTYPE_CHECKING)ÚsimplifyÚtrigsimp)Úcall_highest_priorityÚ
_sympifyit)Ú	StdFactKB©Údiff)ÚIntegral)Úfactor)ÚSÚAddÚMul)ÚExpr)Ú
BaseVectorc                  óê  — e Zd ZU dZded<    ed«      d„ «       Z ed«      d„ «       Z ed«      d	„ «       Z ed
«      d„ «       Z	 e
de«       ed«      d„ «       «       Z e
de«       ed«      d„ «       «       Zd„ Z e
de«       ed«      d„ «       «       Z ed«      d„ «       Zd$d„Zexj                  ej"                  j                  z  c_        eZd„ Zexj                  ej                  z  c_        d„ Zexj                  ej                  z  c_        d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zexj                  ej                  z  c_        d%d „Zd!„ Z d"„ Z!e!xj                  e"j                  z  c_        d#„ Z#y)&ÚBasisDependentzÒ
    Super class containing functionality common to vectors and
    dyadics.
    Named so because the representation of these quantities in
    sympy.vector is dependent on the basis they are expressed in.
    ÚBasisDependentZeroÚzeroÚ__radd__c                ó&   — | j                  | |«      S ©N©Ú	_add_func©ÚselfÚothers     úp/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/sympy/vector/basisdependent.pyÚ__add__zBasisDependent.__add__   s   € à�~‰~˜d EÓ*Ð*ó    r    c                ó&   — | j                  || «      S r   r   r   s     r   r   zBasisDependent.__radd__   s   € à�~‰~˜e TÓ*Ð*r!   Ú__rsub__c                ó(   — | j                  | | «      S r   r   r   s     r   Ú__sub__zBasisDependent.__sub__#   s   € à�~‰~˜d U FÓ+Ð+r!   r%   c                ó(   — | j                  ||  «      S r   r   r   s     r   r#   zBasisDependent.__rsub__'   s   € à�~‰~˜e d UÓ+Ð+r!   r   Ú__rmul__c                ó&   — | j                  | |«      S r   ©Ú	_mul_funcr   s     r   Ú__mul__zBasisDependent.__mul__+   s   € ð �~‰~˜d EÓ*Ð*r!   r+   c                ó&   — | j                  || «      S r   r)   r   s     r   r'   zBasisDependent.__rmul__0   s   € ð �~‰~˜e TÓ*Ð*r!   c                óB   — | j                  t        j                  | «      S r   )r*   r   ÚNegativeOne©r   s    r   Ú__neg__zBasisDependent.__neg__5   s   € Ø�~‰~œaŸm™m¨TÓ2Ð2r!   Ú__rtruediv__c                ó$   — | j                  |«      S r   )Ú_div_helperr   s     r   Ú__truediv__zBasisDependent.__truediv__8   s   € ð ×Ñ Ó&Ð&r!   r4   c                ó   — t        d«      S )NzInvalid divisor for division)Ú	TypeErrorr   s     r   r1   zBasisDependent.__rtruediv__=   s   € äÐ7Ó8Ð8r!   Nc                ó¦   — ||||||dœ}| j                   }	| j                  j                  «       D ]  \  }
}|	 |j                  |fi |¤Ž|
z  z  }	Œ  |	S )z…
        Implements the SymPy evalf routine for this quantity.

        evalf's documentation
        =====================

        )ÚsubsÚmaxnÚchopÚstrictÚquadÚverbose)r   Ú
componentsÚitemsÚevalf)r   Únr8   r9   r:   r;   r<   r=   ÚoptionsÚvecÚkÚvs               r   r@   zBasisDependent.evalfA   sa   € ð  t°DÀ6Ø wñ0ˆà�i‰iˆØ—O‘O×)Ñ)Ö+‰DˆAˆqØ�7�1—7‘7˜1Ñ( Ñ(¨1Ñ,Ñ,‰Cð ,àˆ
r!   c           	     óž   — | j                   j                  «       D ��cg c]  \  }}t        |fi |¤Ž|z  ‘Œ }}} | j                  |Ž S c c}}w )zŽ
        Implements the SymPy simplify routine for this quantity.

        simplify's documentation
        ========================

        )r>   r?   Úsimpr   )r   ÚkwargsrD   rE   Úsimp_componentss        r   r   zBasisDependent.simplifyT   sZ   € ð $(§?¡?×#8Ñ#8Ô#:ô<Ù#:™4˜1˜aô   Ñ, VÑ,¨qÓ0Ø#:ð 	ñ <àˆt�~‰~˜Ð/Ð/ùó<ó   žA	c           	     óž   — | j                   j                  «       D ��cg c]  \  }}t        |fi |¤Ž|z  ‘Œ }}} | j                  |Ž S c c}}w )z�
        Implements the SymPy trigsimp routine, for this quantity.

        trigsimp's documentation
        ========================

        )r>   r?   Útsimpr   )r   ÚoptsrD   rE   Útrig_componentss        r   r   zBasisDependent.trigsimpb   sZ   € ð $(§?¡?×#8Ñ#8Ô#:ô<Ù#:™4˜1˜aô ! Ñ+ dÑ+¨aÓ/Ø#:ð 	ñ <àˆt�~‰~˜Ð/Ð/ùó<rJ   c                ó&   —  | j                   di |¤ŽS ©N© )r   )r   rH   s     r   Ú_eval_simplifyzBasisDependent._eval_simplifyp   s   € Øˆt�}‰}Ñ&˜vÑ&Ð&r!   c                ó&   —  | j                   di |¤ŽS rP   )r   )r   rM   s     r   Ú_eval_trigsimpzBasisDependent._eval_trigsimps   s   € Øˆt�}‰}Ñ$˜tÑ$Ð$r!   c                ó$   — | j                  |«      S r   r
   )r   Úwrts     r   Ú_eval_derivativezBasisDependent._eval_derivativev   s   € Ø�y‰y˜‹~Ðr!   c           	     ó¤   — | j                   j                  «       D ��cg c]  \  }}t        |g|¢­i |¤Ž|z  ‘Œ }}} | j                  |Ž S c c}}w r   )r>   r?   r   r   )r   ÚsymbolsÚassumptionsrD   rE   Úintegral_componentss         r   Ú_eval_IntegralzBasisDependent._eval_Integraly   sa   € à+/¯?©?×+@Ñ+@Ô+BôDÙ+B¡4 1 aô  (¨ÐC¨GÒC°{ÑCÀaÓGØ+Bð 	ñ Dàˆt�~‰~Ð2Ð3Ð3ùóDó   žAc                ó&   — | t         j                  fS )z‚
        Returns the expression as a tuple wrt the following
        transformation -

        expression -> a/b -> a, b

        ©r   ÚOner/   s    r   Úas_numer_denomzBasisDependent.as_numer_denom~   s   € ð ”Q—U‘Uˆ{Ðr!   c           	     ó¤   — | j                   j                  «       D ��cg c]  \  }}t        |g|¢­i |¤Ž|z  ‘Œ }}} | j                  |Ž S c c}}w )zµ
        Implements the SymPy factor routine, on the scalar parts
        of a basis-dependent expression.

        factor's documentation
        ========================

        )r>   r?   Úfctrr   )r   ÚargsrH   rD   rE   Úfctr_componentss         r   r   zBasisDependent.factorˆ   s_   € ð $(§?¡?×#8Ñ#8Ô#:ô<Ù#:™4˜1˜aô   Ð3 DÒ3¨FÑ3°aÓ7Ø#:ð 	ñ <àˆt�~‰~˜Ð/Ð/ùó<r]   c                ó&   — t         j                  | fS )z1Efficiently extract the coefficient of a product.r_   )r   Úrationals     r   Úas_coeff_MulzBasisDependent.as_coeff_Mul—   s   € ä—‘�tˆ}Ðr!   c                óD   ‡ — dt        ˆ fd„‰ j                  D «       «      fS )z3Efficiently extract the coefficient of a summation.r   c              3  óB   •K  — | ]  }|‰j                   |   z  –— Œ y ­wr   )r>   )Ú.0Úxr   s     €r   Ú	<genexpr>z.BasisDependent.as_coeff_add.<locals>.<genexpr>�   s    øè ø€ ÐH¹°1˜˜DŸO™O¨AÑ.Õ.¹ùs   ƒ)Útupler>   )r   Údepss   ` r   Úas_coeff_addzBasisDependent.as_coeff_add›   s   ø€ à”%ÓH¸¿ºÓHÓHÐHÐHr!   c           	     óè   — |D ]  }t        |t        «      sŒt        d«      ‚ | j                  j	                  «       D ��cg c]  \  }}t        |g|¢­i |¤Ž|z  ‘Œ }}} | j                  |Ž S c c}}w )z�
        Implements the SymPy diff routine, for vectors.

        diff's documentation
        ========================

        zInvalid arg for differentiation)Ú
isinstancer   r6   r>   r?   Údfr   )r   rd   rH   rl   rD   rE   Údiff_componentss          r   r   zBasisDependent.diffŸ   s�   € ó ˆAÜ˜!œ^Õ,ÜÐ AÓBÐBð ð $(§?¡?×#8Ñ#8Ô#:ô<Ù#:™4˜1˜aô ˜aÐ1 $Ò1¨&Ñ1°AÓ5Ø#:ð 	ñ <àˆt�~‰~˜Ð/Ð/ùó<s   Á A.c                óœ   — | j                   D �cg c]$  } | j                   |   j                  di |¤Ž|z  ‘Œ& }} | j                  |Ž S c c}w )z(Calls .doit() on each term in the DyadicrQ   )r>   Údoitr   )r   Úhintsrl   Údoit_componentss       r   rv   zBasisDependent.doit°   s\   € ð %)§O¢Oó5Ù$3˜qð 3˜4Ÿ?™?¨1Ñ-×2Ñ2Ñ;°UÑ;¸aÓ?Ø$3ð 	ð 5àˆt�~‰~˜Ð/Ð/ùò5s   �)A	)é   Néd   FFNF)F)$Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r    r   r%   r#   r   ÚNotImplementedr+   r'   r0   r4   r1   r@   r   rA   r   rG   r   rL   rR   rT   rW   r\   ra   r   rc   rh   rp   r   rs   rv   rQ   r!   r   r   r      s¾  … ñð Óá˜:Ó&ñ+ó 'ð+ñ ˜9Ó%ñ+ó &ð+ñ ˜:Ó&ñ,ó 'ð,ñ ˜9Ó%ñ,ó &ð,ñ �˜Ó(Ù˜:Ó&ñ+ó 'ó )ð+ñ �˜Ó(Ù˜9Ó%ñ+ó &ó )ð+ò3ñ �˜Ó(Ù˜>Ó*ñ'ó +ó )ð'ñ ˜=Ó)ñ9ó *ð9óð 
‡M‚M�T—Z‘Z×'Ñ'Ñ'…Mà€Aò
0ð ×Ò˜Ÿ™Ñ$Õò
0ð ×Ò˜Ÿ™Ñ%Õò'ò%òò4ò
ò0ð ‡N‚N�d—l‘lÑ"…NóòIò0ð 	‡L‚L�B—J‘JÑ…Ló0r!   r   c                  ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚBasisDependentAddzt
    Denotes sum of basis dependent quantities such that they cannot
    be expressed as base or Mul instances.
    c                ól  •— i }|D ]É  }t        || j                  «      skt        |t        «      r | j                  |j                  Ž }nAt        |t
        «      r | j                  |j                  Ž }nt        t        |«      dz   «      ‚|| j                  k(  rŒ”|j                  D ]'  }|j                  |d«      |j                  |   z   ||<   Œ) ŒË t        |j                  «       «      }|D ]  }||   dk(  sŒ||= Œ t        |«      dk(  r| j                  S |D �cg c]
  }|||   z  ‘Œ }}t        ‰
| �@  | g|¢­i |¤Ž}t        |t        «      r | j                  |j                  Ž S ddi}	t#        |	«      |_        ||_        t        |j                  «       «      d   j(                  |_        |S c c}w )Nz  cannot be interpreted correctlyr   ÚcommutativeT)rr   Ú
_expr_typer   r*   rd   r   r   r6   Ústrr   r>   ÚgetÚlistÚkeysÚlenÚsuperÚ__new__r	   Ú_assumptionsÚ_componentsÚ_sys)Úclsrd   rB   r>   Úargrl   ÚtempÚnewargsÚobjrZ   Ú	__class__s             €r   rŒ   zBasisDependentAdd.__new__½   sŸ  ø€ Øˆ
ó ˆCÜ˜c 3§>¡>Ô2Ü˜c¤3Ô'Ø'˜#Ÿ-™-¨#¯(©(Ð4‘CÜ ¤SÔ)Ø'˜#Ÿ-™-¨#¯(©(Ð4‘Cä#¤C¨£HØ$Fñ%Gó Hð Hð �c—h‘hŠØà—^”^�Ø *§¡¨q°!Ó 4°s·~±~ÀaÑ7HÑ H�
˜1’ñ $ð ô  �J—O‘OÓ%Ó&ˆÛˆAØ˜!‰} Ó!Ø˜q‘Mð ô
 ˆz‹?˜aÒØ—8‘8ˆOñ /9Ó9©j¨�1�z !‘}Ó$¨jˆÐ9Ü‰g‰o˜cÐ7 GÒ7¨wÑ7ˆÜ�cœ3ÔØ �3—=‘= #§(¡(Ð+Ð+Ø$ dÐ+ˆÜ$ [Ó1ˆÔØ$ˆŒÜ˜Ÿ™Ó*Ó+¨QÑ/×4Ñ4ˆŒàˆ
ùò :s   ÄF1)r{   r|   r}   r~   rŒ   Ú__classcell__©r•   s   @r   r‚   r‚   ·   s   ø„ ñ÷
'ð 'r!   r‚   c                  ó>   ‡ — e Zd ZdZd„ Zd„ Zeˆ fd„«       Zd„ Zˆ xZ	S )ÚBasisDependentMulzJ
    Denotes product of base- basis dependent quantity with a scalar.
    c                ó*   —  | j                   |i |¤Ž}|S r   )Ú_new)r�   rd   rB   r”   s       r   rŒ   zBasisDependentMul.__new__ì   s   € Øˆc�h‰h˜Ð( Ñ(ˆØˆ
r!   c                ó   —  t        | «      |Ž S r   )Útype)r   rd   s     r   Ú_new_rawargszBasisDependentMul._new_rawargsð   s   € ð Œt�D‹z˜4Ð Ð r!   c                ó  •— ddl m}m}m}m} d}t
        j                  }d}	g }
|D ]¾  }t        || j                  «      r|dz  }d}	Œ!|t
        j                  k(  rd}	Œ7t        || j                  | j                  f«      r!|dz  }|j                  }||j                  z  }Œzt        || j                  «      r|dz  }|}Œ˜t        |||||f«      r|
j                  |«       Œº||z  }ŒÀ |dkD  rt!        d«      ‚|dk(  rt#        |i |¤ŽS |	r| j$                  S t        | j                  «      r8|j&                  D �cg c]  }| j                  ||«      ‘Œ }} | j                  |Ž S t)        ‰| �T  | ||j                  g|
¢­i |¤Ž}t        |t,        «      r | j                  |j&                  Ž S |j                  |_        ||_        ddi}t/        |«      |_        |j                  |i|_        |j                  j4                  |_        |S c c}w )Nr   )ÚCrossÚDotÚCurlÚGradientFé   TzInvalid multiplicationr„   )Úsympy.vectorr    r¡   r¢   r£   r   r`   rr   Ú
_zero_funcÚZeroÚ
_base_funcr*   Ú_base_instanceÚ_measure_numberr   ÚappendÚ
ValueErrorr   r   rd   r‹   rŒ   r   r	   r�   rŽ   r�   )r�   rd   rB   r    r¡   r¢   r£   ÚcountÚmeasure_numberÚzeroflagÚ
extra_argsr‘   Úexprrl   r“   r”   rZ   r•   s                    €r   r›   zBasisDependentMul._newö   s  ø€ ç;Ó;ØˆÜŸ™ˆØˆØˆ
ó
 ˆCÜ˜#˜sŸ~™~Ô.Ø˜‘
�Ø‘ØœŸ™’Ø‘Ü˜C #§.¡.°#·-±-Ð!@ÔAØ˜‘
�Ø×)Ñ)�Ø #×"5Ñ"5Ñ5‘Ü˜C §¡Ô/Ø˜‘
�Ø‘Ü˜C %¨¨d°HÐ!=Ô>Ø×!Ñ! #Õ&à #Ñ%‘ð! ð$ �1Š9ÜÐ5Ó6Ð6Ø�aŠZÜ˜Ð( Ñ(Ð(áØ—8‘8ˆOô �d˜CŸM™MÔ*à ŸIšIó'Ù%�qð —}‘} ^°QÕ7Ø%ð ð 'à �3—=‘= 'Ð*Ð*ä‰g‰o˜c >Ø"×1Ñ1ð)à)ò)ð !(ñ)ˆô �cœ3ÔØ �3—=‘= #§(¡(Ð+Ð+Ø!×0Ñ0ˆÔØ,ˆÔØ$ dÐ+ˆÜ$ [Ó1ˆÔØ×.Ñ.°Ð?ˆŒØ×&Ñ&×+Ñ+ˆŒàˆ
ùò#'s   Ä9Hc                ó¢   — |j                  | j                  «      }d|v sd|v sd|v rd|z   dz   }|dz   |j                  | j                  «      z   S )NÚ(Ú-Ú+Ú)Ú*)Ú_printrª   r©   )r   ÚprinterÚmeasure_strs      r   Ú	_sympystrzBasisDependentMul._sympystr1  s[   € Ø—n‘n T×%9Ñ%9Ó:ˆØ�;Ñ #¨Ñ"4Ø�{Ñ"Ø Ñ+¨cÑ1ˆKØ˜SÑ  7§>¡>°$×2EÑ2EÓ#FÑFÐFr!   )
r{   r|   r}   r~   rŒ   rž   Úclassmethodr›   r»   r–   r—   s   @r   r™   r™   ç   s-   ø„ ñòò!ð ó8ó ð8ötGr!   r™   c                  óä   ‡ — e Zd ZU dZi Zded<   ded<   ˆ fd„Zd„ Z ed«      d	„ «       Z	e	Z
 ed
«      d„ «       Z ed«      d„ «       Z ed«      d„ «       Z ed«      d„ «       Zd„ Zd„ Zd„ Zˆ xZS )r   z:
    Class to denote a zero basis dependent instance.
    zdict['BaseVector', Expr]r>   r†   Ú_latex_formc                óp   •— t         ‰| �  | «      }t        j                  | fj	                  «       |_        |S r   )r‹   rŒ   r   r§   Ú__hash__Ú_hash)r�   r”   r•   s     €r   rŒ   zBasisDependentZero.__new__@  s0   ø€ Ü‰g‰o˜cÓ"ˆô —V‘V˜S�M×*Ñ*Ó,ˆŒ	Øˆ
r!   c                ó   — | j                   S r   )rÁ   r/   s    r   rÀ   zBasisDependentZero.__hash__G  s   € Ø�z‰zÐr!   Ú__req__c                ó.   — t        || j                  «      S r   )rr   r¦   r   s     r   Ú__eq__zBasisDependentZero.__eq__J  s   € ä˜% §¡Ó1Ð1r!   r   c                óH   — t        || j                  «      r|S t        d«      ‚©Nz#Invalid argument types for addition©rr   r…   r6   r   s     r   r    zBasisDependentZero.__add__P  ó!   € ä�e˜TŸ_™_Ô-ØˆLäÐAÓBÐBr!   r    c                óH   — t        || j                  «      r|S t        d«      ‚rÇ   rÈ   r   s     r   r   zBasisDependentZero.__radd__W  rÉ   r!   r#   c                óJ   — t        || j                  «      r| S t        d«      ‚©Nz&Invalid argument types for subtractionrÈ   r   s     r   r%   zBasisDependentZero.__sub__^  s#   € ä�e˜TŸ_™_Ô-Ø�6ˆMäÐDÓEÐEr!   r%   c                óH   — t        || j                  «      r|S t        d«      ‚rÌ   rÈ   r   s     r   r#   zBasisDependentZero.__rsub__e  s!   € ä�e˜TŸ_™_Ô-ØˆLäÐDÓEÐEr!   c                ó   — | S r   rQ   r/   s    r   r0   zBasisDependentZero.__neg__l  s   € Øˆr!   c                ó   — | S )z@
        Returns the normalized version of this vector.
        rQ   r/   s    r   Ú	normalizezBasisDependentZero.normalizeo  s	   € ð ˆr!   c                 ó   — y)NÚ0rQ   )r   r¹   s     r   r»   zBasisDependentZero._sympystru  s   € Ør!   )r{   r|   r}   r~   r>   r   rŒ   rÀ   r   rÅ   rÃ   r    r   r%   r#   r0   rÐ   r»   r–   r—   s   @r   r   r   9  s¾   ø… ñð ,.€JÐ(Ó-ØÓôòñ ˜9Ó%ñ2ó &ð2ð €Gá˜:Ó&ñCó 'ðCñ ˜9Ó%ñCó &ðCñ ˜:Ó&ñFó 'ðFñ ˜9Ó%ñFó &ðFòòör!   r   N)"Ú
__future__r   Útypingr   Úsympy.simplifyr   rG   r   rL   Úsympy.core.decoratorsr   r   Úsympy.core.assumptionsr	   Úsympy.core.functionr   rs   Úsympy.integrals.integralsr   Úsympy.polys.polytoolsr   rc   Ú
sympy.corer   r   r   Úsympy.core.exprr   Úsympy.vector.vectorr   r   r‚   r™   r   rQ   r!   r   Ú<module>rÞ      si   ðÝ "Ý  ç >ß CÝ ,Ý *Ý .Ý 0ß "Ñ "Ý  áÝ.ôc0�Tô c0ôL-˜¨ô -ô`OG˜¨ô OGôd=˜õ =r!   