
    g              	       J   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	  ed          Z
e
sdZe j                            e j                            e j                            e j                            e                                        Zdd	Zd
 Zd Zd Zd Zd ZdS )    N)cossin)import_module)skip)parse_autolevantlr4T c           	         t           j                            t          dd|           }t           j                            t          dd|          }t	          |          5 }t          |d          }d d d            n# 1 swxY w Y   t	          |          5 }t          |          D ]\  }}|                    d          r n	 |                    d          |         }	|	                                |		                                k    sJ e# t          $ r. d|z   dz   }
t          |
                    |d	z                       w xY wd d d            d S # 1 swxY w Y   d S )
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              \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/parsing/tests/test_autolev.py_test_examplesr)      s   7<<)_ +- -LXy/%13 3	l		 @q&q$???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 
	 	  	8A#A,, 	8 	8JC$$ 8&,,T2237||~~77777 8 8 8$y03EE$SZZA%6%67778	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s=   A<<B B ,EAD
E8EEEEc                  N    g d} | D ]}|dz   }|dz   }t          |||           d S )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>   &   sU    	% 	% 	%A  5 5%i5y{L!44445 5    c                      g d} | D ]Y}t           j                            d|dz             }t           j                            d|dz             }t          |||           Zd S )N)mass_spring_damperchaos_pendulumdouble_pendulumnon_min_pendulumzpydy-example-repor7   r8   )r   r   r   r)   r9   s       r(   test_pydy_examplesrE   2   sw    	 	 	A  5 5gll#6E	BBw||$7UCC{L!44445 5r?   c                  V   t           j                            t          ddd          } t           j                            |           r`g d}|D ][}t           j                            d|dz             }t           j                            d|dz             }t          |||           Zd S d S )Nr   r   zautolev-tutorial)tutor1tutor2tutor3tutor4tutor5tutor6tutor7r7   r8   r   r   r   r   isdirr)   )dir_pathr:   r;   r<   r=   s        r(   test_autolev_tutorialrQ   =   s    w||Hi.0 0H 
w}}X 9   	9 	9A',,'91u9EEK7<<(:AIFFL;a88889 9	9 	9r?   c                     t           j                            t          ddd          } t           j                            |           rg d}g d}g d}g d}|df|d	f|d
f|dfg}|D ]e\  }}|D ][}t           j                            d||dz             }	t           j                            d||dz             }
t          |	|
|           \dd S d S )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ch4r7   r8   rN   )rP   rT   rU   rV   rW   chapterschnamer;   r<   r=   s              r(   test_dynamics_onliner[   K   s   w||Hi-/ /H 
w}}X =LLL    DDD%L3,esElK  	= 	=HB = = gll+<dAINN!w||,=tQYOO{L!<<<<== =	= 	=r?   c                  t   t           st          d           d} t          |           }i }i }t          |||           |d                             |d                   }|d                             |d                   }|d                             |d                   }|d                             |d                   }|d                                         |d         j	        z  t          |d                   |d                                         z  |d         j        z  z   t          |d                   |d                                         z  |d         j        z  z   }||z
                                  d	k    sJ |d
          t          |d                   z  |d         j	        z  |d         |d         j        z  z   |d
         t          |d                   z  |d         j        z  z   }	||	z
                                  d	k    sJ |d
         t          |d                   z  |d                                         z  |d         j	        z  |d
         t          |d                   z  |d                                         z  |d         j        z  z
  |d         |d                                         z  |d
         t          |d                   z  |d                                         z  z   |d         j        z  z   }
||
z
                                  d	k    sJ |d
         t          |d                   |d                                         dz  z  t          |d                   |d                                                                         z  z   z  |d         j	        z  |d          |d                                         dz  z  d|d
         z  t          |d                   z  |d                                         z  |d                                         z  z
  |d
         t          |d                   z  |d                                                                         z  z
  |d         j        z  z   |d         |d                                                                         z  |d
         t          |d                   z  |d                                                                         z  z   |d
         t          |d                   z  |d                                         dz  z  z
  |d
         t          |d                   z  |d                                         dz  z  z
  |d         j        z  z   }||z
                                  d	k    sJ dS )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   r:   frame_dr   N)r   r   r   exec
ang_vel_inpos_fromvelaccdiffxr   yr   zsimplify)autolev_inputsympy_inputgr:   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_01r{   _   s   0  75666M  ..K
A
AaiL##AiL11EiL!!!I,//EiLQy\**EiLQy\**E
 gllnnQy\^3!D'll1T7<<>>1!I,.@A!D'll1T7<<>>1!I,.@AN N",,..!3333vgc!D'll*1Y<>9fQy\^+,fS4\\)!I,.89N N",,..!3333fS4\\)!D',,..89GfS4\\)!D',,..89GHvagllnn,vc!D'll*1T7<<>>9:;<Y<>JJN N",,..!3333fc!D'll1T7<<>>1+<<!!D'll1T7<<>>+>+>+@+@@A BBCI,.Q#wqw||~~q003xAdG,QtW\\^^;AdGLLNNJKvc!D'll*1T7<<>>+>+>+@+@@ABCI,.QQ
 vagllnn11333vc!D'll*1T7<<>>+>+>+@+@@Avc!D'll*1T7<<>>1+<<= vc!D'll*1T7<<>>1+<<= ?@	lnMMN N",,..!333333r?   )r	   )r   (sympy.functions.elementary.trigonometricr   r   sympy.externalr   sympy.testing.pytestr   sympy.parsing.autolevr   r   disabledr   dirnameabspathrealpath__file__r   r)   r>   rE   rQ   r[   r{    r?   r(   <module>r      s,   				 ? ? ? ? ? ? ? ? ( ( ( ( ( ( % % % % % % / / / / / /	x	 	  H7??GOOBGOOBG$4$4X$>$>??@@B B8 8 8 8*	5 	5 	55 5 59 9 9= = =(S4 S4 S4 S4 S4r?   