§
    PŠtjk  ã                   óÖ  — 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j2         3                    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<dS )%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          ||                      |¦  «        z
  ¦  «        |k    sJ ‚d S ©N)r	   ÚTr   ÚzerosÚshaper   Újacobian)ÚexprÚwrtr&   r$   s       ú`/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/simplify/tests/test_cse_diff.pyÚtest_forward_jacobianr*   +   sv   € õ4    Ñ'Ô'Ô)€DÝ
 ˜uÑ
%Ô
%Ô
'€CÝ   sÑ+Ô+€HÝ Ô&¨¬Ð7€EÝ�H˜tŸ}š}¨SÑ1Ô1Ñ1Ñ2Ô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	|	› �¦   «         ‚d S )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   s¢  € Ý�gÑÔ�G€A€qˆ!Ý�‰Œ€AÝ�‰Œ€AÝ�1�1�Q�Q�q˜‘V”V˜Q‘<”<¥*¨Q¨Q¨q¨q°°1©v¬v°q©\¬\¸1Ñ"=Ô"=Ñ=ÀÀÀ!ÀAÁÄÑFÈÈ1ÉÑLÐMÑNÔN€DÝ˜‘I”I�M€Dˆ'Ý3°D¸'ÑBÔBÑ€FˆIå	�‰Œ€BÝ	�‰Œ€Bð ˆaˆa��1‰gŒgˆ˜˜Q˜Q˜r 1™XœX˜Ð'Ý	��Q‘˜‘˜b‘¥:¨a¨a°°°!°Q±´¸©m¬m¸QÑ#?Ô#?Ñ?Ð@Ñ	AÔ	AÐBð€Oð
 �_ QÔ'Ò'Ð'Ð'Ð)[°_ÀQÔ5GÐ)[Ð)[ÐSYÐ)[Ð)[Ñ'Ô'Ð'Ø˜¨Ô*Ò*Ð*Ð*Ð,a¸ÈÔ8JÐ,aÐ,aÐV_Ð,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¦   «         ‚d S )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   `   sv  € Ý�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Ô<rÑ9Ð�}Ð&9Ý�m AÔ&­¨\¸!¬_Ñ(=Ô(=Ñ>Ô>Ð{Ð{Ð@{Ñ{Ô{Ð>õ =^Øˆcñ=ô =Ñ9Ð�}Ð&9å�m AÔ&­¨\¸!¬_Ñ(=Ô(=Ñ>Ô>Ð{Ð{Ð@{Ñ{Ô{Ð>õ !  sÑ+Ô+€HÝ�h¥ T¡
¤
Ñ+Ô+ÐhÐhÐ-hÑhÔhÐ+ÐhÐhr+   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	¦   «         ‚d S )
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Ô<rÑ9Ð�}Ð&9ÝÐ'­¨lÑ);Ô);Ñ<Ô<Ð]Ð]Ð>]Ñ]Ô]Ð<Ý�m¥T¨,Ñ%7Ô%7Ñ8Ô8ÐUÐUÐ:UÑUÔUÐ8ÝÐ)­4Ñ0Ô0Ð]Ð]Ð2]Ñ]Ô]Ð0ÝÐ Ñ!Ô!¥S¨Ñ%6Ô%6Ò6Ð6Ð6Ð8_Ñ6Ô6Ð6Ýˆ}ÑÔ Ò"Ð"Ð"Ð$FÑ"Ô"Ð"ÝÐ"Ñ#Ô#¥s¨<Ñ'8Ô'8Ò8Ð8Ð8Ð:mÑ8Ô8Ð8õ =^Ð^bÐdgÑ<hÔ<hÑ9Ð�}Ð&9ÝÐ'­¨lÑ);Ô);Ñ<Ô<Ð]Ð]Ð>]Ñ]Ô]Ð<Ý�m¥T¨,Ñ%7Ô%7Ñ8Ô8ÐUÐUÐ:UÑUÔUÐ8ÝÐ)­4Ñ0Ô0Ð]Ð]Ð2]Ñ]Ô]Ð0ÝÐ Ñ!Ô!¥S¨Ñ%6Ô%6Ò6Ð6Ð6Ð8_Ñ6Ô6Ð6Ýˆ}ÑÔ Ò"Ð"Ð"Ð$FÑ"Ô"Ð"ÝÐ"Ñ#Ô#¥s¨<Ñ'8Ô'8Ò8Ð8Ð8Ð:mÑ8Ô8Ð8Ð8Ð8r+   c                  óD  — 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 ‚d S )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Ð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ÐRÐRÐRÐRÐRr+   c                  óR  — t          d¦  «        \  } }t          | t          |¦  «        z  | t          |¦  «        z  g¦  «        }t          | |g¦  «        }t	          ||¦  «        }||                     |j        ¦  «        k    sJ ‚||j                             |¦  «        k    sJ ‚||j                             |j        ¦  «        k    sJ ‚|j        t          |j        d         ¦  «        z  |z  }| 	                    t          ¦  «        }|t          ddgd| dz  gg¦  «        k    sJ ‚d S )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”h‘ ¥c¨#¡h¤h¡Ð/Ñ0Ô0€AÝ��SˆzÑÔ€AÝ˜!˜QÑÔ€AØ�—
’
˜1œ3‘”ÒÐÐÐØ�”—’˜qÑ!Ô!Ò!Ð!Ð!Ð!Ø�”—’˜qœsÑ#Ô#Ò#Ð#Ð#Ð#Ø	Œ�c�!”'˜!”*‰oŒoÑ Ñ!€AØ	�Š•HÑÔ€AØ•˜˜A˜  C¨1¡H Ð.Ñ/Ô/Ò/Ð/Ð/Ð/Ð/Ð/r+   c                  óŽ  — 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 ‚d S )NrM   r   r   )r   r   r   r   r   )rO   rP   rQ   rR   rS   s        r)   Útest_jacobian2rW   ­   sÄ   € Ý�yÑ!Ô!�H€CˆÝ�•c˜#‘h”h‘ ¥c¨#¡h¤h¡°°q±Ð9Ñ:Ô:€AÝ��SˆzÑÔ€AÝÝ	ˆS‰Œ�C�4�#˜c™(œ(‘?Ð#Ý	ˆS‰Œ�3�˜S™œ‘>Ð"Ø	
ˆS‰�!ˆðñ 	ô 	€Aõ
 ˜Q Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'Ð'r+   c                  óX  — 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 ]}t          dd¦  «        D ]l}| d |…d d …f         }|d |…d d …f         }t          ||¦  «        }|j        |k    sJ ‚|j        |k    sJ ‚t          |¦  «        D ]}|d d …|f         |k    sJ ‚ŒŒmŒ€d S )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˜A˜A˜”hˆGØ˜˜˜˜A˜A˜A˜”hˆGÝ! '¨7Ñ3Ô3ˆAØ”6˜Q’;�;�;�;Ø”6˜Q’;�;�;�;Ý˜1‘X”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„¦  «         d S )Nc                  ób   •— 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Ô3DÑEÔE€ r+   r   c                  ó$   •— t          ‰ ‰¦  «        S r"   )r   ©rQ   rR   s   €€r)   re   z(test_nonvectorJacobian.<locals>.<lambda>Í   s   ø€ Õ/°°1Ñ5Ô5€ r+   c                  ór   •— 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Ô3KÑLÔ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ô 	3€Aå
�9ÐEÐEÐEÐEÑFÔFÐFØ	ˆ!ˆQˆQˆQˆ$Œ€AÝ••A���A˜ÐÑ Ô €AÝ
�9Ð5Ð5Ð5Ð5Ð5Ñ6Ô6Ð6Ý
�9ÐLÐLÐLÐLÑMÔMÐMÐMÐ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Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðIð Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið -Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ ,Ð ,Ð ,Ð ,Ð ,Ð ,à Ð Ð Ð Ð Ð ð €Fˆ3�K„K€Ø
€Fˆ3�K„K€Ø
€Fˆ3�K„K€Ø
€Fˆ3�K„K€àˆ^˜JÑ'Ô'�
€€Bˆð €H€HˆS�M„M�!�QÑÔ€Ø€H€HˆS�M„M�!�QÑÔ€à€wˆq�z„z€Ø€gˆa�j„j€Ø€gˆa�j„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�3�q˜‘s‘8”8Ñ˜c˜c !™fœfÑ$¨¨!©¨s¨s°1©v¬v¡~Ñ
6Ð	7¸!¸Q¸Ð@Ø
ˆCˆC��!‘‰HŒH‰*�a˜#˜#˜a ™c™(œ(‘lÑ
# Q q¡S¨¨¨Q¨q©S©¬¡\°1°s°s¸1¸Q¹3±x´x±<Ñ%@Ð	AÀAÀqÈ!ÈQÀ<ÐPØ
ˆa‰%�"‰*�b˜!‘e˜b‘j " a¡%¨"¡*Ð	-°°B¸¨|Ð<Ø
ˆjˆj˜˜AÑÔÑ
 Ñ
" Q q¡SÑ
(Ð	)¨A¨3Ð/ð%ñô ð2<ð <ñ3ô ð2<ðbð bð bð(ið ið ið2nð nð nð<Sð Sð Sð
0ð 
0ð 
0ð	(ð 	(ð 	(ð*ð *ð *ðNð Nð Nð Nð Nr+   