
&]\c           @` s  d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z m Z m	 Z	 d  d l
 m Z m Z m Z m Z d  d l Z d  d l m Z m Z m Z m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z m Z m  Z! d  d	 l" m# Z# d
 e j e$  j% Z& e e$  j% Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d   Z. d e/ f d     YZ0 d   Z1 d   Z2 d f  d     YZ3 d   Z4 d   Z5 d   Z6 d   Z7 d   Z8 d   Z9 d S(   i    (   t   divisiont   print_functiont   absolute_importN(   t   sqrtt   expt   sint   cos(   t   assert_warnst   assert_t   assert_allcloset   assert_equal(   t   finfot   powert   nant   isclose(   t   zerost   newtont   root_scalar(   t   getargspec_no_self(   t	   get_testst	   functionst   fstrings(   t   suppress_warningsi   c         C` s   |  d d |  d S(   Ni   i   (    (   t   x(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f1   s    c         C` s   d |  d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f1_1   s    c         C` s   d d |  S(   Ng       @i    (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f1_2#   s    c         C` s   t  |   t |   t |   f S(   N(   R   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f1_and_p_and_pp'   s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f2,   s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f2_10   s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f2_24   s    t	   TestBasicc           B` sh  e  Z d  d  Z d   Z d  d  d  Z d e d e d  d  Z d  d  d e d e d  Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z e d    Z e d    Z e d    Z e d    Z e d    Z e 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(!   i    c         K` s   d } t  d  } d t j t  j } d t j t  j } x t t t  D] \ } }	 | d k rx |	 d k rx qN n  t | d | d	 | | g d
 | d | d | | }
 |
 j	 } t
 |
 j  t | d d | d | d d | |	 f qN Wd  S(   Ng      ?i   i   i    t   f4t   f5t   f6t   methodt   brackett   x0t   xtolt   rtolg      ?t   atolt   err_msgs   method %s, function %s(   R    R!   R"   (   R   t   npR   t   floatt   epst   zipt   tstutils_functionst   tstutils_fstringsR   t   rootR   t	   convergedR	   (   t   selft   namet
   smoothnesst   kwargst   at   bR&   R'   t   functiont   fnamet   rt   zero(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   run_check_by_name:   s    !	c         C` s   d } t  d  } d t } d t } x} t t t  D]l \ } } | | | | d | d | d t \ }	 }
 t |
 j  t |	 d d | d | d	 d
 | | f q6 Wd  S(   Ng      ?i   i   R&   R'   t   full_outputg      ?R(   R)   s   method %s, function %s(	   R   t
   _FLOAT_EPSR-   R.   R/   t   TrueR   R1   R	   (   R2   R#   R3   R6   R7   R&   R'   R8   R9   R;   R:   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt	   run_checkI   s    

c         K` s4  g  } x[ | p g  D]M } | | k rO i d d 6d d 6d d 6j  | |  } n  | j | |  q Wt |   } | j i t d 6t d 6 x" | p g  D] } | | | | <q W| j  d	  }	 | j  d
 d  }
 y, | d
 |
 | |  \ } } |	 | | f SWn0 t k
 r/|	 t j t	 d d t j
  | f SXd  S(   NR%   R6   t   x1R7   t   ft   funcR=   t   dispR0   t   argsi(    (   t   gett   appendt   dictt   updateR?   t   Falset	   ExceptionR   t   RootResultsR   t
   _EVALUEERR(   R2   t   tcR#   t   sig_args_keyst   sig_kwargs_keysR5   t   method_argst   kt   method_kwargsR0   t	   func_argsR:   t   rr(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   _run_one_testU   s     *i   c         K` s'  t  |  } t | d  }	 t | d  |	 }
 | d |
  } g  } | d k r | d k r | j d  | d k r | j d  q n  | | d <n | | d	 <| | d
 <g  | D]- } t |  j | | d | d | |  ^ q } | p g  } g  | D] } | d j s | ^ q } g  | D]  } | d d | k r| ^ q} g  | D] } | d d ^ qI} t t |  | g d g  g  i d t d	 6d t d
 6} | j |   | d
 } | j	 d | d	  } g  | D] } | d j r| ^ q} g  | D] } | d j
 ^ q} g  | D] } | d ^ q} g  t | | |  D]L \ } } } t | | d
 | d | rA| d d | k rA| g | ^ qA} g  | D]) \ } } } } | d | | d  ^ q} g  t | |  D]% \ } } | d k r| g | ^ q} t | t |  g g  d g  d S(   s   Run test-cases using the specified method and the supplied signature.

        Extract the arguments for the method call from the test case
        dictionary using the supplied keys for the method's signature.i   i    t   secantR   t   halleyt   fprimet   fprime2t   tolR&   R'   RO   RP   i   it   IDi   R(   RB   RE   N(   RW   R   RX   (   R   RX   (   RX   (   t   _getargspect   lenRG   t   listRV   R1   R
   R>   RI   RF   R0   R-   R   (   R2   t   testsR#   R3   R&   R'   t
   known_failR5   t   sigt	   nDefaultst	   nRequiredRO   RP   RN   t   resultst   eltt   notcvgdt   notcvged_IDSt   tolsR(   t   cvgdt   approxt   correctR6   t   ct   notcloset   aroott   fulloutt   fvst   fv(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt	   run_testsl   sB    


7&-!
& "'6;c   
      K` s>   t  | d | }	 |  j |	 | | d | d | d | | d S(   su   Run a collection of tests using the specified method.

        The name is used to determine some optional arguments.R4   R&   R'   Ra   N(   R   Rs   (
   R2   t
   collectionR#   R3   R4   Ra   R&   R'   R5   R`   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   run_collection   s    c         C` s@   |  j  t j d  |  j d  |  j d t j d d d d  S(   Nt   bisectt   apsR4   i   (   R@   R   Rv   R<   Ru   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_bisect   s    c         C` s@   |  j  t j d  |  j d  |  j d t j d d d d  S(   Nt   ridderRw   R4   i   (   R@   R   Ry   R<   Ru   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_ridder   s    c      
   C` sL   |  j  t j d  |  j d  |  j d t j d d d d d d d d  S(   Nt   brentqRw   R4   i   R&   g+=R'   (   R@   R   R{   R<   Ru   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_brentq   s    c      
   C` sL   |  j  t j d  |  j d  |  j d t j d d d d d d d d  S(   Nt   brenthRw   R4   i   R&   g+=R'   (   R@   R   R}   R<   Ru   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_brenth   s    c         C` s@   |  j  t j d  |  j d  |  j d t j d d d d  S(   Nt   toms748Rw   R4   i   (   R@   R   R   R<   Ru   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_toms748   s    c      	   C` sV   d g } | d d g 7} x6 d d g D]( } |  j  | t j d d d d	 | q& Wd  S(
   Ns	   aps.13.00s	   aps.12.05s	   aps.12.17Rw   t   complexR   R4   i   Ra   (   Ru   R   R   (   R2   Ra   Rt   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_newton_collections   s
    	c         C` sm   d d d d d d d d d	 d
 d d d d g } x6 d d g D]( } |  j  | t j d d d d | q= Wd  S(   Ns	   aps.12.06s	   aps.12.07s	   aps.12.08s	   aps.12.09s	   aps.12.10s	   aps.12.11s	   aps.12.12s	   aps.12.13s	   aps.12.14s	   aps.12.15s	   aps.12.16s	   aps.12.17s	   aps.12.18s	   aps.13.00Rw   R   RX   R4   i   Ra   (   Ru   R   R   (   R2   Ra   Rt   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_halley_collections   s    c         C` s   |  d d |  d S(   Ni   i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c         C` s   d |  d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c         C` s   d d |  S(   Ng       @i    (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c         C` s   t  |   t |   S(   N(   R   R   (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    c      
   C` s$  x|  j  |  j |  j f |  j |  j |  j f g D] \ } } } t j | d d d } t | |  d d d t j | d d d d d } t | |  d d d t j | d d | d d } t | |  d d d t j | d d | d	 | d d } t | |  d d d q1 Wd  S(
   Ni   R[   gư>i    R(   RA   i   RY   RZ   (	   R   R   R   R   R   R   R   R   R	   (   R2   RB   t   f_1t   f_2R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_newton   s    ($c         C` sv   xo t  t t f t t t f g D]O \ } } } t | d d d d d | d d } t | | j  d d	 d q Wd
 S(   s#   Invoke newton through root_scalar()R#   R   R%   i   RY   R&   gư>i    R(   N(	   R   R   R   R   R   R   R   R	   R0   (   R2   RB   R   R   R:   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_newton_by_name   s    .$c         C` s   x t  t t f t t t f g D] \ } } } t | d d d d d d d d } t | | j  d	 d
 d t | d d d d d d d d } t | | j  d	 d
 d q Wd S(   s#   Invoke secant through root_scalar()R#   RW   R%   i   RA   i   R&   gư>i    R(   i   N(	   R   R   R   R   R   R   R   R	   R0   (   R2   RB   R   R   R:   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_secant_by_name  s
    .$$c         C` s|   xu t  t t f t t t f g D]U \ } } } t | d d d d d | d | d d } t | | j  d	 d
 d q Wd S(   s#   Invoke halley through root_scalar()R#   RX   R%   i   RY   RZ   R&   gư>i    R(   N(	   R   R   R   R   R   R   R   R	   R0   (   R2   RB   R   R   R:   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_halley_by_name
  s    .c         C` s   t  j t  ! t t d d d d d d Wd  QXt  j t  ! t t d d d d d d Wd  QXt  j t  ' t t d d d	 t d d d d Wd  QXt  j t  ' t t d d d
 t d d d d Wd  QXd  S(   NR#   RW   R%   i   R&   gư>R   RX   RY   RZ   (   t   pytestt   raisest
   ValueErrorR   R   R   R   (   R2   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_root_scalar_fail  s    ""(c   
      C` s	  d   } d   } d   } t  j d d d d d d	 d
 d d d g
  } t  j t d   d d } | | d d d d f } d g d } t j | | | |  } d! }	 t | |	  t j | | | | d | } t | |	  t j | | d | } t | |	  d  S("   s   test newton with arrayc         W` sO   | d |  | d } | d | d t  j | | d  d | | d |  S(   Ni    i   i   i   i   g      ?i   (   R*   R   (   R   R6   R7   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    c         W` sT   | d | d } | d t  j | d | d |  |  | | d | d d S(   Ni   i   i   i    i   i   (   R*   R   (   R   R6   R7   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   "  s    c         W` sD   | d | d } | d t  j | d | d |  |  | d S(   Ni   i   i   i    (   R*   R   (   R   R6   R7   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   &  s    g4O@gNk@g]0J@g]Qݚt@g~EO5@g$J ?g~5,@gXCڭ@gͮ9@@gӍ@i
   g      ?g      @g&.>gMbp?gn2d?gԩ˰@g9~4b'@gaq(@g0p@gk"z?g4se?gU+F@gwQu%@gd6)@g)i!@RZ   RE   N(
   gԩ˰@g9~4b'@gaq(@g0p@gk"z?g4se?gU+F@gwQu%@gd6)@g)i!@(   R*   t   arrayR   t   rangeR   R   R	   (
   R2   R   R   R   t   a0t   a1RE   R%   R   t
   x_expected(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_array_newton  s*    						   c         C` sG   t  j d   d d d g d t j d d g  g } t | d  d
 S(   s8   test secant doesn't continue to iterate zero derivativesc         W` s   |  |  | d S(   Ni    (    (   R   R6   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   <lambda>D  s    R%   gˡE}@i   RE   i   i   gf~@g      @N(   gf~@g      @(   R   R   R*   R   R	   (   R2   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt!   test_array_secant_active_zero_derB  s    c         C` st   t  j d   d g d d d d g f } t | d  t  j d	   d
 g d d d d g f } t | d  d  S(   Nc         S` s   | |  d S(   Ni   (    (   t   yt   z(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   J  s    g      @i   RE   g      .@g      1@gNO@gf~@c         S` s   | |  d S(   Ni   (    (   R   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   N  s    i   i   i   (   gNO@gf~@(   gNO@gf~@(   R   R   R	   (   R2   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_array_newton_integersH  s
    +c      
   C` s   t  t t j d   d d g d    t j t  g t j d   d d g d   d t } t | j d  | j	 j
   s t  | j j   s t  Wd  QXd  S(   Nc         S` s   |  d d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   T  s    g        c         S` s   d |  S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   T  s    c         S` s   |  d d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   W  s    c         S` s   d |  S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   X  s    R=   i    (   R   t   RuntimeWarningR   R   R   t   warnsR?   R	   R0   t   zero_dert   allt   AssertionErrorR1   t   any(   R2   Re   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt#   test_array_newton_zero_der_failuresQ  s    c      
   C` s  d   } d   } d   } d   } t  | d d d d d	 | } t  | d d d d d	 t } t | j | j d
 d t d | j | j  t  | d d d d d	 | d | } t  | d d d d d t } t | j | j d
 d t d | j | j  d  S(   Nc         S` s   |  d d |  d S(   Ni   i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   ^  s    c         S` s   d |  d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   _  s    c         S` s   d d |  S(   Ng       @i    (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   `  s    c         S` s%   |  d d |  d d |  d d f S(   Ni   i   g       @(    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   b  s    R#   R   R%   i   RY   R(   g:0yE>i   RX   RZ   (   R   R?   R	   R0   R
   t   function_calls(   R2   R   R   R   R   t   sol0t   sol(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_newton_combined]  s    				$c   
      C` s  d } d d d g } xt  d  D]} i d d 6t d	 6} x: d
 |  j g d |  j g g |  D] \ } } | | | <q_ Wt j |  j | d t | \ } } t | j	  t
 | | j  t
 | j | j f | |  | d k r| j | j d k st  n t
 | j | d | j  | j d }	 t j |  j | d |	 d t | \ } } t | j	  t
 | | j  t
 | j |	  | d k r" t j t d d |	 / t j |  j | d |	 d t | \ } } Wd  QXq" q" Wd  S(   Ni   i   i   i   i
   i	   gư>R[   R=   RY   RZ   RD   i    i   t   maxitert   matchs3   Failed to converge after %d iterations, value is .*(   i   i   (   i   i
   (   i   i	   (   R   R?   R   R   R   R   R   RJ   R   R1   R
   R0   t
   iterationsR   R   R   R   t   RuntimeError(
   R2   R%   t   expected_countst   derivsR5   RR   t   vR   R:   t   iters(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_newton_full_outputo  s.    /$*c         C` s/   d   } d   } t  t t j | d |  d  S(   Nc         S` s   |  d d S(   Ni   g       @(    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    c         S` s   d |  S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    g        (   R   R   R   R   (   R2   RC   t   dfunc(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_deriv_zero_warning  s    		N(#   t   __name__t
   __module__R<   R@   t   NoneRV   R>   Rs   Ru   Rx   Rz   R|   R~   R   R   R   t   staticmethodR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   8   sD   	3														
	'						%c          ` s   d     f d   }  t  j t  j g } t } } xR | D]J } | |  d d d | d | } t   | d | d | d d	 | j q8 Wd  S(
   Ng?c         ` s   |    S(   N(    (   R   (   R0   (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyRB     s    g    חg    cAR&   R'   R(   R)   s	   method %s(   R   Rv   Ry   t   TOLR	   R   (   RB   t   methodsR&   R'   R#   t   res(    (   R0   s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_gh_5555  s    
c       	   C` sw   d   }  d } d t  } t j t j g } xE | D]= } | |  d d d | d | } t d | d	 | d | q2 Wd  S(
   Nc         S` s   |  d k  r d S|  d Sd  S(   Ng      ?gg333333?(    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyRB     s    gRQ?i   i    i   R&   R'   g333333?R(   (   R>   R   R{   R}   R	   (   RB   R(   R'   R   R#   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_gh_5557  s    
	
t   TestRootResultsc           B` s   e  Z d    Z RS(   c      	   C` sA   t  j d d d d d d d d  } d	 } t t |  |  d  S(
   NR0   g      ?R   i,   R   i.   t   flagi    so         converged: True
           flag: 'converged'
 function_calls: 46
     iterations: 44
           root: 1.0(   R   RL   R
   t   repr(   R2   R:   t   expected_repr(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt	   test_repr  s    	(   R   R   R   (    (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s   c          C` s   d   }  d   } d   } t  d d  } d } t j |  | d | d	 | d
 | d d } t |  | |  d d d | g d } d } t j |  | d | d	 | d
 | d d } t |  | |  d d d d S(   s&   Test Halley's works with complex rootsc         W` s$   | d |  d | d |  | d S(   Ni    i   i   (    (   R   R6   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyRB     s    c         W` s   d | d |  | d S(   Ni   i    i   (    (   R   R6   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    c         W` sB   d | d } y t  |   } Wn t k
 r2 | SX| g | Sd  S(   Ni   i    (   R^   t	   TypeError(   R   R6   t   retvalt   size(    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    g      ?g       @g      @g      @RE   RY   RZ   R[   gư>i    R(   i
   N(   g       @g      @g      @(   g       @g      @g      @(   R   R   R   R	   (   RB   R   R   R   t   coeffsR   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_complex_halley  s    				**c       
   C` s#  t  j t  j d }  d |  d |  } t   6 } | j t d  t j d   d | g d } Wd QXt	 | d	 g d  d d } t   / } | j t d  t j d   d | } Wd QXt	 | d  d d } t   / } | j t d  t j d   d | } Wd QXt	 | d  d S(   sB   Test secant method with a non-zero dp, but an infinite newton stepgQ?g      i@g       @s   RMS ofc         S` s   |  d d S(   Ng      Y@i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    R%   i
   Nid   g-C6?s   Tolerance ofc         S` s   |  d d S(   Ng      ?i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR     s    i   g       c         S` s   |  d d S(   Ng      ?i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR      s    igSt$?g9m4  @gSt$g9m4  @(
   R*   R   R+   R,   R   t   filterR   R   R   R	   (   t   dxt   p0t   supR   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_zero_der_nz_dp  s     %

c          ` s   d }  d   d } d } d } | | |  | }   f d   } t  j t  T t j | d d d	 d
 d g d d d | |  g d t } | j j   s t  Wd QXt  j	 t
  9 t j | d d g d d d d | |  g d t } Wd QXd S(   s(   Test that array newton fails as expectedg?ga2U0*#?g@g\mJA?gCl@c         ` s?   d t  j |   d t  j   d | d | t  j |    S(   Ni   i   g@gGz@(   R*   R   t   log10(   t   darcy_frictiont   ret   dia(   t	   roughness(    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   colebrook_eqn  s    R%   g{Gz?g?gvÖ?g333333?R   i   RE   R=   N(   R   R   R   R   R   R?   R1   R   R   R   R   (   t   diametert   rhot   mut   ut   reynolds_numberR   t   result(    (   R   s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_array_newton_failures  s     c          C` s  d   }  t  j |  d d } t | d d t  j d t  j t  j |  d d g d } t | d d t  j d t  j d   } d   } t  j |  d d d	 | } t | d d t  j d t  j t  j |  d d d	 | d
 | } t | d d t  j d t  j t  j |  d d g d d	 | } t | d d t  j d t  j t  j |  d d g d d	 | d
 | } t | d d t  j d t  j t  j |  d d d	 | } t | d d t  j d t  j t  j |  d d g d d	 | } t | d d t  j d t  j d S(   s@   Test that Newton or Halley don't warn if zero derivative at rootc         S` s   |  d |  d S(   Ni   i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   f_zeroder_root*  s    R%   i    R(   R'   i
   c         S` s   d |  d d |  S(   Ni   i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   fder5  s    c         S` s   d |  d S(   Ni   i   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   fder29  s    RY   RZ   g      ?N(   R   R   R	   t   _xtolt   _rtol(   R   R:   R   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt!   test_gh8904_zeroder_at_root_fails&  s*    				"	"c       	   ` s   d     f d   }    f d   }   f d   } d } t  |  | d | d t \ } } | j si t  t  |  | d | d | d t \ } } | j s t  d	 S(
   sz   Test that Halley's method realizes that the 2nd order adjustment
    is too big and drops off to the 1st order adjustment.i	   c         ` s"   t  |  d    t    d    S(   Ng      ?(   R   (   R   (   t   n(    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyRB   [  s    c         ` s   t  |  d        S(   Ng      ?(   R   (   R   (   R   (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   fp^  s    c         ` s-   t  |  d d      d   d     S(   Ng      ?i   (   R   (   R   (   R   (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   fppa  s    g?RY   R=   RZ   N(   R   R?   R1   R   (   RB   R   R   R%   t   rtR:   (    (   R   s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   test_gh_8881V  s    !'c    	      C` s
  d   }  d   } d   } t  j d g d t  j } t |  | d | d | d t \ } } | j sl t  t  j d d	 g d t  j } t j t	  ) t
 j |  | d | d | d t } Wd
 QXd   } t
 j |  | d | d | d t } | j j   st  d
 S(   s_   
    Test that shape is preserved for array inputs even if fprime or fprime2 is
    scalar
    c         S` s   |  d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyRB   u  s    c         S` s   d |  S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   x  s    c         S` s   d S(   Ni   (    (   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyR   {  s    it   dtypeRY   RZ   R=   iNc         S` s#   d t  j t  j |   d t  j S(   Ni   R   (   R*   t   onest   shapet   float32(   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt	   fpp_array  s    (   R*   R   R   R   R?   R1   R   R   R   t
   IndexErrorR   R   (	   RB   R   R   R%   R   R:   t   x0_arrayR   R   (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt!   test_gh_9608_preserve_array_shapep  s    			'$	(:   t
   __future__R    R   R   R   t   mathR   R   R   R   t   numpy.testingR   R   R	   R
   t   numpyR*   R   R   R   R   t   scipy.optimizeR   R   R   t   scipy._lib._utilR   R]   t   scipy.optimize._tstutilsR   R   R.   R   R/   t   scipy._lib._numpy_compatR   R+   R,   R   R>   R   R   R   R   R   R   R   t   objectR   R   R   R   R   R   R   R   R   R   (    (    (    s>   lib/python2.7/site-packages/scipy/optimize/tests/test_zeros.pyt   <module>   s:   """							 c					"	0	