ó
¡¼™\c           @   s  d  d l  m Z d  d l m Z m Z m Z m Z m Z m Z m	 Z	 d  d l m
 Z
 m Z m Z m Z m Z m Z m Z 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 e d ƒ \ Z Z Z Z d	 „  Z d
 „  Z d „  Z  d „  Z! d „  Z" d S(   iÿÿÿÿ(   t
   Quaternion(   t   symbolst   ret   imt   Addt   Mult   It   Abs(   t   cost   sint   sqrtt	   conjugatet   logt   acost   Et   pi(   t   raises(   t   Matrix(   t   difft	   integratet   trigsimp(   t   St   Rationals   x y z wc       	   C   s‰  t  t t t t ƒ }  |  |  t  d t d t d t d t ƒ k sJ t ‚ t  j t d ƒ d t d ƒ d t d ƒ d f d t d ƒ } | t  t	 d d ƒ t	 d d ƒ t	 d d ƒ t	 d d ƒ ƒ k sÐ t ‚ t
 t t ƒ t t ƒ d g t t ƒ t t ƒ d g d d d g g ƒ } t t  j | ƒ ƒ } | t  t d ƒ t t t ƒ d ƒ d d d t d t t ƒ d ƒ d ƒ k s…t ‚ d  S(   Ni   i   i   i    iþÿÿÿ(   R    t   xt   yt   zt   wt   AssertionErrort   from_axis_angleR
   R   R   R   R   R	   R   t   from_rotation_matrix(   t   qt   q2t   Mt   q3(    (    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt   test_quaternion_construction   s    5A'Ic       	   C   s  t  d d t ƒ}  t  d d t ƒ} t  d d t ƒ} t t t t t ƒ } |  | t t t |  ƒ t t	 |  ƒ t t ƒ k s„ t
 ‚ d | t d t t t t ƒ k s­ t
 ‚ t | t t d t t t ƒ k sÖ t
 ‚ | | t t | t t t ƒ k sÿ t
 ‚ | | t | t t t t t ƒ d t ƒk s3t
 ‚ | | t t t t t t ƒ | d t ƒk sgt
 ‚ | | t | t t t t t ƒ d t ƒk s›t
 ‚ | t t t t t ƒ k sÁt
 ‚ t d	 d
 t d d t d d d t d t ƒ} t d d
 d d ƒ } | d d	 t t d d t d d t d d d t ƒ k sNt
 ‚ | d d	 t t d	 d d d ƒ k s{t
 ‚ | d d	 t t d d	 t d	 d
 t d d	 t d d t d d d	 t d d t ƒ k sät
 ‚ | d d	 t t d d d d ƒ k st
 ‚ d  S(   Nt   at   complext   bt   realt   ct   commutativei   t   evaluatei   i   i   i   i    i   i   t
   real_fieldiöÿÿÿi   i&   iûÿÿÿ(   R   t   Truet   FalseR    R   R   R   R   R   R   R   R   R   R   (   R#   R%   R'   R   t   q1R   (    (    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt%   test_quaternion_complex_real_addition   s&    9)))444&3E-Zc             só  t  t t t t ƒ }  t  d d d d ƒ } t  d d d d ƒ ‰  t |  ƒ t  t t t t ƒ k si t ‚ |  j ƒ  t t d t d t d t d ƒ k s£ t ‚ |  j	 ƒ  t  t t t t ƒ t t d t d t d t d ƒ k sð t ‚ |  j
 ƒ  t  t t t t ƒ t d t d t d t d k s:t ‚ t t ‡  f d †  ƒ |  j d ƒ t  t d t d t d t d d t t d t t d t t ƒ k s¯t ‚ | j d ƒ t  t d ƒ d	 t d ƒ d	 t d ƒ d
 t d ƒ d	 ƒ k st ‚ | j d ƒ t k s t ‚ | j ƒ  t  t t t d ƒ ƒ d t d ƒ t t t d ƒ ƒ d d t d ƒ t t t d ƒ ƒ d d t d ƒ t t t d ƒ ƒ d ƒ k s½t ‚ | j ƒ  t  t t d ƒ ƒ d t d ƒ t t d ƒ d ƒ d d t d ƒ t t d ƒ d ƒ d d t d ƒ t t d ƒ d ƒ d ƒ k sVt ‚ | j d ƒ t  d t d t t d ƒ d ƒ ƒ d t d ƒ t d t t d ƒ d ƒ ƒ d d t d ƒ t d t t d ƒ d ƒ ƒ d d t d ƒ t d t t d ƒ d ƒ ƒ d ƒ k s"t ‚ t t  t t t t ƒ t ƒ t  d d d d ƒ k s[t ‚ t t  t t t t ƒ t ƒ t  t d d t d d t d d t d d ƒ k s´t ‚ t  j d | ƒ t d ƒ d d t d ƒ d f k sït ‚ d  S(   Ni   i   i   i   i    c              s
   ˆ  j  ƒ  S(   N(   t   inverse(    (   t   q0(    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt   <lambda><   t    iþÿÿÿi   iá   i–   g      à¿i   i   i<   iZ   ix   i   (   i   i   i   (   R    R   R   R   R   R   R   t   normR
   t	   normalizeR/   R   t
   ValueErrort   powR   t   NotImplementedt   expR   R   R	   t   _lnR   R   t   pow_cos_sinR   R   t   rotate_point(   R   R-   (    (   R0   sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt   test_quaternion_functions3   s<    *:MJ_V	%%4	%%4$//>9>c       
   C   s¢  t  d d d d ƒ }  |  j ƒ  d t d ƒ d d t d ƒ d d t d ƒ d f d t t d ƒ d ƒ f k sz t ‚ |  j ƒ  t t d ƒ d t d ƒ d t d ƒ d g t d ƒ d t d ƒ d t d ƒ d g t d ƒ d t d	 ƒ d t d ƒ d g g ƒ k st ‚ |  j d ƒ t t d ƒ d t d ƒ d t d ƒ d t d ƒ d
 g t d ƒ d t d ƒ d t d ƒ d t d ƒ g t d ƒ d t d	 ƒ d t d ƒ d t d ƒ d
 g t d ƒ t d ƒ t d ƒ t d ƒ g g ƒ k st ‚ t d d t	 ƒ} t  t
 | d ƒ d d t | d ƒ ƒ } t | j ƒ  ƒ t t
 | ƒ t | ƒ d g t | ƒ t
 | ƒ d g d d d g g ƒ k s t ‚ | j ƒ  d d t | d ƒ t t | d ƒ ƒ f d t t
 | d ƒ ƒ f k sùt ‚ t | j d ƒ ƒ t t
 | ƒ t | ƒ d t | ƒ t
 | ƒ d g t | ƒ t
 | ƒ d t | ƒ t
 | ƒ d g d d d d g d d d d g g ƒ k sžt ‚ d  S(   Ni   i   i   i   i   i   i   i   i   i   i    t   thetaR&   (   i   i   i   (   i   i   i   (   R    t   to_axis_angleR
   R   R   t   to_rotation_matrixR   R   R   R+   R   R	   R   R   (   R-   R=   R   (    (    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt   test_quaternion_conversionsZ   s2    &7+<G489)3&00c          C   sŽ   t  t t d ƒ t t d ƒ d d ƒ }  t |  j ƒ  ƒ t d d d g d t t ƒ t t ƒ g d t t ƒ t t ƒ g g ƒ k sŠ t ‚ d S(   s3  
    There was a sign mistake in the definition,
    of the rotation matrix. This tests that particular sign mistake.
    See issue 1593 for reference.
    See wikipedia
    https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Quaternion-derived_rotation_matrix
    for the correct definition
    i   i    i   N(   R    R   R   R	   R   R?   R   R   (   R   (    (    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt    test_quaternion_rotation_iss1593}   s
    	)N(#   t   sympy.algebras.quaternionR    t   sympyR   R   R   R   R   R   R   R   R	   R
   R   R   R   R   R   t   sympy.utilities.pytestR   R   R   R   R   R   R   R   R   R   R   R"   R.   R<   R@   RA   (    (    (    sC   lib/python2.7/site-packages/sympy/algebras/tests/test_quaternion.pyt   <module>   s   4:			'	#