o
    GZh*                     @   s^  d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZ d dlmZmZmZmZmZ ed\ZZZed\ZZZed	Zed
Zed ej eej  ee	e ej  Zeej e	eej  ee ej  Z eej eeej  e! e ej  Z"ee ej ee e ej  ed e ej  Z#ed ejejB  eejejB   ee	e ejejB   ZeejejB  e	eejejB   ee ejejB   Zejej ej B Z$ejejej B Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/d d! Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4d*d+ Z5d,S )-    )Function)symbols)sqrt)asincossin)ReferenceFramedynamicsymbolsDyadic)VectorLatexPrintervpprintvsprint	vsstrreprvlatexa, b, czalpha, omega, betaAN   c                 C   s   t | dddS )NFZuse_unicodeZ	wrap_liner   expr r   W/var/www/auris/lib/python3.10/site-packages/sympy/physics/vector/tests/test_printing.pyascii_vpretty      r   c                 C   s   t | dddS )NTFr   r   r   r   r   r   unicode_vpretty    r   r   c                  C   st   t dd} t | d dksJ t dd}t | dks$J t dd}t |  dks8J d S )	Nrtr   zr^{2}zr^2z\dot{r^{2}}Zr__az\ddot{r^{a}})r   r   Zdoprintdiff)r   r2rar   r   r   test_latex_printer$   s    r"   c                  C   s   d} d}t t| ksJ tt|ksJ d} d}t t| ks J tt|ks(J d} d}t t| ks4J tt|ks<J t tj dksFJ ttj dksPJ t dtj d	ks[J tdtj d	ksfJ d S )
NzC 2                               
a  n_x + b n_y + c*sin(alpha) n_zu>    2                           
a  n_x + b n_y + c⋅sin(α) n_zz+alpha n_x + sin(omega) n_y + alpha*beta n_zu"   α n_x + sin(ω) n_y + α⋅β n_zzk                     2    
a       b + c       c     
- n_x + ----- n_y + -- n_z
b         a         b     u{                        2    
a       b + c       c     
─ n_x + ───── n_y + ── n_z
b         a         b     z-a_xr   0)r   vr   wor   xexpected	uexpectedr   r   r   test_vector_pretty_print-   s    r+   c                  C   s  t d\} }}}}| d ||  tj t|tj  t|tj  }t|dks*J td\}}}}|tj || tj  || tj  }t|dksMJ td\}	}
}t d\}}}t	|tj t|	t|
 tj  t|| tj  }t|dks~J t
d	}t d\} }}}}| d ||  |j t||j  t||j  }d
}t||ksJ t
d	dd}| d ||  |j t||j  t||j  }d}t||ksJ d}tt|ksJ d}tt|ksJ d}tt|ksJ d S )Nza, b, c, d, omegar   zs(a^{2} + \frac{b}{c})\mathbf{\hat{a}_x} + \sqrt{d}\mathbf{\hat{a}_y} + \cos{\left(\omega \right)}\mathbf{\hat{a}_z}ztheta, omega, alpha, qzT\theta\mathbf{\hat{a}_x} + \omega^{2}\mathbf{\hat{a}_y} + \alpha q\mathbf{\hat{a}_z}zphi1, phi2, phi3ztheta1, theta2, theta3z\sin{\left(\theta_{1} \right)}\mathbf{\hat{a}_x} + \cos{\left(\phi_{1} \right)} \cos{\left(\phi_{2} \right)}\mathbf{\hat{a}_y} + \cos{\left(\theta_{1} + \phi_{3} \right)}\mathbf{\hat{a}_z}r   zs(a^{2} + \frac{b}{c})\mathbf{\hat{n}_x} + \sqrt{d}\mathbf{\hat{n}_y} + \cos{\left(\omega \right)}\mathbf{\hat{n}_z})z\hat{i}z\hat{j}z\hat{k})ZlatexszR(a^{2} + \frac{b}{c})\hat{i} + \sqrt{d}\hat{j} + \cos{\left(\omega \right)}\hat{k}z~\alpha\mathbf{\hat{n}_x} + \operatorname{asin}{\left(\omega \right)}\mathbf{\hat{n}_y} -  \beta \dot{\alpha}\mathbf{\hat{n}_z}z]- \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} - \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_z}z[\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} + \mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_z})r   r   r'   r   yr   zr   r	   r   r   wwxxxx2)abcdomegar$   thetaalphaqZphi1Zphi2Zphi3Ztheta1Ztheta2Ztheta3r   r)   r   r   r   test_vector_latex`   s:   2&22r9   c                   C   8   t tjd dddksJ t tjd dddksJ d S )N      @FZ	full_precz3.0\mathbf{\hat{n}_x}Tz"3.00000000000000\mathbf{\hat{n}_x})r   r   r'   r   r   r   r   test_vector_latex_arguments      r=   c                  C   sX   t d} td\}}| | j }t|dksJ | | | j }t|dks*J d S )Nr   zomega, alphaz\dot{\omega}\mathbf{\hat{n}_x}z'\dot{\omega}^{\alpha}\mathbf{\hat{n}_x})r   r	   r   r'   r   )r   r5   r7   r$   r   r   r    test_vector_latex_with_functions   s   r?   c                  C   s   d} d}t t| ksJ tt|ksJ d} d}t t| ks J tt|ks(J t tg dks2J ttg dks<J t tdksDJ ttdksLJ t tdksTJ ttd	ks\J d S )
Nz0 2
a  n_x|n_y + b n_y|n_y + c*sin(alpha) n_z|n_yu5    2
a  n_x⊗n_y + b n_y⊗n_y + c⋅sin(α) n_z⊗n_yz7alpha n_x|n_x + sin(omega) n_y|n_z + alpha*beta n_z|n_xu4   α n_x⊗n_x + sin(ω) n_y⊗n_z + α⋅β n_z⊗n_xr#   z- n_x|n_y - n_x|n_zu   - n_x⊗n_y - n_x⊗n_zzn_x|n_y + n_x|n_zu   n_x⊗n_y + n_x⊗n_z)r   r,   r   r'   r
   r/   r0   r(   r   r   r   test_dyadic_pretty_print   s   r@   c                  C   s@   d} t t| ks
J d} t t| ksJ t tg dksJ d S )Nza^{2}\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_y} + b\mathbf{\hat{n}_y}\otimes \mathbf{\hat{n}_y} + c \sin{\left(\alpha \right)}\mathbf{\hat{n}_z}\otimes \mathbf{\hat{n}_y}z\alpha\mathbf{\hat{n}_x}\otimes \mathbf{\hat{n}_x} + \sin{\left(\omega \right)}\mathbf{\hat{n}_y}\otimes \mathbf{\hat{n}_z} + \alpha \beta\mathbf{\hat{n}_z}\otimes \mathbf{\hat{n}_x}r#   )r   r,   r'   r
   )r)   r   r   r   test_dyadic_latex   s
   rA   c                   C   sh   t tg dks
J t tdksJ t tdksJ t tdks"J t tdks*J t tdks2J d S )Nr#   z5a**2*(N.x|N.y) + b*(N.y|N.y) + c*sin(alpha)*(N.z|N.y)z=alpha*(N.x|N.x) + sin(omega)*(N.y|N.z) + alpha*beta*(N.z|N.x)z-alpha*N.x + asin(omega)*N.y - beta*alpha'*N.zz- (N.x|N.y) - (N.x|N.z)z(N.x|N.y) + (N.x|N.z))r   r
   r,   r'   r.   r/   r0   r   r   r   r   test_dyadic_str   s   rB   c                  C   sv   ddl m}  td}td}td}td}td}d}||||||||||  }| ||ks9J d S )	Nr   )r   r'   JfghzRJ \left(\frac{d}{d x} g{\left(x \right)} - \frac{d}{d x} h{\left(x \right)}\right))sympy.physics.vectorr   r   r   r   subs)r   r'   rC   rD   rE   rF   r)   r   r   r   r   test_vlatex   s   *rI   c                  C   sr   t d\} }}td}| |j ||j  ||j  }||j ||j  | |j  }|| }d}t||ks7J dS )z
    Test for proper pretty printing of physics vectors with ADD
    instances in arguments.

    Test is exactly the one suggested in the original bug report by
    @moorepants.
    r   r   z'(a + b) a_x + (b + c) a_y + (a + c) a_zN)r   r   r'   r,   r-   r   )r1   r2   r3   r   r$   r%   r-   r)   r   r   r   test_issue_13354  s   	rJ   c                  C   sZ  t  tj } t| dksJ t| dksJ t   tj } t| dks(J t| dks0J t| dks8J t    tj } t| dksKJ t| dksSJ t| dks[J t     tj } t| d	kspJ t| d
ksxJ t| dksJ t      tj } t| dksJ d}d}t| |ksJ t| |ksJ d S )Nu   ω̇ n_xzomega'(t) n_xz\ddot{\omega}\mathbf{\hat{n}_x}u   ω̈ n_xzomega''(t) n_xz \dddot{\omega}\mathbf{\hat{n}_x}u	   ω⃛ n_xzomega'''(t) n_xz!\ddddot{\omega}\mathbf{\hat{n}_x}u	   ω⃜ n_xzomega''''(t) n_xz.\frac{d^{5}}{d t^{5}} \omega\mathbf{\hat{n}_x}zJ 5            
d             
---(omega) n_x
  5           
dt            u=    5        
d         
───(ω) n_x
  5       
dt        )r5   r   r   r'   r   r   r   )r$   r)   r*   r   r   r   test_vector_derivative_printing  s*   rK   c                   C   s>   t tdksJ t t tj dksJ ttdksJ d S )Nz+alpha*N.x + sin(omega)*N.y + alpha*beta*N.zz
omega'*N.x)r   r%   r5   r   r   r'   r   r   r   r   r   test_vector_str_printingJ  s   rL   c                   C   r:   )Nr;   Fr<   z3.0*N.xTz3.00000000000000*N.x)r   r   r'   r   r   r   r   test_vector_str_argumentsP  r>   rM   c                  C   s   dd l m  m}  | d}| dd\}}td}t||| d  |j dks+J t|| d |j dks:J t|| t |j d	ksIJ d S )
Nr   r   z
theta, phi   Lr   z>L \left(\dot{\phi} + \dot{\theta}\right)^{2}\mathbf{\hat{a}_x}z<\left(\dot{\phi} + \dot{\theta}\right)^{2}\mathbf{\hat{a}_x}z:\left(\dot{\phi} \dot{\theta}\right)^{a}\mathbf{\hat{a}_x})	Zsympy.physics.mechanicsZphysicsZ	mechanicsr   r	   r   r   r'   r1   )meZA_frameZthetadZphidrO   r   r   r   test_issue_14041U  s   
rQ   N)6Zsympy.core.functionr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   r   rG   r   r	   r
   Zsympy.physics.vector.printingr   r   r   r   r   r1   r2   r3   r7   r5   betar   r   r'   r,   r-   r$   r%   r   r.   r&   r/   r0   r   r   r"   r+   r9   r=   r?   r@   rA   rB   rI   rJ   rK   rL   rM   rQ   r   r   r   r   <module>   sD   *&*2<8	3F	1