ó
šßÈ[c           @   s´  d  d l  Z  d  d l m Z d  d l Z d  d l 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 y d  d l Z Wn e k
 r­ e Z n Xe Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e j j d ƒ d e f d „  ƒ  Yƒ Z e j j d ƒ d e f d „  ƒ  Yƒ Z  e j j d ƒ d e f d „  ƒ  Yƒ Z! d S(   iÿÿÿÿN(   t
   namedtuple(   t   assert_allclosei   (   t   units(   t   raises(   t   zip(   t   NUMPY_LT_1_13t   TestUfuncCoveragec           B   s/   e  Z d  Z e j j e d d ƒd „  ƒ Z RS(   s   Test that we cover all ufunc'st   reasons$   scipy.special coverage is incompletec         C   s«   t  g  t j j j j ƒ  D]! } t | ƒ t j k r | ^ q ƒ } d d l m	 } | j
 t  | j j ƒ  ƒ B} | | t  g  ƒ k s‹ t ‚ | | t  g  ƒ k s§ t ‚ d  S(   Ni   (   t   quantity_helper(   t   sett   npt   coret   umatht   __dict__t   valuest   typet   ufunct    R   t   UNSUPPORTED_UFUNCSt   UFUNC_HELPERSt   keyst   AssertionError(   t   selfR   t   all_np_ufuncst   qht   all_q_ufuncs(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_coverage   s    $(   t   __name__t
   __module__t   __doc__t   pytestt   markt   skipift	   HAS_SCIPYR   (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyR      s   t   TestQuantityTrigonometricFuncsc           B   sÝ   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s&   
    Test trigonometric functions
    c         C   sB   t  j d t j ƒ } | j t j k s. t ‚ t | j d ƒ d  S(   Ng      >@g      à?(	   R
   t   sint   ut   degreet   unitt   dimensionless_unscaledR   R   t   value(   R   t   q(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_sin_scalar2   s    c         C   s‡   t  j t  j d t  j d t  j d g ƒ t j ƒ } | j t j k sN t ‚ t	 | j
 t  j d d t  j d ƒ d g ƒ d d ƒd  S(   Ng        g      @g       @g      ð?t   atolgVçž¯Ò<(   R
   R#   t   arrayt   piR$   t   radianR&   R'   R   R   R(   t   sqrt(   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_sin_array7   s    6	c         C   sH   d t  j } t j t j | ƒ ƒ j | j ƒ } t | j | j ƒ d  S(   Ng      >@(	   R$   R%   R
   t   arcsinR#   t   toR&   R   R(   (   R   t   q1t   q2(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arcsin_scalar=   s    $c         C   sh   t  j d t  j d t  j d g ƒ t j } t  j t  j | ƒ ƒ j | j ƒ } t	 | j
 | j
 ƒ d  S(   Ng        g      @g       @(   R
   R,   R-   R$   R.   R1   R#   R2   R&   R   R(   (   R   R3   R4   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arcsin_arrayB   s    -$c         C   sL   t  j t ƒ  } t j d t j ƒ Wd  QX| j j d d k sH t	 ‚ d  S(   Ng      @i    s<   Can only apply 'sin' function to quantities with angle units(
   R   R   t	   TypeErrorR
   R#   R$   t   mR(   t   argsR   (   R   t   exc(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_sin_invalid_unitsG   s    c         C   sL   t  j t ƒ  } t j d t j ƒ Wd  QX| j j d d k sH t	 ‚ d  S(   Ng      @i    s<   Can only apply 'arcsin' function to dimensionless quantities(
   R   R   R7   R
   R1   R$   R8   R(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arcsin_invalid_unitsM   s    c         C   sO   d t  j } d t  j } t j ƒ  # t j d ƒ t j | | ƒ Wd  QXd  S(   Ni   i   t   error(   R$   t   kpct   pct   warningst   catch_warningst   filterwarningsR
   R1   (   R   t   at   b(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt+   test_arcsin_no_warning_on_unscaled_quantityS   s
    c         C   sI   t  j t  j d t j ƒ } | j t j k s5 t ‚ t | j	 d ƒ d  S(   Ng      @g      à?(
   R
   t   cosR-   R$   R.   R&   R'   R   R   R(   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_cos_scalar[   s    c         C   s‡   t  j t  j d t  j d t  j d g ƒ t j ƒ } | j t j k sN t ‚ t	 | j
 t  j d d t  j d ƒ d g ƒ d d ƒd  S(   Ng        g      @g       @g      ð?R+   gVçž¯Ò<(   R
   RF   R,   R-   R$   R.   R&   R'   R   R   R(   R/   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_cos_array`   s    6	c         C   sO   t  j d t j } t  j t  j | ƒ ƒ j | j ƒ } t | j	 | j	 ƒ d  S(   Ng      @(
   R
   R-   R$   R.   t   arccosRF   R2   R&   R   R(   (   R   R3   R4   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arccos_scalarf   s    $c         C   sh   t  j d t  j d t  j d g ƒ t j } t  j t  j | ƒ ƒ j | j ƒ } t	 | j
 | j
 ƒ d  S(   Ng        g      @g       @(   R
   R,   R-   R$   R.   RI   RF   R2   R&   R   R(   (   R   R3   R4   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arccos_arrayk   s    -$c         C   sL   t  j t ƒ  } t j d t j ƒ Wd  QX| j j d d k sH t	 ‚ d  S(   Ng      @i    s<   Can only apply 'cos' function to quantities with angle units(
   R   R   R7   R
   RF   R$   t   sR(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_cos_invalid_unitsp   s    c         C   sL   t  j t ƒ  } t j d t j ƒ Wd  QX| j j d d k sH t	 ‚ d  S(   Ng      @i    s<   Can only apply 'arccos' function to dimensionless quantities(
   R   R   R7   R
   RI   R$   RL   R(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arccos_invalid_unitsv   s    c         C   sR   t  j t  j d t j ƒ } | j t j k s5 t ‚ t | j	 t  j
 d ƒ ƒ d  S(   Ng      @(   R
   t   tanR-   R$   R.   R&   R'   R   R   R(   R/   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_tan_scalar|   s    c         C   sr   t  j t  j d d d d g ƒ t j ƒ } | j t j k sC t ‚ t | j	 t  j d d d d g ƒ d d ƒd  S(	   Ng        g     €F@g     à`@g     €f@g      ð?g      ð¿R+   gVçž¯Ò<(
   R
   RO   R,   R$   R%   R&   R'   R   R   R(   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_tan_array   s    +	c         C   s6   t  j d t j } t  j t  j | ƒ ƒ s2 t ‚ d  S(   Ng      @(   R
   R-   R$   R.   t   arctanRO   R   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arctan_scalar‡   s    c         C   sT   t  j d d d d g ƒ t j } t t  j t  j | ƒ ƒ j | j ƒ | j	 ƒ d  S(   Ng      $@g      >@g     €Q@g      T@(
   R
   R,   R$   R%   R   RR   RO   t   to_valueR&   R(   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arctan_array‹   s    "c      	   C   s^   t  j t ƒ - } t j t j d d d g ƒ t j ƒ Wd  QX| j j	 d d k sZ t
 ‚ d  S(   Ni   i   i   i    s<   Can only apply 'tan' function to quantities with angle units(   R   R   R7   R
   RO   R,   R$   t   NR(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_tan_invalid_units   s    ,c      	   C   s^   t  j t ƒ - } t j t j d d d g ƒ t j ƒ Wd  QX| j j	 d d k sZ t
 ‚ d  S(   Ni   i   i   i    s<   Can only apply 'arctan' function to dimensionless quantities(   R   R   R7   R
   RR   R,   R$   RV   R(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arctan_invalid_units•   s    ,c         C   sÕ   t  j d d d d g ƒ t j } d t j } t  j | | ƒ j t j k sS t ‚ t	 t  j | | ƒ j
 t  j | j
 | j | j ƒ ƒ ƒ | | } d } t  j | | ƒ } t	 | j
 t  j | j d ƒ | ƒ ƒ d  S(   Ng      $@g      >@g     €Q@g      T@g       @g      ð?i   (   R
   R,   R$   R8   t   kmt   arctan2R&   R.   R   R   R(   RT   (   R   R3   R4   t   q3t   q4t   at2(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arctan2_valid›   s    "$"
c      
   C   sË   t  j t j ƒ 7 } t j t j d d d g ƒ t j d t j ƒ Wd  QXd | j	 j
 d k sg t ‚ t  j t j ƒ 0 } t j t j d d d g ƒ t j d ƒ Wd  QXd | j	 j
 d k sÇ t ‚ d  S(   Ni   i   i   g      ð?s   compatible dimensionsi    s'   dimensionless quantities when other arg(   R   R   R$   t
   UnitsErrorR
   RZ   R,   RV   RL   R(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_arctan2_invalid¦   s    6/c         C   sV  t  j d t j ƒ } t | j t  j ƒ | j t j k sA t	 ‚ t  j
 d t j ƒ } t | j t  j ƒ | j t j k s‚ t	 ‚ t  j d t j ƒ } t | j d ƒ | j t j k sÀ t	 ‚ t  j
 d t j ƒ } t | j d ƒ | j t j k sþ t	 ‚ t j t ƒ  t  j d t j ƒ Wd  QXt j t ƒ  t  j
 d t j ƒ Wd  QXd  S(   Ng     €f@g      @(   R
   t   deg2radR$   R%   R   R(   R-   R&   R.   R   t   radiansR   R   R7   R8   (   R   R3   R4   R[   R\   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_radians®   s     c         C   sV  t  j d t j ƒ } t | j d ƒ | j t j k s> t ‚ t  j d t j ƒ } t | j d ƒ | j t j k s| t ‚ t  j t  j	 t j
 ƒ } t | j d ƒ | j t j k s½ t ‚ t  j t  j	 t j
 ƒ } t | j d ƒ | j t j k sþ t ‚ t j t ƒ  t  j d t j ƒ Wd  QXt j t ƒ  t  j d t j ƒ Wd  QXd  S(   Ng      N@g     €f@g      @(   R
   t   rad2degR$   R%   R   R(   R&   R   t   degreesR-   R.   R   R   R7   R8   (   R   R3   R4   R[   R\   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_degreesÈ   s     (   R   R   R   R*   R0   R5   R6   R;   R<   RE   RG   RH   RJ   RK   RM   RN   RP   RQ   RS   RU   RW   RX   R^   R`   Rc   Rf   (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyR"   -   s0   																						t   TestQuantityMathFuncsc        	   B   s  e  Z d  Z d „  Z d „  Z e j j d e j	 e j
 f ƒ d „  ƒ Z e j j d e j	 e j
 f ƒ d „  ƒ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z e j j d ƒ d „  ƒ Z e j j d ƒ d „  ƒ Z e j j d ƒ d „  ƒ Z e j j d ƒ d „  ƒ Z d „  Z d „  Z e j j d ƒ d „  ƒ Z e e ƒ d „  ƒ Z e e ƒ d „  ƒ Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& e j j d e j' e j( e j) e j* e j+ e j, e j- f ƒ d  „  ƒ Z. e j j d e j' e j( e j) e j* e j+ e j, e j- f ƒ d! „  ƒ Z/ e j j d e j' e j( e j) e j* e j+ e j, e j- f ƒ d" „  ƒ Z0 d# „  Z1 d$ „  Z2 d% „  Z3 d& „  Z4 d' „  Z5 e j j d e j6 e j7 f ƒ d( „  ƒ Z8 e j j d e j6 e j7 f ƒ d) „  ƒ Z9 RS(*   s+   
    Test other mathematical functions
    c         C   s–   t  j d t j d t j ƒ d t j t j k s: t ‚ t  j d t j d ƒ d t j k sf t ‚ t  j d d t j ƒ d t j k s’ t ‚ d  S(   Ng      @g       @g       @(   R
   t   multiplyR$   R8   RL   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_multiply_scalarè   s    :,c         C   s_   t  j t  j t  j d ƒ t j d t j ƒ t  j d d d ƒ t j t j k ƒ s[ t ‚ d  S(   Ng      @g       @i    g      @(   R
   t   allRh   t   arangeR$   R8   RL   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_multiply_arrayí   s    ,t   functionc         C   s¨   | d t  j d t  j ƒ | d d ƒ t  j t  j k s@ t ‚ | d t  j d ƒ | d d ƒ t  j k sr t ‚ | d d t  j ƒ | d d ƒ t  j k s¤ t ‚ d  S(   Ng      @g       @(   R$   R8   RL   R   (   R   Rm   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_divide_scalarñ   s    @2c         C   s_   t  j | t  j d ƒ t j d t j ƒ | t  j d ƒ d ƒ t j t j k ƒ s[ t ‚ d  S(   Ng      @g       @(   R
   Rj   Rk   R$   R8   RL   R   (   R   Rm   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_divide_array÷   s    )c      
   C   sa  t  j d t  j ƒ } t j d d d g ƒ t  j } t j d d d g ƒ | } | | } | | } t | j d d d	 g ƒ | j t  j k s– t	 ‚ t | j d
 d d g ƒ | j | j k sÇ t	 ‚ t j
 | | ƒ } t j | | ƒ } t j | | k ƒ st	 ‚ t j | | k ƒ s!t	 ‚ t | | ƒ \ } }	 t j | | k ƒ sQt	 ‚ t j |	 | k ƒ slt	 ‚ t j t ƒ  t | t  j ƒ Wd  QXt j t ƒ  | t  j Wd  QXt j t ƒ  | t  j Wd  QXt t d ƒ r]t j | | ƒ \ }
 } t j |
 | k ƒ st	 ‚ t j | | k ƒ s1t	 ‚ t j t ƒ  t j | t  j ƒ Wd  QXn  d  S(   Ng¦
F%uš?g      ð?g       @g      @g      @g      @g      *@g      3@g      7@gUÁ¨¤N@ƒ?g¨5Í;NÑ±?gÓMbX9´?t   divmod(   R$   t   UnitR8   R
   R,   R   R(   R&   R'   R   t   floor_dividet	   remainderRj   Rp   R   R   R7   RY   t   hasattr(   R   t   incht   dividendt   divisort   quotientRs   t	   quotient2t
   remainder2t	   quotient3t
   remainder3t	   quotient4t
   remainder4(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt&   test_floor_divide_remainder_and_divmodü   s8    

c         C   s1   t  j d t j ƒ d t j d k s- t ‚ d  S(   Ng      @g       @g      à?(   R
   R/   R$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_sqrt_scalar  s    c         C   s^   t  j t  j t  j d d d g ƒ t j ƒ t  j d d d g ƒ t j d k ƒ sZ t ‚ d  S(   Ng      ð?g      @g      "@g       @g      @g      à?(   R
   Rj   R/   R,   R$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_sqrt_array!  s    +c         C   s1   t  j d t j ƒ d t j d k s- t ‚ d  S(   Ng      @g      0@i   (   R
   t   squareR$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_square_scalar%  s    c         C   s^   t  j t  j t  j d d d g ƒ t j ƒ t  j d d d g ƒ t j d k ƒ sZ t ‚ d  S(   Ng      ð?g       @g      @g      @g      "@i   (   R
   Rj   R‚   R,   R$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_square_array(  s    +c         C   s-   t  j d t j ƒ d t j k s) t ‚ d  S(   Ng      @g      Ð?(   R
   t
   reciprocalR$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_reciprocal_scalar,  s    c         C   sZ   t  j t  j t  j d d d g ƒ t j ƒ t  j d d d g ƒ t j k ƒ sV t ‚ d  S(   Ng      ð?g       @g      @g      à?g      Ð?(   R
   Rj   R…   R,   R$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_reciprocal_array/  s    +s   not hasattr(np, 'heaviside')c         C   s   t  j d t j d ƒ d t j k s, t ‚ t  j d t j d t j ƒ d t j k s_ t ‚ t  j d t j d ƒ d t j k s‹ t ‚ d  S(   Ng        g      à?i   g      Ð?g       @g      ð?(	   R
   t	   heavisideR$   R8   R'   R   RL   t   percentt   J(   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_heaviside_scalar5  s    ,#c         C   s‹   t  j d d d d 
g ƒ } t  j d d d d g ƒ t j } t  j t  j | t j | t j ƒ d d d d 
g t j k ƒ s‡ t ‚ d  S(   Ng      ð¿g        g      ð?g      è?g      Ð?i    (   R
   R,   R$   R'   Rj   Rˆ   R8   R   (   R   R   t   halfway(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_heaviside_array<  s
    "s   not hasattr(np, 'cbrt')c         C   s1   t  j d t j d ƒ d t j k s- t ‚ d  S(   Ng       @i   g       @(   R
   t   cbrtR$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_cbrt_scalarD  s    c         C   s[   t  j d d d g ƒ } t  j t  j | t j d ƒ t  j | ƒ t j k ƒ sW t ‚ d  S(   Ng      ð?g       @g      P@i   (   R
   R,   Rj   RŽ   R$   R8   R   (   R   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_cbrt_arrayH  s    c         C   s›   t  j d t j d ƒ d t j d k s0 t ‚ t  j d d t j t j ƒ t j d t j ƒ k sk t ‚ t  j d t j d ƒ d t j k s— t ‚ d  S(   Ng      @g       @g      0@i   g      i@g        g      ð?(   R
   t   powerR$   R8   R   t   cmt   QuantityR'   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_scalarP  s    0c         C   sŸ   t  j t  j t  j d d d g ƒ t j d ƒ t  j d d d g ƒ t j d k ƒ s] t ‚ t  j t  j t  j d ƒ t j d ƒ d t j k ƒ s› t ‚ d  S(	   Ng      ð?g       @g      @g       @g      ;@i   g      @g        (	   R
   Rj   R‘   R,   R$   R8   R   Rk   R'   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_arrayW  s    ./%s   not hasattr(np, 'float_power')c         C   sŸ   t  j t  j t  j d d d g ƒ t j d ƒ t  j d d d g ƒ t j d k ƒ s] t ‚ t  j t  j t  j d ƒ t j d ƒ d t j k ƒ s› t ‚ d  S(	   Ng      ð?g       @g      @g       @g      ;@i   g      @g        (	   R
   Rj   t   float_powerR,   R$   R8   R   Rk   R'   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_float_power_array_  s    ./%c         C   s!   t  j d t j d d g ƒ d  S(   Ng      @g       @(   R
   R‘   R$   R8   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_array_arrayg  s    c         C   s'   t  j d d g t j d d g ƒ d  S(   Ng       @g      @(   R
   R‘   R$   R8   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_array_array2k  s    c         C   sŠ  d d g t  j t  j } d d g } t j | | ƒ } t j | j | j | k ƒ s] t ‚ | j t  j k su t ‚ d d g t  j t  j	 } x„ t
 t t j t j j t  j f D]a } t j | | | ƒ ƒ } t j | j | j d ƒ | k ƒ sú t ‚ | j t  j k s± t ‚ q± W| d } t j | j | j d k ƒ sEt ‚ | j | j d k sat ‚ t j | | d d g k ƒ s†t ‚ d  S(   Ng       @g      @i   i   (   R$   R8   R
   R‘   Rj   R(   R   R&   R'   R’   t   listt   tupleR,   t   maR“   RT   (   R   R)   t   powerst   resR4   t   clst   res2t   res3(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_array_array3o  s    %(+
%c         C   sO   t  j t ƒ  } t j d d t j ƒ Wd  QXd | j j d k sK t	 ‚ d  S(   Ng      @g      @s"   raise something to a dimensionlessi    (
   R   R   R7   R
   R‘   R$   R8   R(   R9   R   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_power_invalid„  s    c         C   sÂ   t  j d t j d ƒ d t j k s, t ‚ t  j d t j d t j ƒ d t j k s_ t ‚ t  j d t j d ƒ d t j k s‹ t ‚ t  j d t j d t j ƒ d t j k s¾ t ‚ d  S(   Ni   g      ð?g      @g      ð¿g      À(   R
   t   copysignR$   R8   R   RL   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_copysign_scalar‰  s    ,3,c         C   s¢  t  j t  j t  j d d d g ƒ t j d ƒ t  j d d d g ƒ t j k ƒ sZ t ‚ t  j t  j t  j d d d g ƒ t j d t j ƒ t  j d d d g ƒ t j k ƒ s» t ‚ t  j t  j t  j d d d g ƒ t j t  j d d d g ƒ t j ƒ t  j d d d g ƒ t j k ƒ s-t ‚ t  j t  j d d d g ƒ d t j ƒ } t  j | t  j d d d g ƒ k ƒ s…t ‚ t | t j	 ƒ sžt ‚ d  S(	   Ng      ð?g       @g      @g      ð¿g       Àg      Àg      Àiýÿÿÿ(
   R
   Rj   R¤   R,   R$   RL   R   R8   t
   isinstanceR“   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_copysign_array  s    Zar+-c         C   s0   t  j d t j d ƒ d t j k s, t ‚ d  S(   Ng      @i   g      0@(   R
   t   ldexpR$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_ldexp_scalar˜  s    c         C   sf   t  j t  j t  j d d d g ƒ t j d d d g ƒ t  j d d d g ƒ t j k ƒ sb t ‚ d  S(	   Ng      ð?g       @g      @i   i   i   g       @g      @(   R
   Rj   R¨   R,   R$   R8   R   (   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_ldexp_array›  s    7c         C   sl   t  j t ƒ  t j d t j d ƒ Wd  QXt  j t ƒ * t j d t j d t j d t ƒƒ Wd  QXd  S(   Ng      @g      @i   t   dtype(	   R   R   R7   R
   R¨   R$   R8   R“   t   int(   R   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_ldexp_invalidŸ  s    c         C   sU   | d t  j d t  j ƒ } | j t  j k s6 t ‚ | j | d ƒ k sQ t ‚ d  S(   Ng      @g      @g      à?(   R$   R8   R&   R'   R   R(   (   R   Rm   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_exp_scalar¦  s    c         C   s  | t  j d d d g ƒ t j d t j ƒ } | j t j k sH t ‚ t  j | j | t  j d d d d d g ƒ ƒ k ƒ s† t ‚ | t  j d d d g ƒ t j d t j	 ƒ } | j t j k sÎ t ‚ t
 | j | t  j d d d d d g ƒ ƒ ƒ d  S(   Ng       @g      @g      @g      ð?g      Y@(   R
   R,   R$   R8   R&   R'   R   Rj   R(   R’   R   (   R   Rm   R)   R4   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_exp_array­  s    020	c         C   s\   t  j t ƒ  } | d t j t j ƒ Wd  QX| j j d d j | j	 ƒ k sX t
 ‚ d  S(   Ng      @i    s9   Can only apply '{0}' function to dimensionless quantities(   R   R   R7   R$   R8   RL   R(   R9   t   formatR   R   (   R   Rm   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_exp_invalid_unitsº  s    c         C   sK   t  j d t j d t j ƒ } | d t j d t j f k sG t ‚ d  S(   Ng      "@g     À‚@g      à?g      ð?(   R
   t   modfR$   R8   R’   R'   R   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_modf_scalarÄ  s    !c         C   sÍ   t  j d ƒ t j d t j } t  j | ƒ } t  j | j t j ƒ ƒ } | d j t j k sg t	 ‚ | d j t j k sƒ t	 ‚ t
 | d j | d k ƒ s¦ t	 ‚ t
 | d j | d k ƒ sÉ t	 ‚ d  S(   Ng      $@g     @@i    i   (   R
   Rk   R$   R8   R’   R²   RT   R'   R&   R   Rj   R(   (   R   t   vR)   t   n(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_modf_arrayÉ  s    !#c         C   sO   t  j d t j d t j ƒ } | t  j d ƒ t  j d ƒ f k sK t ‚ d  S(   Ng      @g      @g      à?g        (   R
   t   frexpR$   R8   R,   R   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_frexp_scalarÒ  s    !c         C   sx   t  j t  j d d d g ƒ t j d t j ƒ } t d „  t | d | d d d d d d g ƒ Dƒ ƒ st t ‚ d  S(   Ng       @g      @g      @c         s   s3   |  ]) \ } } } | | f t  j | ƒ k Vq d  S(   N(   R
   R·   (   t   .0t   _q0t   _q1t   _d(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pys	   <genexpr>Ø  s    i    i   g      ð?(   R
   R·   R,   R$   R8   Rj   R   R   (   R   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_frexp_arrayÖ  s    3	c      
   C   s¸   t  j t ƒ " } t j d t j t j ƒ Wd  QX| j j	 d d k sO t
 ‚ t  j t ƒ 8 } t j t j d d d g ƒ t j d t j ƒ Wd  QX| j j	 d d k s´ t
 ‚ d  S(   Ng      @i    sD   Can only apply 'frexp' function to unscaled dimensionless quantitiesg       @g      @(   R   R   R7   R
   R·   R$   R8   RL   R(   R9   R   R,   R’   (   R   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_frexp_invalid_unitsÛ  s    !7c         C   s‚   | t  j d d d g ƒ t j d t j d ƒ } | j t j k sK t ‚ t | j	 | t  j d d d d d g ƒ d ƒ ƒ d  S(   Ng       @g      @g      @g      ð?g      Y@(
   R
   R,   R$   R8   R’   R&   R'   R   R   R(   (   R   Rm   R)   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_dimensionless_twoarg_arrayè  s    3	c         C   sm   t  j t ƒ 0 } | d t j t j d t j t j ƒ Wd  QX| j j d d j	 | j
 ƒ k si t ‚ d  S(   Ng      ð?g      @i    s9   Can only apply '{0}' function to dimensionless quantities(   R   R   R7   R$   RY   RL   R8   R(   R9   R°   R   R   (   R   Rm   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt'   test_dimensionless_twoarg_invalid_unitsï  s    /(:   R   R   R   Ri   Rl   R   R   t   parametrizeR
   t   dividet   true_divideRn   Ro   R   R€   R   Rƒ   R„   R†   R‡   R    R‹   R   R   R   R”   R•   R—   R   t
   ValueErrorR˜   R™   R¢   R£   R¥   R§   R©   Rª   R­   t   expt   expm1t   exp2t   logt   log2t   log10t   log1pR®   R¯   R±   R³   R¶   R¸   R½   R¾   t	   logaddexpt
   logaddexp2R¿   RÀ   (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyRg   ã   sR   		**	"																***							*t   TestInvariantUfuncsc           B   s  e  Z e j j d  e e d ƒ rg e j e j e j	 e j
 e j e j e j e j e j g	 e j g n g  ƒ d „  ƒ Z e j j d  e j e j
 e j e j e j e j g ƒ d „  ƒ Z e j j d  e j e j e j e j e j e j e j e j e j g	 ƒ d „  ƒ Z e j j d  e j e j e j e j e j e j e j e j e j g	 ƒ d „  ƒ Z e j j d  e j e j e j e j e j e j e j e j e j g	 ƒ d „  ƒ Z e j j d  e j e j e j e j e j e j e j e j e j g	 ƒ d „  ƒ Z RS(   R   t   positivec         C   sk   d t  j } | | ƒ } t | t  j ƒ s1 t ‚ | j | j k sI t ‚ | j | | j ƒ k sg t ‚ d  S(   NgÍÌÌÌÌÌ@(   R$   R8   R¦   R“   R   R&   R(   (   R   R   t   q_it   q_o(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_invariant_scalarü  s
    c         C   s   t  j d d d g ƒ t j t j } | | ƒ } t | t j ƒ sJ t ‚ | j | j k sb t ‚ t  j	 | j
 | | j
 ƒ k ƒ s‰ t ‚ d  S(   Ngffffff
ÀgÍÌÌÌÌÌ @gffffff$@(   R
   R,   R$   t   kgRL   R¦   R“   R   R&   Rj   R(   (   R   R   RÐ   RÑ   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_invariant_array	  s
    &c         C   s…   d t  j } d t  j } | | | ƒ } t | t  j ƒ sA t ‚ | j | j k sY t ‚ t | j | | j | j	 | j ƒ ƒ ƒ d  S(   NgÍÌÌÌÌÌ@gÍÌÌÌÌÌ"@(
   R$   R8   RY   R¦   R“   R   R&   R   R(   RT   (   R   R   t   q_i1t   q_i2RÑ   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_invariant_twoarg_scalar  s    c         C   s·   t  j d d d g ƒ t j t j } t  j d d d g ƒ t j t j } | | | ƒ } t | t j ƒ ss t	 ‚ | j
 | j
 k s‹ t	 ‚ t | j | | j | j | j
 ƒ ƒ ƒ d  S(   Ngffffff
ÀgÍÌÌÌÌÌ @gffffff$@g      $@g      Àg    €„.A(   R
   R,   R$   RÓ   RL   t   gt   usR¦   R“   R   R&   R   R(   RT   (   R   R   RÕ   RÖ   RÑ   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_invariant_twoarg_array   s    &&c         C   s—   t  j d d d g ƒ t j t j } t  j d g ƒ } | | | ƒ } t | t j ƒ s_ t ‚ | j | j k sw t ‚ t	 | j
 | | j
 | ƒ ƒ d  S(   Ngffffff
ÀgÍÌÌÌÌÌ @gffffff$@g        (   R
   R,   R$   RÓ   RL   R¦   R“   R   R&   R   R(   (   R   R   RÕ   t   arbitrary_unit_valueRÑ   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt#   test_invariant_twoarg_one_arbitrary,  s    &c         C   sb   d t  j } d t  j } t j t  j ƒ  } | | | ƒ Wd  QXd | j j d k s^ t ‚ d  S(   NgÍÌÌÌÌÌ@gÍÌÌÌÌÌ"@s   compatible dimensionsi    (	   R$   R8   RL   R   R   R_   R(   R9   R   (   R   R   RÕ   RÖ   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt#   test_invariant_twoarg_invalid_units8  s
    (    R   R   R   R   RÁ   Rt   R
   t   absolutet   fabst   conjt	   conjugatet   negativet   spacingt   rintt   floort   ceilRÏ   RÒ   RÔ   t   addt   subtractt   hypott   maximumt   minimumt	   nextafterRs   t   modt   fmodR×   RÚ   RÜ   RÝ   (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyRÎ   ù  s"   g		$
$
$
t   TestComparisonUfuncsc           B   sŒ   e  Z e j j d  e j e j e j e j	 e j
 e j g ƒ d „  ƒ Z e j j d  e j e j e j e j	 e j
 e j g ƒ d „  ƒ Z RS(   R   c         C   s­  t  j d d d g ƒ t j t j } t  j d d d g ƒ t j t j } | | | ƒ } t | t j ƒ st t	 ‚ | j
 t  j k sŒ t	 ‚ t  j | | | j | j | j ƒ ƒ k ƒ s¿ t	 ‚ | | | d ƒ } t | t j ƒ së t	 ‚ | j
 t  j k st	 ‚ t  j | | | | j t j ƒ d ƒ k ƒ s7t	 ‚ xJ d t  j t  j f D]3 } | | | ƒ | | | t  j t | ƒ ƒ ƒ qMW| | t  j d t  j t  j g ƒ ƒ d  S(	   Ngffffff
ÀgÍÌÌÌÌÌ @gffffff$@g      $@g      Àg    €„.Ag       @g        (   R
   R,   R$   RÓ   RL   RØ   t   MsR¦   R“   R   R«   t   boolRj   R(   RT   R&   R'   t   inft   nant   onest   len(   R   R   RÕ   RÖ   RÑ   t   q_o2RÛ   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_comparison_valid_unitsF  s    &&3$c         C   sb   d t  j } d t  j } t j t  j ƒ  } | | | ƒ Wd  QXd | j j d k s^ t ‚ d  S(   NgÍÌÌÌÌÌ@gÍÌÌÌÌÌ"@s   compatible dimensionsi    (	   R$   R8   RL   R   R   R_   R(   R9   R   (   R   R   RÕ   RÖ   R:   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_comparison_invalid_units\  s
    (   R   R   R   R   RÁ   R
   t   greatert   greater_equalt   lesst
   less_equalt	   not_equalt   equalR÷   Rø   (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyRï   D  s   t   TestInplaceUfuncsc           B   sI  e  Z e j j d  d e j d ƒ g ƒ d „  ƒ Z e j j d  d e j d ƒ g ƒ d „  ƒ Z e j j d  d e j d ƒ g ƒ d „  ƒ Z	 e j j d  d e j d ƒ g ƒ d „  ƒ Z
 e j j d  d e j d ƒ g ƒ d „  ƒ Z d „  Z e j j e d	 d
 ƒe j j d  d e j d ƒ g ƒ d „  ƒ ƒ Z d „  Z d „  Z RS(   R(   g      ð?g      $@c         C   sÃ   | t  j } | } t j | d | ƒ| | k s8 t ‚ | j t  j k sP t ‚ | t  j j t  j ƒ } | } t j | d | ƒ| | k s” t ‚ | j t  j k s¬ t ‚ t	 | j
 | j
 ƒ d  S(   Nt   out(   R$   t   radR
   R#   R   R&   R'   R2   t   degR   R(   (   R   R(   RL   t   checkt   s2t   check2(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_one_argument_ufunc_inplacei  s    c         C   s¯  | t  j } | } t j | d | ƒ| | k s8 t ‚ t j | j t j | ƒ k ƒ s_ t ‚ | j t  j k sw t ‚ t j	 | d | ƒ| | k sœ t ‚ t j | j t j	 | ƒ k ƒ sÃ t ‚ | j t  j k sÛ t ‚ t j
 | d | ƒ| | k s t ‚ t j | j t j
 | ƒ k ƒ s't ‚ | j t  j k s?t ‚ t j | d d | ƒ| | k sht ‚ t j | j t j | d ƒ k ƒ s“t ‚ | j t  j k s«t ‚ d S(   s?   Check inplace works with non-quantity input and quantity outputR   g      $@N(   R$   R8   R
   RÞ   R   Rj   R(   R&   R'   R/   RÅ   R1   R.   (   R   R(   RL   R  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt!   test_one_argument_ufunc_inplace_2y  s$    '''+c         C   s¢  d | t  j t  j } | j ƒ  } | j ƒ  } | } t j | | | ƒ | | k s[ t ‚ | j t  j k ss t ‚ | j	 t  j ƒ } | } t j | | | ƒ | | k s° t ‚ | j t  j k sÈ t ‚ | j	 t  j ƒ } | }	 t j | | | ƒ |	 | k st ‚ |	 j t  j k st ‚ | j ƒ  }
 t
 r[t j t ƒ  t j |
 |
 | ƒ Wd  QXnC |
 } t j |
 |
 | ƒ | |
 k s†t ‚ | j t  j k sžt ‚ d  S(   Ng      Y@(   R$   R’   R8   t   copyR
   R²   R   R&   R'   R2   R   R   R   R7   (   R   R(   R´   t   v_copyt   tmpR  t   v2R  t   v3t   check3t   v4t   check4(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt*   test_one_argument_two_output_ufunc_inplace  s2    c         C   sØ   | t  j } | } | d :} | | k s/ t ‚ t j | j | d k ƒ sQ t ‚ | t  j :} | | k sp t ‚ | j t  j t  j k s t ‚ | d t  j 9} | | k s² t ‚ t j | | t  j k ƒ sÔ t ‚ d  S(   Ng       @(   R$   t   cycleR   R
   Rj   R(   RL   R&   (   R   R(   RL   R  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt!   test_two_argument_ufunc_inplace_1¯  s    
"c         C   s‡  | t  j } | } t j | | d | ƒ| | k s; t ‚ | j t  j k sS t ‚ t j t  j	 ƒ  | d t  j
 7} Wd  QX| | k s t ‚ | j t  j k s§ t ‚ t j d t  j | d | ƒ| | k sÖ t ‚ | j t  j k sî t ‚ t j d t  j | d | ƒ| | k st ‚ | j t  j k s5t ‚ t j d t  j | d | ƒ| | k sdt ‚ | j t  j t  j k sƒt ‚ d  S(   NR   g      ð?g       @(   R$   R  R
   RZ   R   R&   R.   R   R   R_   R8   R  Rç   Rh   RL   (   R   R(   RL   R  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt!   test_two_argument_ufunc_inplace_2½  s$    c         C   s  t  j d d d g ƒ t j } t  j t  j d d d g ƒ t  j d d d g ƒ d d | ƒt  j | j t  j d d d g ƒ k ƒ s t ‚ | j t j k s¥ t ‚ t  j	 t  j d d d g ƒ t  j d d d g ƒ d d | ƒt
 | j t  j	 d d ƒ ƒ | j t j k st ‚ d  S(   Ng      ð?g       @g      @R   g      @g      "@(   R
   R,   R$   R'   Rç   Rj   R(   R   R&   RZ   R   R.   (   R   RL   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt!   test_two_argument_ufunc_inplace_3Ò  s    >0>R   s   numpy >=1.13 required.c         C   s¶  | t  j } d t  j } | j ƒ  } | j ƒ  } t j | | d | | f ƒ} | d | k rp | d | k sv t ‚ | j t  j k sŽ t ‚ | j | j k s¦ t ‚ | j ƒ  } t j | | d | | f ƒ} | d | k rð | d | k sö t ‚ | j t  j k st ‚ | j | j k s&t ‚ | j ƒ  }	 | j ƒ  }
 t j |	 | d |	 |
 f ƒ} | d |	 k r|| d |
 k s‚t ‚ |	 j t  j k sšt ‚ |
 j | j k s²t ‚ d  S(   Ng     €Q@R   i    i   (	   R$   R8   R’   R  R
   Rp   R   R&   R'   (   R   R(   R´   Rw   t   v1R
  R  R  R  t   v3at   v3bR  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt*   test_two_argument_two_output_ufunc_inplaceÛ  s&    &&&c         C   s´   t  j d ƒ t j } | j ƒ  } | d  d  d … } | d t j 7} t  j | d  d  d … | d  d  d … k ƒ s{ t ‚ t  j | d d  d … | d d  d … k ƒ s° t ‚ d  S(   Ng      $@i   g      ð?i   (   R
   Rk   R$   R8   R  R’   Rj   R   (   R   RL   t   s_copyR  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt&   test_ufunc_inplace_non_contiguous_dataò  s    5c      
   C   sº  t  j d d d d g t  j d t j ƒ} | t j d ƒ 9} | j t  j k sU t ‚ | j t j k sm t ‚ t  j d d d d g t  j d t j ƒ} | d t  j 7} | j t  j k sÀ t ‚ | j t j k sØ t ‚ t  j d d d d g t  j d t j	 ƒ} | t  j d t  j d t j
 ƒ7} | j t  j k s<t ‚ | j t j	 k sTt ‚ t  j d d d d g t  j d t j	 ƒ} t j t ƒ ' | t  j d t  j d t j
 ƒ7} Wd QXd S(	   sˆ   Check that inplace operations check properly for casting.

        First two tests that check that float32 is kept close #3976.
        i   i   i   i   R«   i
   g      4@N(   R$   R“   R8   R
   t   float32R&   R   R«   RY   t   int32t   int64R   R   R7   t   mm(   R   t   a1t   a2t   a3t   a4(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt%   test_ufunc_inplace_non_standard_dtypeû  s    ***"*(   R   R   R   R   RÁ   R
   Rk   R  R  R  R  R  R  R    R   R  R  R#  (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyRÿ   g  s   --- --		0		R   t   TestUfuncAtc           B   s    e  Z d  Z d „  Z d „  Z RS(   så   Test that 'at' method for ufuncs (calculates in-place at given indices)

    For Quantities, since calculations are in-place, it makes sense only
    if the result is still a quantity, and if the unit does not have to change
    c   	      C   sÖ  t  j d ƒ t j } t  j d d g ƒ } | j j ƒ  } t  j j | | ƒ t  j j | | ƒ t  j	 | j | k ƒ s~ t
 ‚ | j t j k s– t
 ‚ t j t ƒ  t  j j | | ƒ Wd  QXt j t j ƒ  t  j j | | ƒ Wd  QXt  j d ƒ t j } | j j ƒ  } t  j j | | ƒ t  j j | | ƒ t  j	 | j | k ƒ sTt
 ‚ | j t j k slt
 ‚ t  j d ƒ t j } | j j ƒ  } t  j j | | ƒ t  j j | | ƒ t  j	 | j | k ƒ sÕt
 ‚ | j t j k sít
 ‚ t  j d ƒ t j } t j t j ƒ  t  j j | | ƒ Wd  QX| j j ƒ  } t j t j ƒ  ƒ } t  j j | | ƒ t  j j | | ƒ t | j | ƒ t  j d ƒ t j } t j t j ƒ  t  j j | | ƒ Wd  QXWd  QXd  S(   Ng      $@i   i   (   R
   Rk   R$   R8   R,   R(   R  Râ   t   atRj   R   R&   R   R   R7   t   isfiniteR_   R‚   R'   RÈ   R.   R#   t   add_enabled_equivalenciest   dimensionless_anglesR   R%   (	   R   R)   t   it   qvt   dt   dvRC   t   avt   ad(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_one_argument_ufunc_at  sD    c         C   s  t  j d ƒ t j } t  j d d g ƒ } | j j ƒ  } t  j j | | d t j	 ƒ t  j j | | d ƒ t  j
 | j | k ƒ s‹ t ‚ | j t j k s£ t ‚ t j t j ƒ " t  j j | | d t j ƒ Wd  QXt j t j ƒ " t  j j | | d t j ƒ Wd  QXt  j d ƒ t j } | j j ƒ  } t  j j | | d t j ƒ t  j j | | d ƒ t  j
 | j | k ƒ s…t ‚ t  j d ƒ t j } t  j j | | d ƒ t  j
 | j | k ƒ sÏt ‚ t j t ƒ " t  j j | | d t j	 ƒ Wd  QXd  S(   Ng      $@i   i   g      ð?g     @@g       @(   R
   Rk   R$   R8   R,   R(   R  Rç   R%  RY   Rj   R   R&   R   R   R_   RL   Rh   R'   R7   Rù   (   R   RL   R)  R  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_two_argument_ufunc_atL  s*    ##(   R   R   R   R/  R0  (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyR$    s   	2t!   TestUfuncReduceReduceatAccumulatec           B   s    e  Z d  Z d „  Z d „  Z RS(   s   Test 'reduce', 'reduceat' and 'accumulate' methods for ufuncs

    For Quantities, it makes sense only if the unit does not have to change
    c      	   C   sª   t  j d ƒ t j } t  j d d d d g ƒ } t j t ƒ  t  j j	 | ƒ Wd  QXt j t ƒ  t  j j
 | ƒ Wd  QXt j t ƒ  t  j j | | ƒ Wd  QXd  S(   Ng      $@i    i   i   i   (   R
   Rk   R$   R.   R,   R   R   RÄ   R#   t   reducet
   accumulatet   reduceat(   R   RL   R)  (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt)   test_one_argument_ufunc_reduce_accumulater  s    c         C   sr  t  j d ƒ t j } t  j d d d d g ƒ } | j j ƒ  } t  j j | ƒ } t  j j | ƒ } | j | k sy t	 ‚ | j
 t j k s‘ t	 ‚ t  j j | ƒ } t  j j | ƒ } t  j | j | k ƒ sÓ t	 ‚ | j
 t j k së t	 ‚ t  j j | | ƒ } t  j j | | ƒ }	 t  j | j |	 k ƒ s3t	 ‚ | j
 t j k sKt	 ‚ t j t ƒ  t  j j | ƒ Wd  QXt j t ƒ  t  j j | ƒ Wd  QXt j t ƒ  t  j j | | ƒ Wd  QXt j t j ƒ  t  j j | ƒ Wd  QXt j t j ƒ  t  j j | ƒ Wd  QXt j t j ƒ  t  j j | | ƒ Wd  QXt  j d ƒ t j } | j j ƒ  } t  j j | ƒ }
 t  j j | ƒ } |
 j | k sœt	 ‚ |
 j
 t j k s´t	 ‚ t  j j | ƒ } t  j j | ƒ } t  j | j | k ƒ söt	 ‚ | j
 t j k st	 ‚ t  j j | | ƒ } t  j j | | ƒ } t  j | j | k ƒ sVt	 ‚ | j
 t j k snt	 ‚ d  S(   Ng      $@i    i   i   i   (   R
   Rk   R$   R8   R,   R(   R  Rç   R2  R   R&   R3  Rj   R4  R   R   R7   Rù   R_   Rh   R'   (   R   RL   R)  R  t   s_add_reducet   check_add_reducet   s_add_accumulatet   check_add_accumulatet   s_add_reduceatt   check_add_reduceatt   s_multiply_reducet   check_multiply_reducet   s_multiply_accumulatet   check_multiply_accumulatet   s_multiply_reduceatt   check_multiply_reduceat(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt)   test_two_argument_ufunc_reduce_accumulate}  sR    (   R   R   R   R5  RB  (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyR1  k  s   	t   TestUfuncOuterc           B   s    e  Z d  Z d „  Z d „  Z RS(   s{   Test 'outer' methods for ufuncs

    Just a few spot checks, since it uses the same code as the regular
    ufunc call
    c         C   s@   t  j d ƒ t j } t j t ƒ  t  j j | ƒ Wd  QXd  S(   Ng      $@(	   R
   Rk   R$   R.   R   R   RÄ   R#   t   outer(   R   RL   (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_one_argument_ufunc_outer¾  s    c         C   s´  t  j d ƒ t j } t  j d ƒ t j } | j } | j } t  j j | | ƒ } t  j j | | ƒ } t  j | j | k ƒ s† t	 ‚ | j
 | j
 | j
 k s¥ t	 ‚ t j t j ƒ  t  j j | | ƒ Wd  QXt  j d ƒ | j
 } | j } t  j j | | ƒ }	 t  j j | | ƒ }
 t  j |	 j |
 k ƒ s8t	 ‚ |	 j
 | j
 k sPt	 ‚ t  j j | | ƒ } t  j j | | ƒ } t | ƒ t  j k s•t	 ‚ t  j | | k ƒ s°t	 ‚ d  S(   Ng      $@g       @(   R
   Rk   R$   R8   RL   R(   Rh   RD  Rj   R   R&   R   R   R_   Rç   Rù   R   t   ndarray(   R   t   s1R  t   check1R  t   s12_multiply_outert   check12_multiply_outert   s3R  t   s13_add_outert   check13_add_outert   s13_greater_outert   check13_greater_outer(    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   test_two_argument_ufunc_outerÄ  s(    			(   R   R   R   RE  RP  (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyRC  ¶  s   	("   R@   t   collectionsR    R   t   numpyR
   t   numpy.testingR   R   R   R$   t   tests.helperR   t   extern.six.movesR   t   utils.compatR   t   scipyt   ImportErrort   FalseR!   t   Truet   objectR   R"   Rg   RÎ   Rï   Rÿ   R   t   xfailR$  R1  RC  (    (    (    sG   lib/python2.7/site-packages/astropy/units/tests/test_quantity_ufuncs.pyt   <module>   s4   
¶ÿ K#«XJ