
    Ugjw                         d dl Z d dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmc mZ d dlmZ  G d d          Z G d d          ZdS )	    N)assert_array_lessassert_allcloseassert_equal)_bracket_root_bracket_minimum_ELIMITS)statsc            	          e Zd Zej                            dd          ej                            dd          ej                            dd          ej                            dd          d                                                 Zd Zej                            d	d
 ej	        ddd          g          ej                            dddg          ej                            dddg          ej                            dddg          d                                                 Z
ej                            d e            dddg          d             Zd Zej                            ddddgf          ej                            dddg          ej                            dddg          ej                            d ej        ej        ej        f          d!                                                 Zd" Zd# ZdS )$TestBracketRootseed)i&$l   v ih0use_xminFT
other_sidefix_one_sidec                    t           j                            |          }|                    d          g dz  \  }}}d|z   }||z   }	fd|r|                                 }
t          j        t          j        ||
z
   |
z            t          j        |          z            }|
||
z
  || z  z  z   |
||
z
  ||dz
   z  z  z   }}t          ||	||
          }nit          j        t          j        |	|z            t          j        |          z            }|	|||z  z  z
  |	|||dz
  z  z  z
  }}t          ||	|          }|r<|d          |d	          c|d	<   |d<   | | }}d
|v r|                    d
           |d<   |r|r|	 |d
<   n|	|d<   d_        t          fi |}|s:|j	        d|j
        dz   z  cxk    rdj        dz
  z  cxk    rd|dz   z  k    sn J n9|j	        |j
        dz   dz   cxk    rj        dz
  dz   cxk    r|dz   dz   k    sn J t          j        |j        |j        g          }t          |||f           t          j        |j        |j        g          }t          | |                     |j        |j        k    sJ t          j        |          }|d         |d          k    sJ |j        dk    sJ |j        sJ d S )N   size)     j@
         c                 (    xj         dz  c_         | S Nr   countxfs    `/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/optimize/tests/test_bracket.pyr   z-TestBracketRoot.test_nfev_expected.<locals>.f       GGqLGGH    )xl0xr0factorxmin)r#   r$   r%   r$   r#   r&   xmaxr      )nprandomdefault_rngceillogdictpopr   r   nfevnitasarrayxlxrr   flfrsignstatussuccess)selfr   r   r   r   rngr#   dr%   r$   r&   nlukwargsresbracket	f_bracketsignsr   s                      @r    test_nfev_expectedz"TestBracketRoot.test_nfev_expected   sm    i##D))++lll:QVAg	 	 	 	 	  	;JJLL=Dt}t344rvf~~EFFA3:vrz1143:vQRUVQVxGW:W3WqAcs6EEEFFs1uv677A619$cAfqsmO&;qAcs6:::F 	5,25M>F5M>(F5M6%=2rqA"(**V"4"4!4v 	% %"%v!$vA((((  	I8q#'!)}JJJJ1719JJJJAEJJJJJJJ8	1}HHHHAHHHH!A#qHHHHHH *cfcf-..!Q(((J/00		11W::... v	""QxE!H9$$$$zQ{r"   c                 F    t           j                            |          |z
  S N)r	   normcdf)r:   qps      r    r   zTestBracketRoot.fY   s    z~~a  1$$r"   rK   333333?皙?gffffff?r   r&   Nr'   r   r%   333333?r(   c           	          t          | j        dd||||f          }t          t          j        |j                   t          j        |j                             d S )N{Gz{Gz?)r&   r'   r%   args)r   r   r   r)   r7   r5   r6   )r:   rK   r&   r'   r%   rA   s         r    
test_basiczTestBracketRoot.test_basic\   sX     DFE4d#)6 6 6bgcfoo%rwsv77777r"   shape   r      r   r(   r(   c           
          |r)t          j        ddd                              |          nd}|f}dt           j         fd            } fdd_        t           j                            d	          }|                    |
           }|                    |
          }d|z  d|z  }	}|r:|                    |
          dk    }
t           j         t           j        c||
<   |	|
<   |                    |
          dz   }t          ||||	||          } |||||	||          	                                }g d}|D ]Wfd|D             }t          |          }t          |	                                |           t          |j        |           Xt          j        |j        j        t           j                  sJ |r#t          j        |j        dd                   sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          t          j        |j                  j        dz
             t1          |j        |j                   t          |j          j        |j        g|R             t          |j          j        |j        g|R             d S )N皙?rW   rL   r   c           
      >    t          j        | |||||f          S )Nr&   r'   r%   rS   maxiter)r   r   )r#   r$   r&   r'   r%   rK   r`   r:   s         r    bracket_root_singlez?TestBracketRoot.test_vectorization.<locals>.bracket_root_singlen   s0     c4(.aT)02 2 2 2r"   c                  >    xj         dz  c_          j        | i |S r   )f_evalsr   )rS   r@   r   r:   s     r    r   z-TestBracketRoot.test_vectorization.<locals>.ft   s)    IINII464*6***r"   r   # r        @@      ?      ?r_   )r3   r4   r5   r6   r9   r0   r1   c                 0    g | ]}t          |          S  getattr.0refattrs     r    
<listcomp>z6TestBracketRoot.test_vectorization.<locals>.<listcomp>   #    ;;;sT**;;;r"   r   r(   )r)   linspacereshape	vectorizerc   r*   r+   infr   ravelrk   r   r   rU   
issubdtyper9   dtypebool_allr8   integerr0   r1   maxr   r3   r4   r5   r   r6   )r:   rU   rK   rS   ra   r;   r#   r$   r&   r'   ir%   rA   refsattrsref_attrres_attrro   r   r`   s   `                @@@r    test_vectorizationz"TestBracketRoot.test_vectorizationf   s    <AIBKtR((00777ct		2 	2 	2 	2 	2 
	2
	+ 	+ 	+ 	+ 	+ 	+ 	i##G,,zzuz%%%jjej$$Wc#gd 	/


&&,A "wDGT!W''#-AsCdf!%w8 8 8""3T4CCIIKKBBB 	0 	0D;;;;d;;;HsD))HHNN,,h777////}S[.99999 	-6#+ad+,,,,,}SZ-rz:::::}SX^RZ88888}SW]BJ77777RVCG__ai!m444#&#&)))sv 5 5 5 5666sv 5 5 5 566666r"   c                    d }t          j        dt           j                  f}t          |g dg dt           j         dt           j         t           j         dgt           j        dt           j        t           j        d	g|d
          }t          j        t          j        t          t          j	        t          j
        t          j        g          }t          |j        |           d S )Nc                 T    d d d d d gfdt          | |          D             S )Nc                     | dz
  S )Nrg   ri   r   s    r    <lambda>z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s
    q3w r"   c                     | dz
  S Ni  ri   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   
    q4x r"   c                     | dz
  S r   ri   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   r   r"   c                     t           j        S rG   r)   nanr   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       rv r"   c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       q r"   c                 8    g | ]\  }} |         |          S ri   ri   rm   r   jfuncss      r    rp   z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>   )    888DAqHE!HQKK888r"   zipxsjsr   s     @r    r   z%TestBracketRoot.test_flags.<locals>.f   sK    &&''''%% [	"E 9888CBKK8888r"   r   ry   )rr   rr   rr   rr   rY   )r   r   r   r   rr      r   r(   r   )r#   r$   r&   r'   rS   r`   )r)   arangeint64r   rv   arrayeim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r8   )r:   r   rS   rA   	ref_flagss        r    
test_flagszTestBracketRoot.test_flags   s    	9 	9 	9 	!28,,,.A 3 3 3 0 0 0#%6'2w!C"$&!RVRVQ!?!%q2 2 2 Hco&!m!n!n	. / /	 	SZ+++++r"   root灕Cl?V-?ry   c                    ||n
 |          }||n
 |          } |          }fd}t          j        ddg          }t          |g|R |||fd}t          j        |j                  sJ |j        j        |j        j        cxk    rk    sn J |j        j        |j	        j        cxk    rk    sn J d S )Nc                 :    | |z
  dz                                 S )Nr   astype)r   r   ry   s     r    r   z%TestBracketRoot.test_dtype.<locals>.f   s    X!O++E222r"   rQ   rR   r   )r&   r'   rS   )
r)   r2   r   r{   r9   r3   ry   r4   r5   r6   )r:   r   r&   r'   ry   r   rB   rA   s       `   r    
test_dtypezTestBracketRoot.test_dtype   s
    |ttt|tttuT{{	3 	3 	3 	3 	3 *eT]%888ALLLdTGLLLvck"""""v|sv|4444u444444v|sv|4444u44444444r"   c                    d}t          j        t          |          5  t          d dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d dd	           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d
 ddt                     d d d            n# 1 swxY w Y   t          j        t          |          5  t          d ddt                                 d d d            n# 1 swxY w Y   t          j        t          |          5  t          d ddt                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d ddd           d d d            d S # 1 swxY w Y   d S )N`func` must be callable.matchr   rY   ...must be numeric and real.c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>       A r"   y            ?c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   helloc                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   r&   c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   r'   c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   r%   0All elements of `factor` must be greater than 1.c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rf   +shape mismatch: objects cannot be broadcastc                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   )r   rY   r   )`maxiter` must be a non-negative integer.c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rg   )r`   c                     | S rG   ri   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rr   )pytestraises
ValueErrorr   r)   objectsumr:   messages     r    test_input_validationz%TestBracketRoot.test_input_validation   sJ    -]:W555 	' 	'$A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 1]:W555 	1 	1++ua000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1]:W555 	4 	4++r7333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]:W555 	7 	7++r126666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:W555 	= 	=++r1688<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]:W555 	: 	:++r1S9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: E]:W555 	: 	:++r1S9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: @]:W555 	< 	<++Bx;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< >]:W555 	; 	;++r1c::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]:W555 	: 	:++r1b9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   <A A $BB
B)CCC.DDD:!E''E+.E+F33F7:F7G<<H H $III/JJJ6KKKc                    d t          dd          }|j        sJ d d}t          g|R ddi}|j        sJ |j        |k                |j        dk    sJ |j        dk    sJ |j        d	k    sJ d
 t          ddd          }|j        sJ t          |j         |j        d                     fdd_	        t          dd           t          j	        d           d_	        t          ddd          }|j        |j        f}t          |j        d           t          |dd           t          j        d          5  t          ddd          }d d d            n# 1 swxY w Y   |j        |j        f}t          |d         dd           t          j        d          5  t          ddd          }d d d            n# 1 swxY w Y   |j        |j        f}t          |d         dd           t          j        d          5  t          ddd          }d d d            n# 1 swxY w Y   |j        rJ d S )Nc                 ^    t          j        | j        t           j                  sJ | dz  dz
  S )Nc   r   r)   rx   ry   floatingr   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f   ,    ="+666667Q;r"   r   c                     | dz
  S )Nr   ri   r   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f   s    r6Mr"   )r   r   r`   r   r(   r   c                     || z  dz
  S r   ri   r   cs     r    r   z-TestBracketRoot.test_special_cases.<locals>.f  s    Q37Nr"   rr   r   r   rS   c                 (    xj         dz  c_         | S r   r   r   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f  r!   r"   i   r   r   rY   )r   r   gV瞯<)atolignore)overr   rN   r   )r   r9   r3   r4   r1   r0   r8   r   r5   r   r   r)   errstate)r:   rA   rB   r   s      @r    test_special_casesz"TestBracketRoot.test_special_cases   s   
	 	 	 Ar1%%{	 	 	 A333333v((sv((((w!||||x1}}}}zR	 	 	 Ar11---{#&!---	 	 	 	 	
 ab!!!QWa    Aq"Q///636"SXq!!!e4444 [h''' 	2 	21bq111C	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2636"
AE2222[h''' 	4 	43333C	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4636"
AE2222 [h''' 	2 	21bq111C	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2;s6   E..E25E24GGGH::H>H>)__name__
__module____qualname__r   markparametrizerE   r   r)   rs   rT   tupler   r   float16float32float64r   r   r   ri   r"   r    r   r   
   sd       [V%GHH[Z77[\=99[^];;H H <; :9 87 IHHT% % % [S3D$(C(C"DEE[Vb$Z00[VaY//[XQx008 8 10 0/ 10 FE8 [Wuuwwvy&IJJ.7 .7 KJ.7`, , ,8 [VeeU^%<==[Vb$Z00[VaY//[Wrz2:rz&JKK5 5 LK 0/ 10 >=5#: #: #:J> > > > >r"   r   c                   *   e Zd Zd Zd ZddddddddZej                            dd          ej                            d	d
          ej                            dd
          d                                     Z	d Z
ej                            ddddgf          ej                            dej        ej        ej        f          ej                            dddg          ej                            dddg          d                                                 Zd Zej                            dddg          ej                            dd          ej                            dd          ej                            dd          d                                                  Zej                            d!d"          ej                            dd#          d$                         Zej                            d%d&          ej                            dd'          d(                         Zej                            d)d*          d+             Zej                            d, e            d-d.d/g          d0             Zd1 Zd2 Zd3 ZdS )4TestBracketMinimumc                      fdd_         S )Nc                 :    xj         dz  c_         | |z
  dz  |z   S )Nr   r(   r   )r   abr   s      r    r   z$TestBracketMinimum.init_f.<locals>.f.  s$    GGqLGGEA:>!r"   r   r   )r:   r   s    @r    init_fzTestBracketMinimum.init_f-  s*    	" 	" 	" 	" 	" r"   c                    t          j        |j        |j        k     |j        |j        k     z            sJ t          j        |j        |j        k    |j        |j        k    z  |j        |j        k    |j        |j        k    z  z            sJ d S rG   )r)   r{   r3   xmr4   r5   fmr6   )r:   results     r    assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket4  s    vY"vy69'<=
 
 	
 	
 	
 vY&)#	FI(=>y69$VY)>?@
 
 	
 	
 	
 	
 	
r"   Nri   )r#   r$   r%   r&   r'   rS   c          
      F    d}d t          |||||||f          D             S )Nr#   r$   r&   r'   r%   rS   c                 ~    i | ]:\  }}t          |t          j                  st          j        |          s|d v7||;S ))Nri   )
isinstancer)   ndarrayisscalar)rm   namevals      r    
<dictcomp>z1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>A  s[     
 
 
#$#rz**
.0k#.>.>
 *$$ #$$$r"   r   )r:   r#   r$   r%   r&   r'   rS   namess           r    
get_kwargszTestBracketMinimum.get_kwargs=  sC     A
 
'*53T4QU2V'W'W
 
 
 	
r"   r   )l	   ^0#,N0Lb*& l	   }SES].HMa l	   FDuBP_KU r   r   r   c                    t           j                            |          }d}|                    d          g dz  \  }}}}	||z   }
|
|z   }|	dz  }	|r|                                 dz  }t          t          j        t          j        ||z
   |z            t          j        |	          z                      }|||z
  |	| z  z  z   }|||z
  |	|dz
   z  z  z   }|dk    r|||z
  |	|dz
   z  z  z   n|
}|dz  |dz  k    r|dz  }|||z
  |	| z  z  z   ||}}}nd }t          t          j        t          j        ||z            t          j        |	          z                      }|||	|z  z  z
  }|dk    r|||	|dz
  z  z  z
  n|}|dk    r|||	|dz
  z  z  z
  n|
}|dz  |dz  k    r|dz  }|||	|z  z  z
  ||}}}|                                 }d }|r| |
 | }}
}d || nd }}| | | }}}|                     |||||	|          }t          ||
fi |}|j	        |j
        d	z   k    sJ |j	        |j        k    sJ |j
        |k    sJ t          j        |j        |j        |j        g          }t!          ||||f           t          j        |j        |j        |j        g          }t!          | ||g|R             |                     |           |j        d
k    sJ |j        sJ d S )Nr   r   rY   r   )r   r   r   r   r   r   r(   r   r   r   )r)   r*   r+   intr,   r-   r   r  r   r0   r1   r   r2   r3   r   r4   r   r5   r   r6   r   r8   r9   )r:   r   r   r   r;   rS   r#   d1d2r%   xm0r$   r&   r=   lowermiddleupperr   r'   r@   r   rB   rC   s                          r    rE   z%TestBracketMinimum.test_nfev_expectedG  s    i##D)) "jjaj003C3C3CCRVBhBh! 	JJLL=1$DBGBFS4Z=4#78826&>>IJJKKAC$J
22ES4Z1Q377F:;a%%DC$J!A#666SE qy5!8##QC$J
22E6  %v DBGBF38,,rvf~~=>>??A"VQY,&E/01uuS2fqsm+++#F./!eeC"Vac]***E qy5!8##Q"VQY,&v  %v KKMM 	; D3$cC(8uud$D$)6F7UF56E4d6 ! 
 
 "!S33F33 {fj1n,,,,{ag%%%%zQ *fiFI>??%!7888J	69fi@AA		11W#4t#4#4#4555!!&)))}!!!!~r"   c           	         d }t          j        dt           j                  f}g d}g d}g d}t           j         dt           j         t           j         dg}t	          ||||||d	
          }t          j        t          j        t          t          j	        t          j
        t          j        g          }t          |j        |           d S )Nc                 T    d d d d d gfdt          | |          D             S )Nc                     | dz
  dz  S )Nrg   r(   ri   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    C!| r"   c                     | S rG   ri   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                     | S rG   ri   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                     t           j        S rG   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                     | dz  S Nr(   ri   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s
    q!t r"   c                 8    g | ]\  }} |         |          S ri   ri   r   s      r    rp   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>  r   r"   r   r   s     @r    r   z(TestBracketMinimum.test_flags.<locals>.f  sI    ++ [ [%%#^	%E 9888CBKK8888r"   r   r   )      r  r  r        @)        r  r  r        @)      ?r  r  r         @r  g       @r   )r#   r$   r&   rS   r`   )r)   r   r   rv   r   r   r   r   r   r   r   r   r   r8   )	r:   r   rS   r#   r
  r$   r&   r   reference_flagss	            r    r   zTestBracketMinimum.test_flags  s    	9 	9 	9 	!28,,,.+++''''''vgtbfWrvgs3!!Scs'+Q8 8 8 (COX$'M3>$'N$4 5 5 	V]O44444r"   minimumr   r   ry   r&   rN   r'   r   c           	         ||n
 |          }||n
 |          } |          }fd}t          j        g d          \  }}}t          |||||||f          }	t          j        |	j                  sJ |	j        j        |	j        j        cxk    r|	j        j        cxk    rk    sn J |	j	        j        |	j
        j        cxk    r|	j        j        cxk    rk    sn J d S )Nc                 :    | |z
  dz                                 S r  r   )r   r  ry   s     r    r   z)TestBracketMinimum.test_dtypes.<locals>.f  s     [1$,,U333r"   )rQ   r  rR   r   )r#   r$   r&   r'   rS   )r)   r   r   r{   r9   r3   ry   r   r4   r5   r   r6   )
r:   r  r&   r'   ry   r   r#   r
  r$   r   s
       `     r    test_dtypeszTestBracketMinimum.test_dtypes  s;   
 |ttt|ttt%..	4 	4 	4 	4 	4 !3!3!35AAAS#!s4d'
 
 
 vfn%%%%%y&)/MMMMVY_MMMMMMMMMMy&)/MMMMVY_MMMMMMMMMMMMr"   c                    d}t          j        t          |          5  t          d dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d d           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d	 dd
           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d dt                     d d d            n# 1 swxY w Y   t          j        t          |          5  t          d dt                                 d d d            n# 1 swxY w Y   t          j        t          |          5  t          d dt                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d dd           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddgg d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          d ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rY   )r#   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  
    q!t r"   y      @      ?c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   r   r   c                     | S rG   ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  s    q r"   rf   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   r   r   )r   r   rN   r   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   rg   )r$   r`   c                     | dz  S r  ri   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r$  r"   rr   )r   r   r   r   r)   r   r   r   s     r    r   z(TestBracketMinimum.test_input_validation  s    -]:W555 	. 	.T21----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 1]:W555 	3 	3^^T222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]:W555 	> 	>^^RW====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]:W555 	: 	:^^Rb9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:]:W555 	@ 	@^^Rfhh????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@]:W555 	= 	=^^R<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= E]:W555 	: 	:[["S9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: @]:W555 	I 	I^^b"X<<<HHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I >]:W555 	E 	E^^RQDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E]:W555 	D 	D^^RQCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   =AA%BB
B)C		CC/DDD: E&&E*-E*F11F58F5G99G= G=!II	I	-JJJ4KKKr#   r  r
  )rM   皙?g333333?r$   )皙?皙?rL   NrS   ))rO   r   )g      r   )r-  r   )r.  r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   c                     |                                  }|                     |||          }t          ||fi |}|                     |           |j        dk    sJ |j        sJ |j        |j        k    sJ d S )Nr#   r$   rS   r   r   r  r   r   r8   r9   r0   r   )r:   r#   r
  r$   rS   r   r@   r   s           r    test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limits  s     KKMMSc==!!S33F33!!&)))}!!!!~{ag%%%%%%r"   zxl0,xm0,xr0,xmin))rf         ?r  r  )r        @r  r  )r  r  r  r  )g      (@      0@      4@r  )Nr4  r  r  )Nr5  r  r  )Nr  r  r  )Nr6  r7  r  ))r  r  )gYnr  )g#B;r  )r-  r  )r.  r  )r/  r  c                     |                                  }|                     ||||          }t          ||fi |}|                     |           |j        dk    sJ |j        sJ |j        |j        k    sJ d S )N)r#   r$   r&   rS   r   r2  )	r:   r#   r
  r$   r&   rS   r   r@   r   s	            r    test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_left  s    : KKMMSc4HH!!S33F33!!&)))}!!!!~{ag%%%%%%r"   zxl0,xm0,xr0,xmax))r.  333333?r/  r  )rM   333333?r-  r  )皙ɿ皙r  r  )3333335333331gffffff,r  )r.  r:  Nr  )rM   r;  Nr  )r<  r=  Nr  )r>  r?  Nr  ))g?r  )g?r  )gffffff?r  )rf   r  c                     |                                  }|                     ||||          }t          ||fi |}|                     |           |j        dk    sJ |j        sJ |j        |j        k    sJ d S )N)r#   r$   r'   rS   r   r2  )	r:   r#   r
  r$   r'   rS   r   r@   r   s	            r    test_scalar_with_limit_rightz/TestBracketMinimum.test_scalar_with_limit_right!  s    4 KKMMSc4HH!!S33F33!!&)))}!!!!~{ag%%%%%%r"   zxl0,xm0,xr0,xmin,xmax,args))r.  r:  r/  Nr  r  r  )gffffff?333333?r5  r:  Nr:  r  )g@      
@g333333@N皙X@rF  r   )rY         @r   L:NrI  r   )Nr:  NNr  rB  )NrC  Nr:  NrD  )NrE  NNrF  rG  )NrH  NrI  NrJ  c                     |                                  }|                     ||||          }t          ||fi |}	|	j        dk    sJ |d         |	j        |	j        fv sJ |	j        |j        k    sJ d S )N)r$   r&   r'   rS   rr   r   )r   r  r   r8   r3   r4   r0   r   )
r:   r#   r
  r$   r&   r'   rS   r   r@   r   s
             r    test_minimum_at_boundary_pointz1TestBracketMinimum.test_minimum_at_boundary_pointC  s    z KKMMSt$TJJ!!S33F33}""""Aw69fi00000{ag%%%%%%r"   rU   rV   rX   rZ   c                     |r)t          j        ddd                              |          nd}|df}dt           j         fd            }                                 }t           j                            d          }|                    |	           }|                    |	          }||                    |	          ||z
  z  z   }	d
|z  d
|z  }}
|r:|                    |	          dk    }t           j         t           j        c|
|<   ||<   |                    |	          dz   }t          ||	|||
|||	  	        } ||	|||
|||          	                                }g d}|D ]Wfd|D             }t          |          }t          |	                                |           t          |j        |           Xt          j        |j        j        t           j                  sJ |r#t          j        |j        dd                   sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          j        |j        j        t           j                  sJ t          t          j        |j                  |j        dz
                                  |           t          |j         ||j        g|R             t          |j         ||j        g|R             t          |j         ||j        g|R             d S )Nr\   r]   rW   rL   r  r   c                 \    t                                          | ||||||df	  	        S )Nr  )r#   r$   r&   r'   r%   r`   rS   )r   r   )	r
  r#   r$   r&   r'   r%   r   r`   r:   s	          r    bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s:    #DKKMM3CSt)-fg*+S3 3 3 3r"   rd   r   re   rf   rg   )r#   r$   r&   r'   r%   rS   r`   )	r3   r   r4   r5   r   r6   r9   r0   r1   c                 0    g | ]}t          |          S ri   rj   rl   s     r    rp   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>  rq   r"   r   rr   r   ) r)   rs   rt   ru   r   r*   r+   rv   r   rw   rk   r   r   rU   rx   r9   ry   rz   r{   r8   r|   r0   r1   r}   r   r   r5   r3   r   r   r6   r4   )r:   rU   r   rS   rO  r   r;   r#   r$   r
  r&   r'   r~   r%   rA   r   r   r   r   ro   r`   s   `                  @@r    r   z%TestBracketMinimum.test_vectorization  sN    <AIBKtR((00777c3x		3 	3 	3 	3 	3 
	3
 KKMMi##G,,zzuz%%%jjej$$CJJEJ**cCi88Wc#gd 	/


&&,A "wDGT!W''#-q#3Cd&,4J J J%%c3T4KKQQSSNNN 	0 	0D;;;;d;;;HsD))HHNN,,h777////}S[.99999 	-6#+ad+,,,,,}SZ-rz:::::}SX^RZ88888}SW]BJ77777RVCG__agk222!!#&&&#& 04 0 0 0111#& 04 0 0 0111#& 04 0 0 011111r"   c           	         d }t          |dd          }|j        sJ d }d\  }}}t          ||||d          }t          |j        |j        |j        g|||g           d	 }t          |d
d          }|j        sJ t          |j         ||j        d                     |                                 }g d\  }}}d}t          |||||          }|j	        dk    sJ t          |j        |j        |j        g|||g           t          |j        |j
        |j        g ||g|R   ||g|R   ||g|R  g           d S )Nc                 ^    t          j        | j        t           j                  sJ | dz  dz
  S )Nb   r   r   r   s    r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  r   r"   r   r   )r$   c                     | dz  dz
  S )Nr(   r   ri   r   s    r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  s    a4"9r"   )r   rr   r(   r   )r#   r$   r`   c                     || dz  z  dz
  S )Nr(   r   ri   r   s     r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  s    QT6A:r"   rr   r   r   )r  r<  r  r  r1  )r   r9   r   r3   r   r4   r   r5   r   r   r   r6   )r:   r   r   r#   r
  r$   rS   s          r    r   z%TestBracketMinimum.test_special_cases  s   
	 	 	 "!RQ///~	 	 	 "S#!!ScsAFFFfiFI6c3HHH	 	 	 "!Ra000~	11VY??333 KKMM)))S#!!ScsFFFw!||||Y	69-#sO	
 	
 	
 	Y	69-Qs]T]]]AAcMDMMM11S=4===9	
 	
 	
 	
 	
r"   c                 `    d\  fd}t          |d          }|j        k    sJ d S )N)gJg7e4?g[2\WZ?c                 N    t          j        g          \  }}||z
  | z  dz   S Nrr   r)   r-   r   log_alog_br'   r&   s      r    r   z0TestBracketMinimum.test_gh_20562_left.<locals>.f  s1    64,//LE5emQ&+++r"   g_\ݶ?r&   r'   )r   r3   r:   r   r   r'   r&   s      @@r    test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_left  s_     ,
d	, 	, 	, 	, 	, 	, "!%7dNNNvy      r"   c                 `    d\  fd}t          |d          }|j        k    sJ d S )N)g[2\WZgJg7e4̿c                 P    t          j          g          \  }}||z
  | z  dz  S rX  rY  rZ  s      r    r   z1TestBracketMinimum.test_gh_20562_right.<locals>.f  s2    6D54%.11LE5U]A%**r"   g_\ݶr]  )r   r4   r^  s      @@r    test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_right  s_     /
d	+ 	+ 	+ 	+ 	+ 	+ "!%8t$OOOvy      r"   )r   r   r   r   r   r  r   r   r   rE   r   r)   r   r   r   r!  r   r3  r9  rA  rL  r   r   r   r_  rb  ri   r"   r    r   r   ,  s         
 
 
 44dQS
 
 
 
 
 [	
  [Z77[\=99C C :9 87 CJ5 5 54 [Y(?@@[Wrz2:rz&JKK[Vb$Z00[VaY//N N 0/ 10 LK A@N  D  D  DD [US$K00[U$566[U$9:: [	
 & & 	 ;: 76 10& [	
 " [ 

 
& &
 
# 8& [	
   [ 
 & & ! 2& [$X	
[ [x& &y[ [x& [Wuuww	&JKK-2 -2 LK-2^*
 *
 *
X
! 
! 
!
! 
! 
! 
! 
!r"   r   )r   numpyr)   numpy.testingr   r   r   scipy.optimize._bracketr   r   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr	   r   r   ri   r"   r    <module>rj     s         J J J J J J J J J J M M M M M M M M M M 6 6 6 6 6 6 6 6 6      _ _ _ _ _ _ _ _D	m! m! m! m! m! m! m! m! m! m!r"   