
    MZd!                     0   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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d d	l-m.Z. dd
Z/eZ0e(Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;y)    )Tuple)pi)Powsymbols)sympify)sstr)G
centimetercoulombdaydegreegramhbarhourinchjoulekelvinkilogram	kilometerlengthmetermileminutenewtonplanckplanck_lengthplanck_massplanck_temperatureplanck_timeradianssecondspeed_of_light	steradiantimekm)
convert_tocheck_dimensions)raisesc                 P    t         t        |       j                  |fi |d      S )NT)	full_prec)r	   r   evalf)enoptionss      E/usr/lib/python3/dist-packages/sympy/physics/units/tests/test_util.pyNSr1      s&     
  .g.$??    c                  0    t         t         z   t         k(  sJ y N)L r2   r0   test_dim_simplify_addr7      s    q5A::r2   c                  >    t         t        z  t         t        z  k(  sJ y r4   r5   Tr6   r2   r0   test_dim_simplify_mulr;      s    Q3!A#::r2   c                  <    t        t        d      t        dz  k(  sJ y N   )r   r5   r6   r2   r0   test_dim_simplify_powr?   "   s    q!91r2   c                  L    t         t         z   t        z  t         t        z  k(  sJ y r4   r9   r6   r2   r0   test_dim_simplify_recrA   &   s    EQ;!A#r2   c                     t        dt              dk(  sJ t        t        t              dt        z  dz  k(  sJ t        t        t        z  t
              t
        dz  k(  sJ t        dt        z  t        z  t
              t
        k(  sJ t        dt        z  t        z  t
              dt
        z  k(  sJ t        t
        t        t        z        dt        z  t        z  k(  sJ t        dt
        z  t        t        z        dt        z  t        z  k(  sJ t        t        t              dt        z  k(  sJ t        dt        z  t              dt        z  k(  sJ t        t        t              d	t        z  d
z  k(  sJ t        t        t        z  t        t        z        dt        z  dt        z  z  k(  sJ t        dt        z  t        t        z        dt        z  k(  sJ t        dt        z  t        t        z  t        dz  z        dt        z  t        z  t        dz  z  k(  sJ t        t        t        z   t              dt        z  d
z  k(  sJ t        dt        z  dt        z  z   t              dt        z  d
z  k(  sJ t        t        dz  t        dz        dt        dz  z  dz  k(  sJ t        dt        dz  z  t              dt        dz  z  dz  k(  sJ t        dt        z  t        z  dt        z  t        z  z   t        t        z        dt        z  dt        z  z  k(  sJ t        dt        z  t        z  dt        z  t        z  z   t        t        z        dt        z  dt        z  z  k(  sJ t        t        t        t        z   z  t              dt        dz  z  k(  sJ t        t        t              t        k(  sJ t        t        t               dt         z  t"        z  k(  sJ t        t        t        t         g      dt         z  t"        z  k(  sJ t        t"        t        z  t               dt         z  k(  sJ t        t"        t               dt         z  k(  sJ y )N   i:b  i	=  Jx#r>   iQ x   i }   i i  i?  i@x}i  i`  im  iA ie  i'    )r'   r   r   r   r"   r#   r   r   r   r   r   r   r   r$   r   r!   r   r   r6   r2   r0   test_convert_to_quantitiesrI   +   s   a1$$$dI&%	/%*????eFlN3~i7OOOOiof,n=OOOk%'.?1^CSSSSneFl3yv7MMMMa&f559OOOOc6"eFl222aff%V333dE"fUl3&6666d4i40E)OU4Z4PPPPahf-6999ahvqy 89QuWX=MfVWi=WWWWi$&.&,s2BBBBa	kAdF*E2fUl36FFFFdAguax(E%(N8,CCCCaai'5>(+BBBBa	k$&44eFlCuU{TYZ`T`Gaaaaa	k$&44j6GHFS]L]_cdj_jLkkkki4)#34e<%ST*@TTTTi)Y666gv&#f*R-777gv/3v:b=@@@bj&)SZ777b&!SZ///r2   c            
         t        t        t        t        g      dt        z  t        z  k(  sJ t        t        t        t        f      dt        z  t        z  k(  sJ t        t        t	        t        t                    dt        z  t        z  k(  sJ t        t
        t        t        t        g      t        t        dz  z  t        dz  z  k(  sJ t        t
        t        t        t        g      dt        dz  z  t        z  t        dz  z  k(  sJ t        dt        z  t        z  t        g      t        k(  sJ t        t        dz  t        t        t        g      t        t        z  dz  dz  k(  sJ t        dt        z  t        t        t        g      dt        z  t        z  k(  sJ t        t        t        t        t        g      dt        z  k(  sJ t        t        t        t        t        t        g      d      dk(  sJ t        t        t        t              d      d	k(  sJ t        t        t        t              d      d
k(  sJ t        t        t        t              d      dk(  sJ t        t        t         t"              d      dk(  sJ t        t        t        t        t        t        t        g      t              d      dk(  sJ y )NrD   r>   逖 rE   g      ?   )r.   zW6.187142e+34*gravitational_constant**0.5000000*hbar**0.5000000/speed_of_light**1.500000z2.176434e-8*kilogramz1.616255e-35*meter   z5.39125e-44*secondz1.416784e+32*kelvin
   z1.000000000*meter)r'   r#   r   r"   r   r   r   r   r   r
   r   r1   r   r   r   r    r   r   r6   r2   r0   $test_convert_to_tuples_of_quantitiesrO   I   sG   nufo6)e:Kf:TTTTnufo6)e:Kf:TTTTneE6&:;y5?PSY?YYYYeeXv678E1H;LVUVY;VVVVej$78HZQR]<RSW<WX^`aXa<aaaaiof,~.>?>QQQnq(5&(*CDfU^H^abHbbbba.(5&(*CDX]H]`fHffffa!^V45Q>>>jND 9:a@  E^  ^  ^  ^jh/159OOOOj.!48LLLLjf-37KKKKj+V4:>SSSSjEA~v+FGOSUVZmmmmr2   c                  x   ddl m} m}m}m}m}m} ddlm}  |d      \  }}| |z  j                         dk(  sJ ||z  j                         dk(  sJ || z  j                         dk(  sJ d|z  |z  |dz  z  |z  | z  j                         d	|z  t        z  k(  sJ | |z  |z  j                         d
dt        z  z  k(  sJ d|z  t        z  j                         dt        z  k(  sJ d|z  t        z  dt        z  z  j                         dk(  sJ dt        dz  z  |t        z  dz  z  j                         dk(  sJ y )Nr   )cmmmr&   mKkilor   x yrN     i r>   i ʚ;   rK   rC   i     )sympy.physics.unitsrQ   rR   r&   rS   rT   rU   sympy.core.symbolr   simplifyr   r   r   r   )	rQ   rR   r&   rS   rT   rU   r   xys	            r0   test_eval_simplifyr_   ]   s@   ::)5>DAqrE###qD??$$$rE'''qDF2q5LN2'')Z\&-@@@@rE!G1hz&9#::::dF5L""$U
222dF5L!I+&002a777ilNDJ?*446!;;;r2   c                  F   ddl m}  ddlm}m} ddlm}  |d      \  }} | |d|z  t        z  t        z  |z   z        |dt        z  t        z  |z   z  k(  sJ  | |t        z  |t        z   z        |dz  ||d	z  z   z  d	z  k(  sJ  | |t        z  ||z  t        |t        z   z  z   z        |dz  |dz  |d	z  ||d	z  z   z  z   z  d	z  k(  sJ  | d|t        z  |z  d
z  z  t        z        d|z  d	z  k(  sJ  | |dz  t        z  t        dz  |z  z         d|dz  z  dz  k(  sJ y )Nr   quantity_simplify)rU   footr   rV      i@  r>      rW   i      rC      )
sympy.physics.units.utilrb   rZ   rU   rc   r[   r   r   r   r   )rb   rU   rc   r   r]   r^   s         r0   test_quantity_simplifyri   n   sV   :.)5>DAqQ$ve 3a 789QU
6@QTU@U=VVVVT$Yt45q$b.9QRT9TTTTT$YT	D$+4F(FGHDRSGUY[\U\_cdf_fhlostvovhv_wUwLxy{L{{{{Qd4!45d:;tDy|KKKT1WT\D!GDL89RaZ^KKKr2   c                     ddl m}  ddlm}m}m}m}m}m}m	}m
}m}	m}
m}m}m}m}  | ||z  dd      |k(  sJ  | d|z  |z  dd      d|z  k(  sJ  | ||z  dd      |k(  sJ  | ||z  dd      |k(  sJ  | |t"        dz  z  dd      |k(  sJ  | ||z  dd      |k(  sJ  | ||z  dd      |k(  sJ  | t"        dz  |z  dd      t"        dz  |z  k(  sJ  | ||z  dd      |k(  sJ  | |t$        z  dd      |k(  sJ  | ||z  dd      |k(  sJ  | ||z  dd      |	k(  sJ  | t$        |z  dd      |k(  sJ  | ||z  |z  dd      |
k(  sJ  | ||z  t"        d	z  z  dd      |k(  sJ  | ||z  dd      |k(  sJ  | d
t&        z  |z  dd      dt"        z  d|z  z  k(  sJ  | d
t(        z  t"        z  |d	z  z  dd      d
|z  k(  sJ y )Nr   ra   )ampereohmvoltr   pascalfaradr"   wattsiemenshenryteslaweberr   r   TSI)across_dimensionsunit_systemrM   rC   r>            )rh   rb   rZ   rk   rl   rm   r   rn   ro   r"   rp   rq   rr   rs   rt   r   r   r   r   r   r   )rb   rk   rl   rm   r   rn   ro   r"   rp   rq   rr   rs   rt   r   r   s                  r0   (test_quantity_simplify_across_dimensionsr{   {   ss   : F  F  F  FVCZ4TRVZZZZQvXc\TtTXYZ^X^^^^T&[DdSWZZZZT#X4PTZZZZU5!8^tQUVZ````U3Y$DQU[[[[U6\TtTX\\\\UAXf_RVW[`bc[cdj[jjjjU6\TtTX\\\\U7]dPTUY]]]]T&[DdSWZZZZVD[DdSW^^^^WT\TtTX]]]]T&[/4UYZ^ccccT&[1TW[\`eeeeU6\TtTX]]]]Qy[-SWX\^_d\dfhiofo\ppppQxZ-fai74]abfghnfnnnnr2   c                  h   t        d      } t        t        | z         t        | z   k(  sJ t        t        | z         t        | z   k(  sJ t        t        | z   j	                  | t                    t        k(  sJ t        t
        t        z  t        z         t        t        t
        z  z   k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d	        y )
Nr]   c                  &    t        t        dz         S NrX   )r(   r   r6   r2   r0   <lambda>z'test_check_dimensions.<locals>.<lambda>   s    /q9 r2   c                  &    t        t        dz         S r~   )r(   r   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /
; r2   c                  .    t        t        t        z         S r4   )r(   r   r%   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /> r2   c                  .    t        t        t        z         S r4   r(   r   r"   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /? r2   c                  4    t        dt        z  t        z         S r=   r   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /E	F0BC r2   c                  :    t        dt        z  dt        z  z         S )Nr>   rC   r   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /E	AJ0FG r2   c                  :    t        dt        z  dt        z  z         S r~   )r(   r"   r   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s    /F
QY0FG r2   c                  P    t        dt        z  t        t        z   z  t        z         S r=   )r(   r   r   r   r&   r6   r2   r0   r   z'test_check_dimensions.<locals>.<lambda>   s     /E	4*;L0MPR0RS r2   )
r   r(   r   r   subsr   r   r   r)   
ValueError)r]   s    r0   test_check_dimensionsr      s    AD1H%111FQJ'6A:555VaZ--a89VCCCF5L501UU6\5IIII
:9:
:;<
:>?
:?@
:CD
:GH
:GH
:STr2   N)   )<sympy.core.containersr   sympy.core.numbersr   sympy.core.powerr   r[   r   sympy.core.sympifyr   sympy.printing.strr	   rZ   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   rh   r'   r(   sympy.testing.pytestr)   r1   r5   r:   r7   r;   r?   rA   rI   rO   r_   ri   r{   r   r6   r2   r0   <module>r      s    ' !   % & #1 1 1 1 1 1 1 1
 B '@ 


0<n(<"Lo2Ur2   