
    \hQ.                       S SK Jr  S SKJr  S SKJrJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  \(       a  S SKJr   " S S\5      r " S S\\5      r " S S\\5      r  " S S\5      r!g)    )annotations)TYPE_CHECKING)simplifytrigsimp)call_highest_priority
_sympifyit)	StdFactKBdiff)Integral)factor)SAddMul)Expr)
BaseVectorc                     \ rS rSr% SrS\S'   \" S5      S 5       r\" S5      S 5       r\" S	5      S
 5       r	\" S5      S 5       r
\" S\5      \" S5      S 5       5       r\" S\5      \" S5      S 5       5       rS r\" S\5      \" S5      S 5       5       r\" S5      S 5       rS&S jr\=R                  \R$                  R                  -  sl        \rS r\=R                  \R                  -  sl        S r\=R                  \R                  -  sl        S rS rS rS rS rS  r\=R                  \R                  -  sl        S'S! jr S" r!S# r"\"=R                  \#R                  -  sl        S$ r$S%r%g)(BasisDependent   z
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                $    U R                  X5      $ N	_add_funcselfothers     S/var/www/auris/envauris/lib/python3.13/site-packages/sympy/vector/basisdependent.py__add__BasisDependent.__add__   s    ~~d**    r!   c                $    U R                  X5      $ r   r   r   s     r    r   BasisDependent.__radd__   s    ~~e**r#   __rsub__c                &    U R                  X* 5      $ r   r   r   s     r    __sub__BasisDependent.__sub__#   s    ~~dF++r#   r(   c                &    U R                  X* 5      $ r   r   r   s     r    r&   BasisDependent.__rsub__'   s    ~~eU++r#   r   __rmul__c                $    U R                  X5      $ r   	_mul_funcr   s     r    __mul__BasisDependent.__mul__+   s     ~~d**r#   r0   c                $    U R                  X5      $ r   r.   r   s     r    r,   BasisDependent.__rmul__0   s     ~~e**r#   c                B    U R                  [        R                  U 5      $ r   )r/   r   NegativeOner   s    r    __neg__BasisDependent.__neg__5   s    ~~ammT22r#   __rtruediv__c                $    U R                  U5      $ r   )_div_helperr   s     r    __truediv__BasisDependent.__truediv__8   s     &&r#   r<   c                    [        S5      $ )NzInvalid divisor for division)	TypeErrorr   s     r    r9   BasisDependent.__rtruediv__=   s    788r#   Nc                    X#XEXgS.nU R                   n	U R                  R                  5        H  u  pXR                  " U40 UD6U
-  -  n	M     U	$ )ze
Implements the SymPy evalf routine for this quantity.

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

)subsmaxnchopstrictquadverbose)r   
componentsitemsevalf)r   nrB   rC   rD   rE   rF   rG   optionsveckvs               r    rJ   BasisDependent.evalfA   sU     D0iiOO))+DA771((1,,C ,
r#   c           	         U R                   R                  5        VVs/ s H  u  p#[        U40 UD6U-  PM     nnnU R                  " U6 $ s  snnf )zn
Implements the SymPy simplify routine for this quantity.

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

)rH   rI   simpr   )r   kwargsrN   rO   simp_componentss        r    r   BasisDependent.simplifyT   sV     $(??#8#8#:<#:41  ,V,q0#: 	 <~~//<   Ac           	         U R                   R                  5        VVs/ s H  u  p#[        U40 UD6U-  PM     nnnU R                  " U6 $ s  snnf )zo
Implements the SymPy trigsimp routine, for this quantity.

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

)rH   rI   tsimpr   )r   optsrN   rO   trig_componentss        r    r   BasisDependent.trigsimpb   sV     $(??#8#8#:<#:41 !+d+a/#: 	 <~~//<rV   c                &    U R                   " S0 UD6$ N )r   )r   rS   s     r    _eval_simplifyBasisDependent._eval_simplifyp   s    }}&v&&r#   c                &    U R                   " S0 UD6$ r]   )r   )r   rY   s     r    _eval_trigsimpBasisDependent._eval_trigsimps   s    }}$t$$r#   c                $    U R                  U5      $ r   r
   )r   wrts     r    _eval_derivativeBasisDependent._eval_derivativev   s    yy~r#   c           	         U R                   R                  5        VVs/ s H  u  p4[        U/UQ70 UD6U-  PM     nnnU R                  " U6 $ s  snnf r   )rH   rI   r   r   )r   symbolsassumptionsrN   rO   integral_componentss         r    _eval_IntegralBasisDependent._eval_Integraly   s]    +/??+@+@+BD+B41  (CGC{CaG+B 	 D~~233D   Ac                &    U [         R                  4$ )zb
Returns the expression as a tuple wrt the following
transformation -

expression -> a/b -> a, b

r   Oner6   s    r    as_numer_denomBasisDependent.as_numer_denom~   s     QUU{r#   c           	         U R                   R                  5        VVs/ s H  u  p4[        U/UQ70 UD6U-  PM     nnnU R                  " U6 $ s  snnf )z
Implements the SymPy factor routine, on the scalar parts
of a basis-dependent expression.

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

)rH   rI   fctrr   )r   argsrS   rN   rO   fctr_componentss         r    r   BasisDependent.factor   s[     $(??#8#8#:<#:41  3D3F3a7#: 	 <~~//<rn   c                &    [         R                  U 4$ )z1Efficiently extract the coefficient of a product.rp   )r   rationals     r    as_coeff_MulBasisDependent.as_coeff_Mul   s    t}r#   c                F   ^  S[        U 4S jT R                   5       5      4$ )z3Efficiently extract the coefficient of a summation.r   c              3  F   >#    U  H  oTR                   U   -  v   M     g 7fr   )rH   ).0xr   s     r    	<genexpr>.BasisDependent.as_coeff_add.<locals>.<genexpr>   s     H1DOOA..s   !)tuplerH   )r   depss   ` r    as_coeff_addBasisDependent.as_coeff_add   s    %HHHHHr#   c           	         U H#  n[        U[        5      (       d  M  [        S5      e   U R                  R	                  5        VVs/ s H  u  pE[        U/UQ70 UD6U-  PM     nnnU R                  " U6 $ s  snnf )za
Implements the SymPy diff routine, for vectors.

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

zInvalid arg for differentiation)
isinstancer   r?   rH   rI   dfr   )r   rv   rS   r   rN   rO   diff_componentss          r    r   BasisDependent.diff   s     A!^,, ABB  $(??#8#8#:<#:41 a1$1&1A5#: 	 <~~//<s   A7c                    U R                    Vs/ s H%  nU R                   U   R                  " S0 UD6U-  PM'     nnU R                  " U6 $ s  snf )z(Calls .doit() on each term in the Dyadicr^   )rH   doitr   )r   hintsr   doit_componentss       r    r   BasisDependent.doit   sX     %)OO5$3q  ??1-22;U;a?$3 	 5~~//5s   ,Ar^   )   Nd   FFNF)F)&__name__
__module____qualname____firstlineno____doc____annotations__r   r!   r   r(   r&   r   NotImplementedr0   r,   r7   r<   r9   rJ   r   rK   r   rR   r   rX   r_   rb   rf   rl   rr   r   ru   r{   r   r   r   r   __static_attributes__r^   r#   r    r   r      s    :&+ '+ 9%+ &+ :&, ', 9%, &, (:&+ ' )+ (9%+ & )+3 (>*' + )' =)9 *9 
MMTZZ'''MA
0 $
0 %'%4
0 NNdll"NI0 	LLBJJL0r#   r   c                  ,   ^  \ rS rSrSrU 4S jrSrU =r$ )BasisDependentAdd   zh
Denotes sum of basis dependent quantities such that they cannot
be expressed as base or Mul instances.
c                  > 0 nU H  n[        X@R                  5      (       du  [        U[        5      (       a  U R                  " UR                  6 nOF[        U[
        5      (       a  U R                  " UR                  6 nO[        [        U5      S-   5      eX@R                  :X  a  M  UR                   H'  nUR                  US5      UR                  U   -   X5'   M)     M     [        UR                  5       5      nU H  nX5   S:X  d  M  X5	 M     [        U5      S:X  a  U R                  $ U Vs/ s H	  oUX5   -  PM     nn[        T
U ]@  " U /UQ70 UD6n[        U[        5      (       a  U R                  " UR                  6 $ SS0n	[#        U	5      Ul        X8l        [        UR                  5       5      S   R(                  Ul        U$ s  snf )Nz  cannot be interpreted correctlyr   commutativeT)r   
_expr_typer   r/   rv   r   r   r?   strr   rH   getlistkeyslensuper__new__r	   _assumptions_components_sys)clsrv   rL   rH   argr   tempnewargsobjrj   	__class__s             r    r   BasisDependentAdd.__new__   s   
 Cc>>22c3''--#((4CS))--#((4C#CH$F%G H H hh^^ *q! 4s~~a7H H
 $   JOO%&A}!M 
 z?a88O /99jz}$j9goc7G7w7c3==#((++$d+$[1$*+Q/44
 :s   1Gr^   )r   r   r   r   r   r   r   __classcell__r   s   @r    r   r      s    
' 'r#   r   c                  H   ^  \ rS rSrSrS rS r\U 4S j5       rS r	Sr
U =r$ )BasisDependentMul   zB
Denotes product of base- basis dependent quantity with a scalar.
c                *    U R                   " U0 UD6nU$ r   )_new)r   rv   rL   r   s       r    r   BasisDependentMul.__new__   s    hh((
r#   c                    [        U 5      " U6 $ r   )type)r   rv   s     r    _new_rawargsBasisDependentMul._new_rawargs   s     Dz4  r#   c                f  > SSK JnJnJnJn  Sn[
        R                  nSn	/ n
U H  n[        XR                  5      (       a	  US-  nSn	M&  U[
        R                  :X  a  Sn	M>  [        XR                  U R                  45      (       a!  US-  nUR                  nXR                  -  nM  [        XR                  5      (       a	  US-  nUnM  [        XXEU45      (       a  U
R                  U5        M  X-  nM     US:  a  [!        S5      eUS:X  a  [#        U0 UD6$ U	(       a  U R$                  $ [        WU R                  5      (       a:  UR&                   Vs/ s H  nU R                  X5      PM     nnU R                  " U6 $ [(        TU ]T  " XUR                  /U
Q70 UD6n[        U[,        5      (       a  U R                  " UR&                  6 $ UR                  Ul        Xl        SS0n[/        U5      Ul        UR                  U0Ul        UR                  R4                  Ul        U$ s  snf )Nr   )CrossDotCurlGradientF   TzInvalid multiplicationr   )sympy.vectorr   r   r   r   r   rq   r   
_zero_funcZero
_base_funcr/   _base_instance_measure_numberr   append
ValueErrorr   r   rv   r   r   r   r	   r   r   r   )r   rv   rL   r   r   r   r   countmeasure_numberzeroflag
extra_argsr   exprr   r   r   rj   r   s                    r    r   BasisDependentMul._new   s   ;;

 C#~~..
C..#--!@AA
))"5"55C//
CH!=>>!!#&%! $ 19566aZ(((88O dCMM** II'%q }}^7%  '=='**goc"11))) !() c3==#((++!00,$d+$[1..?&&++
#'s   H.c                    UR                  U R                  5      nSU;   d  SU;   d  SU;   a  SU-   S-   nUS-   UR                  U R                  5      -   $ )N(-+)*)_printr   r   )r   printermeasure_strs      r    	_sympystrBasisDependentMul._sympystr1  s[    nnT%9%9:;#"4{"+c1KS 7>>$2E2E#FFFr#   r^   )r   r   r   r   r   r   r   classmethodr   r   r   r   r   s   @r    r   r      s3    ! 8 8tG Gr#   r   c                     ^  \ rS rSr% Sr0 rS\S'   S\S'   U 4S jrS r\	" S	5      S
 5       r
\
r\	" S5      S 5       r\	" S5      S 5       r\	" S5      S 5       r\	" S5      S 5       rS rS rS rSrU =r$ )r   i9  z2
Class to denote a zero basis dependent instance.
zdict['BaseVector', Expr]rH   r   _latex_formc                p   > [         TU ]  U 5      n[        R                  U 4R	                  5       Ul        U$ r   )r   r   r   r   __hash___hash)r   r   r   s     r    r   BasisDependentZero.__new__@  s0    goc" VVSM**,	
r#   c                    U R                   $ r   )r   r6   s    r    r   BasisDependentZero.__hash__G  s    zzr#   __req__c                ,    [        XR                  5      $ r   )r   r   r   s     r    __eq__BasisDependentZero.__eq__J  s    %11r#   r   c                P    [        XR                  5      (       a  U$ [        S5      eNz#Invalid argument types for additionr   r   r?   r   s     r    r!   BasisDependentZero.__add__P  "    e__--LABBr#   r!   c                P    [        XR                  5      (       a  U$ [        S5      er   r   r   s     r    r   BasisDependentZero.__radd__W  r   r#   r&   c                R    [        XR                  5      (       a  U* $ [        S5      eNz&Invalid argument types for subtractionr   r   s     r    r(   BasisDependentZero.__sub__^  s$    e__--6MDEEr#   r(   c                P    [        XR                  5      (       a  U$ [        S5      er   r   r   s     r    r&   BasisDependentZero.__rsub__e  s"    e__--LDEEr#   c                    U $ r   r^   r6   s    r    r7   BasisDependentZero.__neg__l  s    r#   c                    U $ )z0
Returns the normalized version of this vector.
r^   r6   s    r    	normalizeBasisDependentZero.normalizeo  s	     r#   c                    g)N0r^   )r   r   s     r    r   BasisDependentZero._sympystru  s    r#   r^   )r   r   r   r   r   rH   r   r   r   r   r   r   r!   r   r(   r&   r7   r   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   rR   r   rX   sympy.core.decoratorsr   r   sympy.core.assumptionsr	   sympy.core.functionr   r   sympy.integrals.integralsr   sympy.polys.polytoolsr   ru   
sympy.corer   r   r   sympy.core.exprr   sympy.vector.vectorr   r   r   r   r   r^   r#   r    <module>r	     si    "   > C , * . 0 " "  .c0T c0L- -`OG OGd= =r#   