Ñò
 pXJc           @   sb  d  d k  Z  e  i i d d ƒ d  d k i i Z d  d k l Z d  d k Z d d „ Z	 d d „ Z
 y d  d k Td	 „  Z Wn n Xd
 „  Z d  d k Z d „  Z e d j o­ d Z e e ƒ Z d Z e e e ƒ d Ge	 e d ƒ Ge e d ƒ Ge e d ƒ GHd Ge	 e d  ƒ Ge e d  ƒ Ge e d  ƒ GHd Ge	 e d ƒ Ge e d ƒ Ge e d ƒ GHn d S(   iÿÿÿÿNi    s   ..(   t   bisect_lefti   c         C   s"   d } t  i | d d g d d ƒS(   NsB  
           #line 33 "binary_search.py"
           if (!PyList_Check(py_seq))
               py::fail(PyExc_TypeError, "seq must be a list");
           if (!PyInt_Check(py_t))
               py::fail(PyExc_TypeError, "t must be an integer");
           int val, m, min = 0;
           int max = seq.len()- 1;
           for(;;)
           {
               if (max < min )
               {
                   return_val = -1;
                   break;
               }
               m = (min + max) / 2;
               val = py_to_int(PyList_GET_ITEM(py_seq,m),"val");
               if (val < t)
                   min = m + 1;
               else if (val > t)
                   max = m - 1;
               else
               {
                   return_val = m;
                   break;
               }
           }
           t   seqt   tt   verbosei   (   t   inline_toolst   inline(   R   R   t   chkt   code(    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   c_int_search   s    !c         C   s-   | o n d } t  i | d d g d d ƒS(   NsS  
           #line 67 "binary_search.py"
           int val, m, min = 0;
           int max = seq.len()- 1;
           for(;;)
           {
               if (max < min )
               {
                   return_val = -1;
                   break;
               }
               m = (min + max) / 2;
               val = seq[m];
               if (val < t)
                   min = m + 1;
               else if (val > t)
                   max = m - 1;
               else
               {
                   return_val = m;
                   break;
               }
           }
           R   R   R   i   (   R   R   (   R   R   R   R   (    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   c_int_search_scxx>   s    (   t   *c         C   s.   d } t  i | d d g d d d d d g ƒS(	   NsÏ  
               #line 62 "binary_search.py"
               int val, m, min = 0;
               int max = Nseq[0] - 1;
               PyObject *py_val;
               for(;;)
               {
                   if (max < min )
                   {
                       return_val = -1;
                       break;
                   }
                   m = (min + max) / 2;
                   val = seq[m];
                   if (val < t)
                       min = m + 1;
                   else if (val > t)
                       max = m - 1;
                   else
                   {
                       return_val = m;
                       break;
                   }
               }
               R   R   R   i   t   extra_compile_argss   -O2s   -G6(   R   R   (   R   R   R   (    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   c_array_int_searcha   s    c         C   s‚   d } t  |  ƒ d } xe | | j  o d S| | d } |  | | j  o | d } q |  | | j o | d } q | Sq d  S(   Ni    i   iÿÿÿÿi   (   t   len(   R   R   t   mint   maxt   m(    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   py_int_search   s     c         C   s%  d | t  f GHt i ƒ  } x! t | ƒ D] } t |  | ƒ q( Wt i ƒ  } | | } d G| | GHt i ƒ  } x! t | ƒ D] } t |  | ƒ q{ Wt i ƒ  } | | d } d G| GHd | | GHt |  | ƒ t i ƒ  } x' t | ƒ D] } t |  | d d ƒqè Wt i ƒ  } | | d } d G| GHd | | GHt |  | ƒ t i ƒ  } x' t | ƒ D] } t |  | d d	 ƒq[Wt i ƒ  } | | d } d
 G| GHd | | GHt |  | ƒ t i ƒ  } x' t | ƒ D] } t |  | d d ƒqÎWt i ƒ  } | | d } d G| GHd | | GHt |  | ƒ t i ƒ  } x' t | ƒ D] } t |  | d d	 ƒqAWt i ƒ  } | | d } d G| GHd | | GHt |  ƒ }  y} t |  ƒ }  t |  | ƒ t i ƒ  } x! t | ƒ D] } t |  | ƒ qÏWt i ƒ  } | | d } d G| GHd | | GHWn n Xd  S(   Ns9   Binary search for %d items in %d length list of integers:s    speed in python:g#B’¡œÇ;s    speed of bisect:s    speed up: %3.2fR   i   s    speed in c:i    s    speed in c(no asserts):s    speed for scxx:s    speed for scxx(no asserts):s    speed in c(numpy arrays):(	   R   t   timet   rangeR   t   bisectR   R	   t   arrayR   (   t   at   nt   t1t   it   t2t   pyt   bit   sp(    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   search_compare   s„     
 	 	 	 	 	 	t   __main__i † iPÃ  s   search(a,3450)iz  s   search(a,-1)s   search(a,10001)i'  (   t   syst   patht   insertt   scipy.weave.inline_toolst   weaveR   R   R    t   typesR   R	   t   numpyR   R   R   R   t   __name__R   R   R   R   (    (    (    sR   C:\graphics\Tools\Python26\Lib\site-packages\scipy\weave\examples\binary_search.pyt   <module>   s,   %!
		I,,