
    \h              	       V   S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  \" S5      r
\
(       d  Sr\ R                  R                  \ R                  R                  \ R                  R                  \ R                  R                  \5      5      5      5      rSS jrS	 rS
 rS rS rS rg)    N)cossin)import_module)skip)parse_autolevantlr4Tc           	      t   [         R                  R                  [        SSU 5      n[         R                  R                  [        SSU5      n[	        U5       n[        USS9nS S S 5        [	        U5       n[        U5       HV  u  pxUR                  S5      (       a    O= WR                  S5      U   n	UR                  5       U	R                  5       :X  d   eMX     S S S 5        g ! , (       d  f       N= f! [         a&    SU-   S-   n
[        U
R                  US	-   5      5      ef = f! , (       d  f       g = f)
Nautolevtest-examplesT)include_numeric#
zmismatch in z in line no: {0}   )ospathjoinFILE_DIRopenr   	enumerate
startswithsplitrstrip	ExceptionAssertionErrorformat)in_filenameout_filename	test_namein_file_pathcorrect_file_pathfgenerated_codeidxline1line2msgs              X/var/www/auris/envauris/lib/python3.13/site-packages/sympy/parsing/tests/test_autolev.py_test_examplesr(      s   77<<)_ +-LXy/%13	l	q&q$? 
 
	 A#A,JC$$8&,,T237||~777 ' 
!	  
	  8$y03EE$SZZA%6778 
!	 s0   C%6)D) 8C6D)%
C360D&&D))
D7c                  J    / SQn U  H  nUS-   nUS-   n[        X#U5        M     g )N)	ruletest1	ruletest2	ruletest3	ruletest4	ruletest5	ruletest6	ruletest7	ruletest8	ruletest9
ruletest10
ruletest11
ruletest12.al.py)r(   liin_filepathout_filepaths       r'   test_rule_testsr=   &   s1    	%A %i5y{!4     c                      / SQn U  HU  n[         R                  R                  SUS-   5      n[         R                  R                  SUS-   5      n[        X#U5        MW     g )N)mass_spring_damperchaos_pendulumdouble_pendulumnon_min_pendulumzpydy-example-repor6   r7   )r   r   r   r(   r8   s       r'   test_pydy_examplesrD   2   sQ    	A ggll#6E	Bww||$7UC{!4 r>   c                  X   [         R                  R                  [        SSS5      n [         R                  R	                  U 5      (       a`  / SQnU HU  n[         R                  R                  SUS-   5      n[         R                  R                  SUS-   5      n[        X4U5        MW     g g )Nr
   r   zautolev-tutorial)tutor1tutor2tutor3tutor4tutor5tutor6tutor7r6   r7   r   r   r   r   isdirr(   )dir_pathr9   r:   r;   r<   s        r'   test_autolev_tutorialrP   =   s    ww||Hi.0H 
ww}}XA'',,'91u9EK77<<(:AIFL;a8  r>   c                     [         R                  R                  [        SSS5      n [         R                  R	                  U 5      (       a  / SQn/ SQn/ SQn/ SQnUS4US	4US
4US4/nU H`  u  pgU HU  n[         R                  R                  SXxS-   5      n	[         R                  R                  SXxS-   5      n
[        XU5        MW     Mb     g g )Nr
   r   zdynamics-online)z1-4z1-5z1-6z1-7z1-8z1-9_1z1-9_2z1-9_3)
z2-1z2-2z2-3z2-4z2-5z2-6z2-7z2-8z2-9circular)z3-1_1z3-1_2z3-2_1z3-2_2z3-2_3z3-2_4z3-2_5z3-3)z4-1_1z4-2_1z4-4_1z4-4_2z4-5_1z4-5_2ch1ch2ch3ch4r6   r7   rM   )rO   rS   rT   rU   rV   chapterschnamer:   r;   r<   s              r'   test_dynamics_onlinerZ   K   s    ww||Hi-/H 
ww}}XLD%L3,esElK HB ggll+<dIN!ww||,=tYO{!<  ! r>   c                     [         (       d  [        S5        Sn [        U 5      n0 n0 n[        XU5        US   R	                  US   5      nUS   R                  US   5      nUS   R                  US   5      nUS   R                  US   5      nUS   R                  5       US   R                  -  [        US   5      US   R                  5       -  US   R                  -  -   [        US   5      US   R                  5       -  US   R                  -  -   nXH-
  R                  5       S	:X  d   eUS
   * [        US   5      -  US   R                  -  US   US   R                  -  -   US
   [        US   5      -  US   R                  -  -   n	XY-
  R                  5       S	:X  d   eUS
   [        US   5      -  US   R                  5       -  US   R                  -  US
   [        US   5      -  US   R                  5       -  US   R                  -  -
  US   US   R                  5       -  US
   [        US   5      -  US   R                  5       -  -   US   R                  -  -   n
Xj-
  R                  5       S	:X  d   eUS
   [        US   5      US   R                  5       S-  -  [        US   5      US   R                  5       R                  5       -  -   -  US   R                  -  US   * US   R                  5       S-  -  SUS
   -  [        US   5      -  US   R                  5       -  US   R                  5       -  -
  US
   [        US   5      -  US   R                  5       R                  5       -  -
  US   R                  -  -   US   US   R                  5       R                  5       -  US
   [        US   5      -  US   R                  5       R                  5       -  -   US
   [        US   5      -  US   R                  5       S-  -  -
  US
   [        US   5      -  US   R                  5       S-  -  -
  US   R                  -  -   nX{-
  R                  5       S	:X  d   eg)a  Autolev example calculates the position, velocity, and acceleration of a
point and expresses in a single reference frame::

      (1) FRAMES C,D,F
      (2) VARIABLES FD'',DC''
      (3) CONSTANTS R,L
      (4) POINTS O,E
      (5) SIMPROT(F,D,1,FD)
   -> (6) F_D = [1, 0, 0; 0, COS(FD), -SIN(FD); 0, SIN(FD), COS(FD)]
      (7) SIMPROT(D,C,2,DC)
   -> (8) D_C = [COS(DC), 0, SIN(DC); 0, 1, 0; -SIN(DC), 0, COS(DC)]
      (9) W_C_F> = EXPRESS(W_C_F>, F)
   -> (10) W_C_F> = FD'*F1> + COS(FD)*DC'*F2> + SIN(FD)*DC'*F3>
      (11) P_O_E>=R*D2>-L*C1>
      (12) P_O_E>=EXPRESS(P_O_E>, D)
   -> (13) P_O_E> = -L*COS(DC)*D1> + R*D2> + L*SIN(DC)*D3>
      (14) V_E_F>=EXPRESS(DT(P_O_E>,F),D)
   -> (15) V_E_F> = L*SIN(DC)*DC'*D1> - L*SIN(DC)*FD'*D2> + (R*FD'+L*COS(DC)*DC')*D3>
      (16) A_E_F>=EXPRESS(DT(V_E_F>,F),D)
   -> (17) A_E_F> = L*(COS(DC)*DC'^2+SIN(DC)*DC'')*D1> + (-R*FD'^2-2*L*COS(DC)*DC'*FD'-L*SIN(DC)*FD'')*D2> + (R*FD''+L*COS(DC)*DC''-L*SIN(DC)*DC'^2-L*SIN(DC)*FD'^2)*D3>

z&Test skipped: antlr4 is not installed.zFRAMES C,D,F
VARIABLES FD'',DC''
CONSTANTS R,L
POINTS O,E
SIMPROT(F,D,1,FD)
SIMPROT(D,C,2,DC)
W_C_F>=EXPRESS(W_C_F>,F)
P_O_E>=R*D2>-L*C1>
P_O_E>=EXPRESS(P_O_E>,D)
V_E_F>=EXPRESS(DT(P_O_E>,F),D)
A_E_F>=EXPRESS(DT(V_E_F>,F),D)frame_cframe_fpoint_epoint_ofddcr   r9   frame_dr   N)r   r   r   exec
ang_vel_inpos_fromvelaccdiffxr   yr   zsimplify)autolev_inputsympy_inputgr9   w_c_fp_o_ev_e_fa_e_fexpected_w_c_fexpected_p_o_eexpected_v_e_fexpected_a_e_fs               r'   test_output_01rz   _   st   0 656M  .K
A
AiL##AiL1EiL!!!I,/EiLQy\*EiLQy\*E
 gllnQy\^^3!D'l1T7<<>1!I,..@A!D'l1T7<<>1!I,..@AN ",,.!333vgc!D'l*1Y<>>9fQy\^^+,fS4\)!I,..89N ",,.!333fS4\)!D',,.89GfS4\)!D',,.89GHvaglln,vc!D'l*1T7<<>9:;<Y<>>JJN ",,.!333fc!D'l1T7<<>1+<<!!D'l1T7<<>+>+>+@@A BBCI,..Q#wqw||~q003xAdG,QtW\\^;AdGLLNJKvc!D'l*1T7<<>+>+>+@@ABCI,..QQ
 vaglln1133vc!D'l*1T7<<>+>+>+@@Avc!D'l*1T7<<>1+<<= vc!D'l*1T7<<>1+<<= ?@	lnnMMN ",,.!333r>   ) )r   (sympy.functions.elementary.trigonometricr   r   sympy.externalr   sympy.testing.pytestr   sympy.parsing.autolevr   r   disabledr   dirnameabspathrealpath__file__r   r(   r=   rD   rP   rZ   rz    r>   r'   <module>r      s    	 ? ( % /	x	 H77??GGOOBGGOOBGG$4$4X$>?@B8*	559=(S4r>   