ó
‹wÛjc           @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z e j e	 j
 d ƒ j d ƒ d ƒ Z e j j Z e j j Z e j j Z e j j Z d e d e e d Z d	 „  Z d
 e j f d „  ƒ  YZ d „  Z e d k rÿ e ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   run_unittestt   doublet   IEEEs   test requires IEEE 754 doublesi   i   c         C   su  |  | Ad k  } t  |  ƒ t  | ƒ }  } | s> t d ƒ ‚ n  |  t | k r] t d ƒ ‚ n  |  j ƒ  | j ƒ  } | d k r“ |  d | | k s´ | d k  rÁ |  d | | k rÁ | d 7} n  t | t ƒ t } |  t | d ƒ >| t | d ƒ >}  } t |  | ƒ \ } } d | | k sAd | | k rN| d d k rN| d 7} n  t	 j
 t | ƒ | ƒ } | rq| S| S(   s-   Correctly-rounded true division for integers.i    s   division by zeros)   int/int too large to represent as a floati   i   (   t   abst   ZeroDivisionErrort   DBL_MIN_OVERFLOWt   OverflowErrort
   bit_lengtht   maxt   DBL_MIN_EXPt   DBL_MANT_DIGt   divmodt   matht   ldexpt   float(   t   at   bt   negativet   dt   expt   qt   rt   result(    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt   truediv   s     A(0t   TrueDivisionTestsc           B   s,   e  Z d  „  Z e d „ Z e d „  ƒ Z RS(   c         C   sO  d! } | } |  j  | | d ƒ |  j  | | d ƒ |  j  | | d ƒ |  j  | | d ƒ |  j  d | d ƒ |  j  d | d ƒ |  j  d | d ƒ |  j  d | d ƒ |  j  d | | d ?| d ƒ |  j  d | | d ?| d ƒ |  j  d | | d ?| d	 ƒ |  j  d | | d ?| d	 ƒ |  j  | | d >d
 ƒ |  j  d | | d ƒ i | d 6| d 6} xI d d d d d d d d g D]) } |  j t ƒ � t | | ƒ Wd  QXq�WxK d d d d d d g D]1 } t | | ƒ } |  j  | d d j | ƒ ƒ qÖWx= d d d d  g D]) } |  j t ƒ � t | | ƒ Wd  QXqWd  S("   Nl    i@œ  g      ð?g      ð¿i   g        iš  g     Ô„@g     Ô„Àg      à?i@B t   huget   mhuges   float(huge)s   float(mhuge)s   huge / 1s	   huge / 2Ls	   huge / -1s
   huge / -2Ls   mhuge / 100s   mhuge / 100Ls   1 / huges	   2L / huges	   -1 / huges
   -2L / huges   100 / mhuges   100L / mhuges!   expected underflow to 0 from {!r}s   huge / 0s	   huge / 0Ls	   mhuge / 0s
   mhuge / 0Llk
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (   t   assertEqualt   assertRaisesR   t   evalt   formatR   (   t   selfR   R   t	   namespacet   overflowt	   underflowR   t   zero(    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt   test6   s<        	c         C   sþ   t  | ƒ t  | ƒ } } | rH t t | ƒ t | ƒ ƒ d t k  rH d Sy t t | | ƒ ƒ } Wn- t k
 rz d } n t k
 r� d } n Xy t | | ƒ } Wn- t k
 r¾ d } n t k
 rÔ d } n X|  j | | d j	 | | | | ƒ ƒ d S(   sª   Verify that the result of a/b is correctly rounded, by
        comparing it with a pure Python implementation of correctly
        rounded division.  b should be nonzero.i   NR"   t   zerodivisions7   Incorrectly rounded division {}/{}: expected {}, got {}(
   t   longR	   R   R   t   reprR   R   R   R   R   (   R    R   R   t
   skip_smallt   expectedt   got(    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt   check_truediv\   s"    +	
	
c         C   sƒ  |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d+ d t d ƒ |  j  d d	 d t t ƒ |  j  d d, d ƒ |  j  d d- d d. ƒ d t t t t t f } x– | D]Ž } x… t | d | d ƒ D]l } |  j  d d t | d ƒ d d t | d ƒ ƒ |  j  d d t | d ƒ d d t | d ƒ ƒ qî WqÐ Wx} d d d d d d/ d d d d d d1 g D]Q } xH t d d ƒ D]7 } |  j  | t | | ƒ |  j  | t | | ƒ q£Wq�WxD t d ƒ D]6 } |  j  d t d d d2 d | d t d ƒ qïW|  j  d d ƒ |  j  d  d! ƒ xL t d" ƒ D]> } |  j  d | d d | ƒ |  j  d | d | d ƒ qVWxt d d d# d d$ d% d d& d d3 d d d d d d5 g D]< } x3 t d d ƒ D]" } |  j  d t | | | ƒ qåWqÏWx' t d' d( ƒ D] } |  j  | d6 ƒ qWxž d7 d8 d9 g D]� } x„ t d" ƒ D]v } t j d | ƒ } t j | d | d ƒ }	 |  j  | |	 ƒ |  j  | |	 ƒ |  j  | |	 ƒ |  j  | |	 ƒ q\WqIWx¢ t d* ƒ D]” }
 t j d" ƒ } t j d d" ƒ } t j d | ƒ } t j d d | ƒ } |  j  | | ƒ |  j  | | ƒ |  j  | | ƒ |  j  | | ƒ qçWd  S(:   Ni{   i    i8þÿÿi   iýÿÿÿiŸ  i90  i   iNF id   iÍ� i   i   iQ   i   i0& iC i   i   iÿÿÿÿiþÿÿÿiûÿÿÿiéÿÿÿiÍöþÿi)   i2   iöÿÿÿi
   iú   iÈ   i«
  l   ÿE,J_   l     ŸJ‰b   iè  i   i   i   i    iìÿÿÿi   i4  i'  ige~ l                i   @l   ‡(kmÜ1'}XbCK';+s�Q©0ã,û52pHR™! l   atz$ð“hÞY«1Qjg9i×^Ílv.52%òjSXv¨l   P¨Dg—J�+± !Vññ!GN11ð?¹K^SelîÿÿÿP¨Dg—J�+± !Vññ!GN11ð?¹K^Sel                               l   atz$ð“hÞY«1Qjg9i×^Ílv.52%òjSXv¨l   P¨Dg—J�+± !Vññ!GN11ð?¹K^SelîÿÿÿP¨Dg—J�+± !Vññ!GN11ð?¹K^SelH                                                                                                                                                  I äT   l                DG¨†dªrÓâÈYâ|gÄO¬s&YR5I lÞ                                                                                                                                        3qvNÇh×iKaš«K›P­"ÐqÔ¤Ë§!ž–aç0mvK0<tI	DÖ[”•7¨fj�wld:,"ÉP±S»^g¶2ë$¥({P_RŒU�’vD9û{‹)P¿Anf™YD8Þ5 PgHÙ#ˆqÂEgS‡d27¹}ÂµW>ËY‚§yÔ{A\<	’zýkZ¼ ûp©+‘*ÕeX9šåEŠ�iÈ/§\;àâ:ö8bGÙ((ema!å Ï6‚o™}Zs'%COdÐ
¨YP]æ÷[BTªvWL?F®Ch_"!•x"'³öj‘jÝ4®x×o«CD<Y#!*³vYyvè#�e¸JU>è+i[¼9*-Jc+`ÚS;?lcy (	   R,   t   DBL_MAX_EXPR   R
   t   rangeR	   R   t   randomt	   randrange(   R    t   basest   baseR   t   mt   nt   it   MR   R   t   _t   a_bitst   b_bitst   xt   y(    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt$   test_correctly_rounded_true_division|   sf    	3;!! !$(   t   __name__t
   __module__R%   t   TrueR,   t   requires_IEEE_754R<   (    (    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyR   5   s   	& c           C   s   t  t ƒ d  S(   N(   R   R   (    (    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt	   test_mainÙ   s    t   __main__(   t
   __future__R    t   sysR/   R   t   unittestt   test.test_supportR   t
   skipUnlessR   t   __getformat__t
   startswithR@   t
   float_infoR	   t   DBL_MAXt   max_expR-   t   min_expR
   t   mant_digR   R   R   t   TestCaseR   RA   R=   (    (    (    s‹   /home/sim/yocto/scarthgap/build/tmp/work/x86_64-linux/python-native/2.7.18/recipe-sysroot-native/usr/lib/python2.7/test/test_long_future.pyt   <module>   s$   		¤	