
\c           @  s   d  Z  d d l m Z m Z d d l m Z m Z m Z m Z d d l	 m
 Z
 d d l m Z d   Z d   Z e d  Z e d d d d f  Z d   Z d S(   s!   Known matrices related to physicsi(   t   print_functiont   division(   t   Matrixt   It   pit   sqrt(   t   exp(   t   rangec         C  st   |  d k r d d f } nO |  d k rC d t  f t  d f f } n' |  d k r^ d	 d
 f } n t d   t |  S(   s  Returns a Pauli matrix `\sigma_i` with `i=1,2,3`

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Pauli_matrices

    Examples
    ========

    >>> from sympy.physics.matrices import msigma
    >>> msigma(1)
    Matrix([
    [0, 1],
    [1, 0]])
    i   i    i   i   is   Invalid Pauli index(   i    i   (   i   i    (   i   i    (   i    i(   R   t
   IndexErrorR   (   t   it   mat(    (    s5   lib/python2.7/site-packages/sympy/physics/matrices.pyt   msigma
   s    
c         C  s   | | } | | } | | } | d } | d } | d }	 | |	 | | f | | |	 | f | | | | f f }
 |  t  |
  S(   s  Returns the Parallel Axis Theorem matrix to translate the inertia
    matrix a distance of `(dx, dy, dz)` for a body of mass m.

    Examples
    ========

    To translate a body having a mass of 2 units a distance of 1 unit along
    the `x`-axis we get:

    >>> from sympy.physics.matrices import pat_matrix
    >>> pat_matrix(2, 1, 0, 0)
    Matrix([
    [0, 0, 0],
    [0, 2, 0],
    [0, 0, 2]])

    i   (   R   (   t   mt   dxt   dyt   dzt   dxdyt   dydzt   dzdxt   dxdxt   dydyt   dzdzR
   (    (    s5   lib/python2.7/site-packages/sympy/physics/matrices.pyt
   pat_matrix/   s    


c         C  s!  |  d k r t  d   n  |  d k r< d	 d
 d d f } n |  d k r] d d d d f } n |  d k r d d d t f d d t d f d t d d f t d d d f f } nB |  d k r d d d d f } n! |  d k r d d d d f } n  t |  } | r|  d k r| } qn  | S(   so  Returns a Dirac gamma matrix `\gamma^\mu` in the standard
    (Dirac) representation.

    If you want `\gamma_\mu`, use ``gamma(mu, True)``.

    We use a convention:

    `\gamma^5 = i \cdot \gamma^0 \cdot \gamma^1 \cdot \gamma^2 \cdot \gamma^3`

    `\gamma_5 = i \cdot \gamma_0 \cdot \gamma_1 \cdot \gamma_2 \cdot \gamma_3 = - \gamma^5`

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Gamma_matrices

    Examples
    ========

    >>> from sympy.physics.matrices import mgamma
    >>> mgamma(1)
    Matrix([
    [ 0,  0, 0, 1],
    [ 0,  0, 1, 0],
    [ 0, -1, 0, 0],
    [-1,  0, 0, 0]])
    i    i   i   i   i   s   Invalid Dirac indexi(   i    i   i   i   i   (   i   i    i    i    (   i    i   i    i    (   i    i    ii    (   i    i    i    i(   i    i    i    i   (   i    i    i   i    (   i    ii    i    (   ii    i    i    (   i    i    i   i    (   i    i    i    i(   ii    i    i    (   i    i   i    i    (   i    i    i   i    (   i    i    i    i   (   i   i    i    i    (   i    i   i    i    (   i   i   i   i   (   R   R   R   (   t   mut   lowerR
   R   (    (    s5   lib/python2.7/site-packages/sympy/physics/matrices.pyt   mgammaM   s@    i   i    c         C  s   g  t  |   D]% } g  t  |   D] } d ^ q  ^ q } t d t t |   } d g |  | d <x" t  |   D] } d | | d <qn WxS t  d |   D]B } x9 t  | |   D]( } | | | | | | <| | | <q Wq Wd t |   t |  S(   s  
    Returns an expression of a discrete Fourier transform as a matrix multiplication.
    It is an n X n matrix.

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/DFT_matrix

    Examples
    ========

    >>> from sympy.physics.matrices import mdft
    >>> mdft(3)
    Matrix([
    [sqrt(3)/3,                sqrt(3)/3,                sqrt(3)/3],
    [sqrt(3)/3, sqrt(3)*exp(-2*I*pi/3)/3, sqrt(3)*exp(-4*I*pi/3)/3],
    [sqrt(3)/3, sqrt(3)*exp(-4*I*pi/3)/3, sqrt(3)*exp(-8*I*pi/3)/3]])
    ii   i    N(   R   t   NoneR   R   R   R   R   (   t   nt   yt   xR
   t   baseR	   t   j(    (    s5   lib/python2.7/site-packages/sympy/physics/matrices.pyt   mdft   s    8*N(   i   i    i    i    (   i    ii    i    (   i    i    ii    (   i    i    i    i(   t   __doc__t
   __future__R    R   t   sympyR   R   R   R   t   sympy.functionsR   t   sympy.core.compatibilityR   R   R   t   FalseR   t   minkowski_tensorR    (    (    (    s5   lib/python2.7/site-packages/sympy/physics/matrices.pyt   <module>   s   "	%	I