ó
]¹èZc           @   s  d  d l  Z  d  d l Z d  d l Z d d l m Z m Z e  j e j d d d d ƒZ	 e  j e j d d d d ƒZ
 e  j e j d d d d ƒZ e d d d ƒZ d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j j d „  ƒ Z d „  Z d „  Z d S(   iÿÿÿÿNi   (   t   Timet	   TimeDeltat   rtolg       @iÌÿÿÿt   atoli    i   i  t   formatt   jdc          C   s‡   t  d d d d d d ƒ}  |  t } | j |  j k rI | j |  j k sO t ‚ | t } | j |  j k r} | j |  j k sƒ t ‚ d S(   s@   Check that an addition at the limit of precision (2^-52) is seeng   €¼BAg      à?R   R   t   scalet   utcN(   R    t   dt_tinyt   jd1t   jd2t   AssertionError(   t   tt   t_dtt   t2(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_addition   s
    
*
c          C   s\   d t  }  t d d d ƒ} | |  d } | t d d d ƒ} t | j d ƒ sX t ‚ d S(	   s'   Test precision with multiply and dividei   g     ˆÓ@R   R   g      @g     
ª@gYUUUUUÕ?N(   R   R   t   allclose_jd2R
   R   (   t   dt_smallt   dt_bigt   dt_big_small_by_6t   dt_frac(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_mult_div   s
    
c          C   s±   t  j d }  t d d d ƒt  } t d |  d d ƒ} t |  d d d ƒ} | j | j k se t ‚ | j | j k s} t ‚ | j | j k s• t ‚ | j | j k s­ t ‚ d S(   sD   Check that 3 ways of specifying a time + small offset are equivalentg     õ@g   èvH7BR   t   cxcsecN(   R   R
   R    R	   R   (   t   dt_tiny_sect   t1R   t   t3(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_init_variations(   s    c          C   s8   t  d d d ƒ}  |  t } |  j | j k s4 t ‚ d S(   s§   
    Check that Time object really holds more precision than float64 by looking at the
    (naively) summed 64-bit result and asserting equality at the bit level.
    g  ™¾<BR   R   N(   R    R   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_precision_exceeds_64bit4   s    
c          C   sx   t  d d d ƒ}  t  d d d ƒ} | |  } | j |  j } t | j | j ƒ sY t ‚ t | j | j ƒ st t ‚ d S(   s>   Check that precision holds through scale change (cxcsec is TT)g      ð?R   R   g  ™¾<BN(   R    t   tait   allclose_jdR	   R   R   R
   (   t   t0R   t   dt_ttt   dt_tai(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_through_scale_change>   s    
c          C   sZ   t  d d d ƒ}  t  d d d ƒ} | |  } t | j d d d d d	 ƒ sV t ‚ d
 S(   s%   Check when initializing from ISO dates   2000:001:00:00:00.00000001R   R   s   3000:001:13:00:00.00000002g      *@g      8@g:Œ0âŽyE>g     õ@g      ð?N(   R    R   R
   R   (   R   R   t   dt(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_iso_initH   s    
c          C   s{   t  d d d ƒ}  t j |  j d ƒ |  j d k s; t ‚ t  d d d d d d ƒ}  t j |  j ƒ |  j k sw t ‚ d	 S(
   s¦   
    Check that jd1 is a multiple of 0.5 (note the difference from when Time is created
    with a format like 'jd' or 'cxcsec', where jd1 is a multiple of 1.0).
    s   2000:001:00:00:00.00000001R   R   i   gÞƒBÊÀó?gÜéÖÜ)ŒgAR   R   N(   R    t   npt   roundR	   R   (   R   (    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_jd1_is_mult_of_half_or_oneP   s    )c          C   sg   t  d d d d d ƒ}  t j |  j ƒ |  j k s9 t ‚ |  j } t j | j ƒ | j k sc t ‚ d S(   s½   
    Check precision when jd1 is negative.  Currently fails because ERFA routines use a
    test like jd1 > jd2 to decide which component to update.  Should be
    abs(jd1) > abs(jd2).
    g¨ÿ¬ùjøÀR   R   R   t   ttN(   R    R$   R%   R	   R   R   (   R   t   t1_tai(    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_precision_neg[   s    !	c          C   st   t  t d d ƒ d d d d ƒ}  t  t d d ƒ d d d d ƒ} |  | } t | j t j | j ƒ ƒ sp t ‚ d S(	   s‰   
    Check that input via epoch also has full precision, i.e., against
    regression on https://github.com/astropy/astropy/pull/366
    i¼  iÑ  R   t   jyearR   R   R   N(   R    t   ranget   allclose_sect   secR$   R%   R   (   t   t_utct   t_taiR"   (    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   test_precision_epochh   s    !!
c          C   sR   t  d d g d d d d ƒj }  t j |  j t j d d g ƒ k ƒ sN t ‚ d	 S(
   so   Regression tests against #2083, where a leap second was rounded
    incorrectly by the underlying ERFA routine.s   2012-06-30 23:59:59.413s   2012-07-01 00:00:00.413R   t   ut1t	   precisioni   s   2012-06-30 23:59:60.000s   2012-07-01 00:00:00.000N(   R    R   R$   t   allt   isot   arrayR   (   R   (    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt#   test_leap_seconds_rounded_correctlys   s    g      °<g      °<g      °<g      °<g      °<g      ø<g     µ=g      °<(   t	   functoolst   pytestt   numpyR$   t    R    R   t   partialt   allcloseR   R   R,   R   R   R   R   R   R!   R#   R&   t   markt   xfailR)   R0   R6   (    (    (    s@   lib/python2.7/site-packages/astropy/time/tests/test_precision.pyt   <module>   s&   				
		
	
			