U
    h*                     @   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   L/tmp/pip-unpacked-wheel-6t8vlncq/sympy/physics/vector/tests/test_printing.pyascii_vpretty   s    r   c                 C   s   t | dddS )NTFr   r   r   r   r   r   unicode_vpretty    s    r   c                  C   st   t dd} t | d dks$tt dd}t | dksHtt dd}t |  dksptd S )	Nrtr   zr^{2}zr^2z\dot{r^{2}}Zr__az\ddot{r^{a}})r   r   ZdoprintAssertionErrordiff)r   Zr2rar   r   r   test_latex_printer$   s    r!   c                  C   s   d} d}t t| ksttt|ks(td} d}t t| ks@ttt|ksPtd} d}t t| kshttt|ksxtt tj dkstttj dkstt dtj d	ksttdtj d	kst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   r   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sTtt	d\}}}}|tj || tj  || tj  }t|dkstt	d\}	}
}t d\}}}t
|tj t|	t|
 tj  t|| tj  }t|dksttd	}t d\} }}}}| d ||  |j t||j  t||j  }d
}t||ks^ttd	dd}| d ||  |j t||j  t||j  }d}t||kstd}tt|kstd}tt|kstd}tt|kst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   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r8   c                   C   s8   t tjd dddkstt tjd dddks4t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   r   test_vector_latex_arguments   s    r;   c                  C   sX   t d} td\}}| | j }t|dks2t| | | j }t|dksTt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   )r   r4   r6   r#   r   r   r    test_vector_latex_with_functions   s    r<   c                  C   s   d} d}t t| ksttt|ks(td} d}t t| ks@ttt|ksPtt tg dksdtttg dksxtt tdkstttdkstt tdkstttd	kst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
   r.   r/   r'   r   r   r   test_dyadic_pretty_print   s    r=   c                  C   s@   d} t t| kstd} t t| ks(tt tg dks<t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   r   test_dyadic_latex   s
    r>   c                   C   sh   t tg dkstt tdks$tt tdks4tt tdksDtt tdksTtt tdksdt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-   r.   r/   r   r   r   r   test_dyadic_str   s    r?   c                  C   sv   ddl m}  td}td}td}td}td}d}||||||||||  }| ||ksrt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   subsr   )r   r&   r@   rA   rB   rC   r(   r   r   r   r   test_vlatex   s    *rF   c                  C   sr   t d\} }}td}| |j ||j  ||j  }||j ||j  | |j  }|| }d}t||ksnt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   r   )r0   r1   r2   r   r#   r$   r,   r(   r   r   r   test_issue_13354  s    	rG   c                  C   sb  t  tj } t| dkstt| dks.tt   tj } t| dksPtt| dks`tt| dksptt    tj } t| dkstt| dkstt| dkstt     tj } t| d	kstt| d
kstt| dkstt      tj } t| dks2td}d}t| |ksLtt| |ks^t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        )r4   r   r   r&   r   r   r   r   )r#   r(   r)   r   r   r   test_vector_derivative_printing  s*    rH   c                   C   s>   t tdkstt t tj dks*tttdks:td S )Nz+alpha*N.x + sin(omega)*N.y + alpha*beta*N.zz
omega'*N.x)r   r$   r   r4   r   r   r&   r   r   r   r   r   test_vector_str_printingJ  s    rI   c                   C   s8   t tjd dddkstt tjd dddks4td S )Nr9   Fr:   z3.0*N.xTz3.00000000000000*N.x)r   r   r&   r   r   r   r   r   test_vector_str_argumentsP  s    rJ   c                  C   s   dd l m  m}  | d}| dd\}}td}t||| d  |j dksVtt|| d |j dksttt|| t	 |j d	kst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&   r   r0   )meZA_frameZthetadZphidrL   r   r   r   test_issue_14041U  s    
rN   N)6Zsympy.core.functionr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   r   rD   r   r	   r
   Zsympy.physics.vector.printingr   r   r   r   r   r0   r1   r2   r6   r4   betar   r   r&   r+   r,   r#   r$   r   r-   r%   r.   r/   r   r   r!   r*   r8   r;   r<   r=   r>   r?   rF   rG   rH   rI   rJ   rN   r   r   r   r   <module>   sB   *&*2<8	3F	1