U
    h                     @   s   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z
 d dlmZmZmZ d dlmZ d dlmZ edZd	d
 Zdd Zdd Zdd Zdd Zdd ZdS )    )Floatpi)symbols)cossin)ImmutableDenseMatrix)ReferenceFramedynamicsymbolsouter_check_dyadic)raisesAc                     s  t jt jB  t jt jB } t jt jB } d dks4t dks@t d dt j t jB ks\t d d  kspt d  @ dkst | @ dkst t j@ t jkst t jA dkst t jA t jt jB kst t jA t j t jB kst| t jA t j t jB kstt j A dks"tt j A t j t jB ks@tt j A t jt jB ks\tt j @ t jksrtt j @ dkstt j| @ t jkst |@ t jt jB kst| @ dkst t dksttd}tdd}t dd|t jg} | ||kst |t	|d |j|jB  t
| t	| |j|jB   t
| t	| |j|jB   t
|d |j|jB   kst |t t	||jt jB  t
| |jt jB   kst t |t	|t j|jB  t
| t j|jB   kst || t jt jB  | t jt jB   ksFt t tdddgdddgdddggksvt t |tt	|t
| dgdddgdddggkst|t tdddgdddgdddggksttd	\}}}}}	}
|t j |t j  |t j  }|t j |	t j  |
t j  }||}|t t|| ||	 ||
 g|| ||	 ||
 g|| ||	 ||
 ggkst||}t d
d|t jg}t|t |t  |t j ||D ] \}}||  dkstqtt fdd d S )Nr      g       @g      ?q   BZAxisza, b, c, d, e, fCc                      s
     dS Nr   )Z	applyfunc d1r   J/tmp/pip-unpacked-wheel-6t8vlncq/sympy/physics/vector/tests/test_dyadic.py<lambda>A       ztest_dyadic.<locals>.<lambda>)r   xyAssertionErrorzdtr	   Z	orientnewZexpressr   r   Z	to_matrixMatrixr   r
   zipZdcmTsimplifyr   	TypeError)Zd2Zd3r   Zqdr   abcdefZv1Zv2Zd4Zd5r   expectedactualr   r   r   test_dyadic   sx    
.


<<400

 r-   c               
   C   s  t d\
} }}}}}}}}}	td}
|
j|
jB }d|  d|  | }|
j|@ |
j@ | | | |  ksht| }|
j|@ |
j@ | | | |  kst|	d |d  dt | |d   | }| }|
j|@ |
j@ |	d |d  dt | |d   kstdd|   ddd|     dd|    | }| }|
j|@ |
j@ dksJtd|  |d  d|d   d| d  |  | | d  | }| }|
j|@ |
j@ d	| kstd S )
Nzx, y, z, k, n, m, w, f, s, ANr   r         r   )r   r   r   r   r#   r   )r   r   r   knmwr*   sr   r.   ZdyZtest1Ztest2Ztest3Ztest4r   r   r   test_dyadic_simplifyD   s     $$(8,<r8   c                  C   sF   t d} td}|| j| jB  }||did| j| jB  ksBtd S )Nr.   r7   r   )r   r   r   subsr   )r.   r7   r%   r   r   r   test_dyadic_subs[   s    r:   c                   C   s   t tdd  d S )Nc                   S   s   t dS r   r   r   r   r   r   r   c   r   z#test_check_dyadic.<locals>.<lambda>)r   r$   r   r   r   r   test_check_dyadicb   s    r;   c                  C   s   t d} t| j| jB  }|dtdd| j| jB  ks<ttd}d| t | j| jB  }|dtddtdd | | j| jB  kst|jd|d	id
tdd| j| jB  kstd S )Nr.   r0   z3.1416r7      r   5	   g"~@)r9   z80.48760378)r   r   r   Zevalfr   r   r   )r.   r%   r7   r   r   r   test_dyadic_evalff   s    $2r?   c                     s   t d\} td}t|j|j} |   tit | ksVt  tit| kstt |  |    |  di|kst d| di|ksttt	 fdd tt	 fdd d S )Nzx y zr.   r   r   c                      s      S Nxreplacer   )vr   r   r   z   r   z&test_dyadic_xreplace.<locals>.<lambda>c                      s     gS r@   rA   r   rC   r   r   r   r   r   {   r   )
r   r   r
   r   rB   r   r   r   r   r$   )r   r.   Dr   rD   r   test_dyadic_xreplacep   s    &rF   N)Zsympy.core.numbersr   r   Zsympy.core.symbolr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.matrices.immutabler   r    Zsympy.physics.vectorr   r	   r
   Zsympy.physics.vector.dyadicr   Zsympy.testing.pytestr   r   r-   r8   r:   r;   r?   rF   r   r   r   r   <module>   s   8
