Ë
    7^(hk  ã                   ó@  — d Z ddl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 dd	lmZ dd
lmZmZmZ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  ddl!m"Z" ddl#m$Z$  ed«      Z% ed«      Z& ed«      Z' ed«      Z( ed«      \  Z)Z*Z+  ed«      e&e'«      Z,  ed«      e,e(«      Z- ed«      Z. ed«      Z/ ed«      Z0 ed«      Z1ejd                  jg                  de.ge&gfe/ge&gfe0ge&gfe1ge&gfe&ge&gfe'ge&gfe&e'z   ge&gfe&e'z  ge&gfe&dz  ge&gfe&e'z  ge&gf ee&«      ge&gf ee&«      ge&gf e e&«      ge&gfe.e/e&e'e&e'z  e&e'z   ge&e'gfe&e'z   ee&e'z  «      z    ee'«      z
  e&e'z   ee'«      z
  z  ge&e'gfe% e e'e(z  «      z  e& e e'e(z  «      z
  z  e%e&z   e e'e(z  «      z  e& e e'e(z  «      z
  z  ge%e&e'e(gfe)dz  e*z   e*dz  e+z   e+dz  e)z   ge)e*e+gfe- e
e-e&«      z   e,z   de&z  z   ge&gfg«      d„ «       Z4d„ Z5d„ Z6d„ Z7d „ Z8d!„ Z9d"„ Z:d#„ Z;d$„ Z<y)%z5Tests for the ``sympy.simplify._cse_diff.py`` module.é    N)ÚSymbolÚsymbols)ÚInteger)ÚFunction)Ú
Derivative)Úexp)ÚImmutableDenseMatrix)Údynamicsymbols)Ú_forward_jacobianÚ_remove_cse_from_derivativeÚ_forward_jacobian_cseÚ!_forward_jacobian_norm_in_cse_out)Úsimplify)ÚMatrixÚeye)Úraises)ÚcosÚsinÚtan)Útrigsimp)ÚcseÚwÚxÚyÚzzq1 q2 q3ÚkÚfé   é   éÿÿÿÿz	expr, wrtc                 óð   — t        | g«      j                  } t        |g«      j                  }t        | |«      }t        j                  |j                  Ž }t        || j                  |«      z
  «      |k(  sJ ‚y ©N)r	   ÚTr   ÚzerosÚshaper   Újacobian)ÚexprÚwrtr&   r$   s       ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/simplify/tests/test_cse_diff.pyÚtest_forward_jacobianr*   +   si   € ô4    Ó'×)Ñ)€DÜ
 ˜uÓ
%×
'Ñ
'€CÜ   sÓ+€HÜ ×&Ñ&¨¯©Ð7€EÜ�H˜tŸ}™}¨SÓ1Ñ1Ó2°eÒ;Ð;Ñ;ó    c                  ó,  — t        d«      \  } }}t        d«      }t        d«      }t         | || |«      |«      t         | || |«      |«      | «      z    || |«      z   d| z  z   g«      }t	        |«      \  }}t        ||«      \  }}	t        d«      }
t        d«      }|
 || |«      f| ||
|«      fgt        d| z  |
z   |z   t         | || |«      |«      | «      z   g«      gf}||d   k(  sJ d|d   › d	|› �«       ‚|	|d
   k(  sJ d|d
   › d	|	› �«       ‚y )Núx y zr   r   r   Úx0Úx1r   z	Expected z
, but got r   )r   r   r   r   r   r   )r   r   r   r   r   r'   ÚreplÚreducedÚp_replÚ	p_reducedr.   r/   Úexpected_outputs                r)   Útest_process_cser5   L   sL  € Ü�gÓ�G€A€qˆ!Ü�‹€AÜ�‹€AÜ‘1‘Q�q˜“V˜Q“<¤*©Q©q°°1«v°q«\¸1Ó"=Ñ=ÁÀ!ÀAÃÑFÈÈ1ÉÑLÐMÓN€DÜ˜“I�M€Dˆ'Ü3°D¸'ÓBÑ€FˆIä	�‹€BÜ	�‹€Bð ‰a��1‹gˆ˜™Q˜r 1›X˜Ð'Ü	��Q‘˜‘˜b‘¤:©a±°!°Q³¸«m¸QÓ#?Ñ?Ð@Ó	AÐBð€Oð
 �_ QÑ'Ò'Ð[¨9°_ÀQÑ5GÐ4HÈ
ÐSYÐRZÐ)[Ó[Ð'Ø˜¨Ñ*Ò*Ða¨i¸ÈÑ8JÐ7KÈ:ÐV_ÐU`Ð,aÓaÑ*r+   c                  óð  — t        d«      \  } }}t        | |z  ||z  z   | |z  |z  z   | dz  |dz  z   |dz  z   | |z  | |z  z   ||z  z   g«      }t        | ||g«      }t        |«      \  }}t        |||«      \  }}}	t	        |d   t        |d   «      «      sJ d«       ‚t        ||«      \  }
}}t	        |d   t        |d   «      «      sJ d«       ‚t        ||«      }t	        |t        |«      «      sJ d«       ‚y )Nr-   r   r   z9Jacobian should be a Matrix of the same type as the input)r   r	   r   r   Ú
isinstanceÚtyper   r   )r   r   r   r'   r(   ÚreplacementsÚreduced_exprÚreplacements_coreÚjacobian_coreÚprecomputed_fs_coreÚreplacements_normÚjacobian_normÚprecomputed_fs_normr&   s                 r)   Útest_io_matrix_typerA   `   s5  € Ü�gÓ�G€A€qˆ!ÜØ	ˆA‰��A‘‰˜˜A™ ™	Ñ!Ø	ˆQ‰��a‘‰˜!˜q™&Ñ Ø	ˆA‰��A‘‰˜˜A™Ñð!ó €Dô
   1 a˜yÓ
)€Cä!$ T£Ñ€L�,ô =RÐR^Ð`lÐnqÓ<rÑ9Ð�}Ð&9Ü�m AÑ&¬¨\¸!©_Ó(=Ô>Ð{Ð@{Ó{Ð>ô =^Øˆcó=Ñ9Ð�}Ð&9ä�m AÑ&¬¨\¸!©_Ó(=Ô>Ð{Ð@{Ó{Ð>ô !  sÓ+€HÜ�h¤ T£
Ô+ÐhÐ-hÓhÑ+r+   c                  ó˜  — t        d«      \  } }}t        | |z  ||z  z   | |z  |z  z   | dz  |dz  z   |dz  z   | |z  | |z  z   ||z  z   g«      }t        | ||g«      }t        |«      \  }}t        |||«      \  }}}	t	        |t        |«      «      sJ d«       ‚t	        |t        |«      «      sJ d«       ‚t	        |	t        «      sJ d«       ‚t        |«      t        |«      k(  sJ d«       ‚t        |«      dk(  sJ d«       ‚t        |	«      t        |«      k(  sJ d	«       ‚t        ||«      \  }
}}t	        |
t        |«      «      sJ d«       ‚t	        |t        |«      «      sJ d«       ‚t	        |t        «      sJ d«       ‚t        |
«      t        |«      k(  sJ d«       ‚t        |«      dk(  sJ d«       ‚t        |«      t        |«      k(  sJ d	«       ‚y )
Nr-   r   zReplacements should be a listzJacobian should be a listz)Precomputed free symbols should be a listz%Length of replacements does not matchr   z Jacobian should have one elementz1Length of precomputed free symbols does not match)	r   r   r   r   r7   r8   ÚlistÚlenr   )r   r   r   r'   r(   r9   r:   r;   r<   r=   r>   r?   r@   s                r)   Ú"test_forward_jacobian_input_outputrE   y   s  € Ü�gÓ�G€A€qˆ!ÜØ	ˆA‰��A‘‰˜˜A™ ™	Ñ!Ø	ˆQ‰��a‘‰˜!˜q™&Ñ Ø	ˆA‰��A‘‰˜˜A™Ñðó €Dô
 �!�Q˜�Ó
€Cä!$ T£Ñ€L�,ô =RÐR^Ð`lÐnqÓ<rÑ9Ð�}Ð&9ÜÐ'¬¨lÓ);Ô<Ð]Ð>]Ó]Ð<Ü�m¤T¨,Ó%7Ô8ÐUÐ:UÓUÐ8ÜÐ)¬4Ô0Ð]Ð2]Ó]Ð0ÜÐ Ó!¤S¨Ó%6Ò6Ð_Ð8_Ó_Ð6Üˆ}Ó Ò"ÐFÐ$FÓFÐ"ÜÐ"Ó#¤s¨<Ó'8Ò8ÐmÐ:mÓmÐ8ô =^Ð^bÐdgÓ<hÑ9Ð�}Ð&9ÜÐ'¬¨lÓ);Ô<Ð]Ð>]Ó]Ð<Ü�m¤T¨,Ó%7Ô8ÐUÐ:UÓUÐ8ÜÐ)¬4Ô0Ð]Ð2]Ó]Ð0ÜÐ Ó!¤S¨Ó%6Ò6Ð_Ð8_Ó_Ð6Üˆ}Ó Ò"ÐFÐ$FÓFÐ"ÜÐ"Ó#¤s¨<Ó'8Ò8ÐmÐ:mÓmÑ8r+   c                  óæ  — t        ddt        dz  t        z  dt        dz  z  t        t        z  z   g«      } t        t        g}t        | |«      t        dt        z  t        z  t        dz  gt        dt        z  t        z   gg«      k(  sJ ‚t        ddt        t        dz  t        dz  z  g«      } t        | |«      t        ddgdt        z  t        dz  z  t        dz  dz  t        dz  z  gg«      k(  sJ ‚y )Nr   r   é   é   r   )r   r   r   r   )ÚLÚsymss     r)   Útest_jacobian_hessianrK   —   sÓ   € Üˆq�!”a˜‘dœ1‘f˜a¤ 1¡™f¤q¬¡s™lÐ+Ó,€AÜŒqˆ6€DÜ˜Q Ó%¬°!´A±#´a±%¼¸A¹°ÄÀAÄaÁCÌ!ÁGÀÐ0MÓ)NÒNÐNÐNäˆq�!”aœ˜A™œa ™d™�^Ó$€AÜ˜Q Ó%¬°!°Q°¸!¼A¹#¼aÀ¹d¹(ÄAÀqÁDÈÁFÌ1ÈaÉ4ÁKÐ9PÐ0QÓ)RÒRÐRÑRr+   c                  ó  — t        d«      \  } }t        | t        |«      z  | t        |«      z  g«      }t        | |g«      }t	        ||«      }||j                  |j                  «      k(  sJ ‚||j                  j                  |«      k(  sJ ‚||j                  j                  |j                  «      k(  sJ ‚|j                  t        |j                  d   «      z  |z  }|j                  t        «      }|t        ddgd| dz  gg«      k(  sJ ‚y )Núrho,phir   r   r   )r   r   r   r   r   r&   r#   r   r%   Ú	applyfuncr   )ÚrhoÚphiÚXÚYÚJÚgs         r)   Útest_jacobian_metricsrU       sî   € Ü�yÓ!�H€CˆÜ�”c˜#“h‘ ¤c¨#£h¡Ð/Ó0€AÜ��SˆzÓ€AÜ˜!˜QÓ€AØ�—
‘
˜1Ÿ3™3“ÒÐÐØ�—‘—‘˜qÓ!Ò!Ð!Ð!Ø�—‘—‘˜qŸs™sÓ#Ò#Ð#Ð#Ø	�‰Œc�!—'‘'˜!‘*‹oÑ Ñ!€AØ	�‰”HÓ€AØ”˜˜A˜  C¨1¡H Ð.Ó/Ò/Ð/Ñ/r+   c                  ó2  — t        d«      \  } }t        | t        |«      z  | t        |«      z  | dz  g«      }t        | |g«      }t        t        |«      |  t        |«      z  gt        |«      | t        |«      z  gd| z  dgg«      }t	        ||«      |k(  sJ ‚y )NrM   r   r   )r   r   r   r   r   )rO   rP   rQ   rR   rS   s        r)   Útest_jacobian2rW   ­   sž   € Ü�yÓ!�H€CˆÜ�”c˜#“h‘ ¤c¨#£h¡°°q±Ð9Ó:€AÜ��SˆzÓ€AÜÜ	ˆS‹�C�4œ#˜c›(‘?Ð#Ü	ˆS‹�3œ˜S›‘>Ð"Ø	
ˆS‰�!ˆðó 	€Aô
 ˜Q Ó" aÒ'Ð'Ñ'r+   c                  óþ  — t        t        t        t        z   t        z   «      t        t        t        z   t        z   «      t        t        t        z   t        z   «      g«      } t        t        t        t        g«      }t        dd«      D ]u  }t        dd«      D ]d  }| d |…d d …f   }|d |…d d …f   }t        ||«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚t        |«      D ]  }|d d …|f   |k(  rŒJ ‚ Œf Œw y )Nr   rH   )	r   r   r   r   r   Úranger   ÚrowsÚcols)rQ   rR   ÚiÚjÚX_sliceÚY_slicerS   r   s           r)   Útest_issue_4564r`   ¹   sè   € Ü””Aœ‘EœA‘I“¤¤A¬¡E¬A¡I£´´A¼±E¼A±I³Ð?Ó@€AÜ””1”aˆyÓ€AÜ�1�a‹[ò *ˆÜ�q˜!“ò 	*ˆAØ˜˜˜šA˜‘hˆGØ˜˜˜šA˜‘hˆGÜ! '¨7Ó3ˆAØ—6‘6˜Q’;Ð�;Ø—6‘6˜Q’;Ð�;Ü˜1“Xò *�Øš˜A˜‘w 'Ó)Ð)Ð)ñ*ñ	*ñ*r+   c                  óÊ  ‡ ‡— t        t        t        t        z   t        z   «      t        t        t        z   t        z   «      gt        t        t        z   t        z   «      t        t        t        z   t        z   «      gg«      Š t        t        ˆ fd„«       ‰ dd d …f   Š t        t        t        gt        t        gg«      Št        t        ˆ ˆfd„«       t        t        ˆ fd„«       y )Nc                  óL   •— t        ‰ t        t        t        t        g«      «      S r"   ©r   r   r   r   r   ©rQ   s   €r)   ú<lambda>z(test_nonvectorJacobian.<locals>.<lambda>Ê   s   ø€ Ô/°´6¼1¼aÄ¸)Ó3DÓE€ r+   r   c                  ó   •— t        ‰ ‰«      S r"   )r   ©rQ   rR   s   €€r)   re   z(test_nonvectorJacobian.<locals>.<lambda>Í   s   ø€ Ô/°°1Ó5€ r+   c                  óZ   •— t        ‰ t        t        t        gt        t        gg«      «      S r"   rc   rd   s   €r)   re   z(test_nonvectorJacobian.<locals>.<lambda>Î   s!   ø€ Ô/°´6¼A¼q¸6ÄAÄqÀ6Ð:JÓ3KÓL€ r+   )r   r   r   r   r   r   Ú	TypeErrorrg   s   @@r)   Útest_nonvectorJacobianrj   Ç   s–   ù€ Ü””Qœ‘UœQ‘Y“¤¤Q¬¡U¬Q¡Y£Ð0Ü”Qœ‘UœQ‘Y“¤¤Q¬¡U¬Q¡Y£Ð0ð2ó 	3€Aä
Œ9ÓEÔFØ	ˆ!ŠQˆ$‰€AÜ””A�œœA˜ÐÓ €AÜ
Œ9Ô5Ô6Ü
Œ9ÓLÕMr+   )=Ú__doc__ÚpytestÚsympy.core.symbolr   r   Úsympy.core.numbersr   Úsympy.core.functionr   Ú
sympy.corer   Ú&sympy.functions.elementary.exponentialr   Úsympy.matrices.immutabler	   Úsympy.physics.mechanicsr
   Úsympy.simplify._cse_diffr   r   r   r   Úsympy.simplify.simplifyr   Úsympy.matricesr   r   Úsympy.testing.pytestr   Ú(sympy.functions.elementary.trigonometricr   r   r   Úsympy.simplify.trigsimpr   Úsympyr   r   r   r   r   Úq1Úq2Úq3r   r   ÚzeroÚoneÚtwoÚneg_oneÚmarkÚparametrizer*   r5   rA   rE   rK   rU   rW   r`   rj   © r+   r)   ú<module>r…      sÉ  ðÙ ;ã ç /Ý &Ý (Ý !Ý 6Ý 9Ý 2÷Ió Iõ -ß &å 'ß DÑ DÝ ,å ñ ˆ3ƒK€Ù
ˆ3ƒK€Ù
ˆ3ƒK€Ù
ˆ3ƒK€á˜JÓ'�
€€Bˆð �HˆSƒM�!�QÓ€Ø�HˆSƒM�!�QÓ€áˆqƒz€Ùˆaƒj€Ùˆaƒj€Ù
�"‹+€ð ‡�×ÑØà
ˆ�!�ˆØ
ˆ��ˆØ
ˆ��ˆØ
ˆ�Q�CÐØ
ˆˆqˆcˆ
Ø
ˆˆqˆcˆ
Ø
ˆa‰%ˆ�1�#ˆØ
ˆA‰#ˆ��ˆØ
ˆQ‰$ˆ�!�ˆØ
ˆQ‰$ˆ�!�ˆÙ
ˆa‹&ˆ�A�3ˆÙ
ˆa‹&ˆ�A�3ˆÙ
ˆa‹&ˆ�A�3ˆØ
��Q˜˜1˜Q™3  A¡Ð	&¨¨A¨Ð/Øˆa‰C‘3�q˜‘s“8Ñ™c !›fÑ$¨¨!©©s°1«v¡~Ñ
6Ð	7¸!¸Q¸Ð@Ø
‰C��!‘‹H‰*�a™#˜a ™c›(‘lÑ
# Q q¡S©¨Q¨q©S«¡\°1±s¸1¸Q¹3³x±<Ñ%@Ð	AÀAÀqÈ!ÈQÀ<ÐPØ
ˆa‰%�"‰*�b˜!‘e˜b‘j " a¡%¨"¡*Ð	-°°B¸¨|Ð<Ø
‰j˜˜AÓÑ
 Ñ
" Q q¡SÑ
(Ð	)¨A¨3Ð/ð%óñ2<ó3ð2<òbò(iò2nò<Sò
0ò	(ò*óNr+   