
    ^Mh                     x   d dl Z d dlZd dlmZ d dlmZmZ d dlm	c m
Z d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d Zd	 Zd
ZdZe j                            de          e j                            de          ee j                            d           G d d                                                          Ze j                            de          e j                            de          ee j                            d           G d d                                                          ZdS )    N)_ELIMITS)bracket_rootbracket_minimum)stats)xp_assert_closexp_assert_equalxp_assert_lessarray_namespace)xp_ravel)array_api_compatiblec                  v    t          | i |}|j        \  |_        |_        |j        \  |_        |_        |`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsress      a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_bracket.py_bracket_rootr      sA    

'
'
'C[NCFCF]NCFCFJ    c                      t          | i |}|j        \  |_        |_        |_        |j        \  |_        |_        |_        |`|`|S r   )	r   r   r   xmr   r   r   fmr   r   s      r   _bracket_minimumr   #   sK    
4
*6
*
*C [CFCFCF ]CFCFCFJr   z5Array API does not support fancy indexing assignment.z*JAX arrays do not support item assignment.array_api_strict)reasonz	jax.numpyskip_xp_backendsc            	          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 d!          d"                                                 Z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|                    |                                           }|                    |                    ||z
   |z            |                    |	          z            }|||z
  |	| z  z  z   |||z
  |	|dz
   z  z  z   }}t          ||
|	|          }nl|                    |                    |
|z            |                    |	          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 |                    |j        |j        g          }t          ||                    ||g                     |                    |j        |j        g          }t          | |                     |j        |j        k    s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 Nr1   countxfs    r   r8   z-TestBracketRoot.test_nfev_expected.<locals>.fG       GGqLGGHr   )xl0xr0factorxmin)r:   r;   r<   r;   r:   r=   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr5   r   nfevnitr   r   r   r   r   signstatussuccess)selfr%   r&   r(   r)   xprngr:   dr<   r;   r=   nlur   r   r   r   signsr8   s                       @r   test_nfev_expectedz"TestBracketRoot.test_nfev_expected4   s    i##D))CJJAJ$6$6$EFFQVAg	 	 	 	 	  	;::szz||m,,Dt}t344rvvf~~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F!3!3444JJ/00		11W::... v	""QxE!H9$$$$zQ{r   c                 j    t           j                                                            |          |z
  S r   )r   	_stats_py_SimpleNormalcdf)rM   qps      r   r8   zTestBracketRoot.f   s)    ,,..2215599r   r[   333333?皙?gffffff?r/   r=   Nr>   r0   r<   333333?r?   c                    t          | j        |                    d          d||||                    |          f          }t          |                    |j                   |                    |j                             d S )N{Gz{Gz?)r=   r>   r<   r   )r   r8   rC   r   rJ   r   r   )rM   r[   r=   r>   r<   rN   r   s          r   
test_basiczTestBracketRoot.test_basic   sv     DFBJJu$5$5t$T#)A0@B B B("''#&//:::::r   shape   r+      r+   r?   r?   c           
      T    |r)t          j        ddd                              |          nt          j        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   } ||||	|
||          	                                }
                    |          
                    |          
                    |	          
                    |
          
                    |          f\  }}}	}
}t          t          j
        |                    }t          |||	|
||          }g d}|D ]hfd|D             }t          |          }t          t!          |                              |                     t%          |j        |           it)          
                    d                    }|j        j        |j        k    sJ |r$                    |j        dd                   sJ |j        j        j        k    sJ |j        j        j        k    sJ |j        j        j        k    sJ                     |j                  j        dz
  k    sJ t=          |j        |j                    t          |j!        
                      j"        |j        g|R                       t          |j#        
                      j"        |j         g|R                       d S )N皙?rf   r\   r/   c           
      >    t          j        | |||||f          S )Nr=   r>   r<   r   maxiter)r   r8   )r:   r;   r=   r>   r<   r[   ro   rM   s         r   bracket_root_singlez?TestBracketRoot.test_vectorization.<locals>.bracket_root_single   s0     c4(.aT)02 2 2 2r   c                  >    xj         dz  c_          j        | i |S r3   )f_evalsr8   )r   r   r8   rM   s     r   r8   z-TestBracketRoot.test_vectorization.<locals>.f   s)    IINII464*6***r   r   # r,        @@      ?      ?rn   )r   r   r   r   rL   rH   rI   c                 V    g | ]%}                     t          |                    &S  rC   getattr.0refattrrN   s     r   
<listcomp>z6TestBracketRoot.test_vectorization.<locals>.<listcomp>   /    GGG3

73#5#566GGGr   rN         ?r1   r?   )$r@   linspacereshapefloat64	vectorizerr   rA   rB   infravelrC   tuplemapr   rz   r   r   stackr   rd   r
   rL   dtypeboolallrK   int32rH   rI   maxr	   r   r   r   r8   r   )rM   rd   rN   r[   r   rp   rO   r:   r;   r=   r>   ir<   refsr   attrsref_attrres_attrxp_testr~   r8   ro   s   ` `                @@@r   test_vectorizationz"TestBracketRoot.test_vectorization   s    <AUBKtR((00777bjQToot		2 	2 	2 	2 	2 
	2
	+ 	+ 	+ 	+ 	+ 	+ 	i##G,,zzuz%%%jjej$$Wc#gd 	/


&&,A "wDGT!W''#-""3T4CCIIKK(*

3C(*

4(8(8"**T:J:J(*

6(:(:(<$S$f ST**++AsCdf!%w8 8 8 CBB 	3 	3DGGGGG$GGGHsD))HHX"555rxx7I7IJJJHNE2222!"**R..11{ GL0000 	-66#+ad+,,,,,z28++++x~))))w}((((vvcg!)a-////svsv&&&

646#&+@4+@+@+@ A ABBB

646#&+@4+@+@+@ A ABBBBBr   c                 4   fd}                     dj                  f}t          |                    g d                              g d                              j         dj         j         dg                              j        dj        j        d	g          |d
          }                    t
          j        t          t
          j        t
          j	        t
          j
        gj                  }t          |j        |           d S )Nc                 Z    d d d fdd gfdt          | |          D             S )Nc                     | dz
  S )Nrv   rx   r7   s    r   <lambda>z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s
    q3w r   c                     | dz
  S Ni  rx   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   
    q4x r   c                     | dz
  S r   rx   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   r   r   c                     | j         z  S r   nanr7   rN   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s    q26z r   c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       q r   c                 R    g | ]#\  }} t          |                   |          $S rx   )intr|   r7   jfuncss      r   r   z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>   s1    ===AME#a&&M!$$===r   zipxsjsr   rN   s     @r   r8   z%TestBracketRoot.test_flags.<locals>.f   sR    &&'''')))) [	"E >===R====r   r0   r   )      r   r   r         @)r1   r1   r1   r1   r      r1   r?   r+   )r:   r;   r=   r>   r   ro   )arangeint64r   rC   r   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rK   )rM   rN   r8   r   r   	ref_flagss    `    r   
test_flagszTestBracketRoot.test_flags   s   	> 	> 	> 	> 	> 		!28	,,.A "

+C+C+C D D "

+;+;+; < <!#bfWb26'BF7A,N!O!O!#RVQ,J!K!K!%q2 2 2 JJ ( # # #	 0
 &(X  / /	 	
I.....r   root灕Cl?V-?r   float16float32r   c                 8  	 t          |          t          |                    d                    	||n|                    |          }||n|                    |          }|                    |          }	fd}|                    ddg          }t          |g|R |||fd}|                    |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 )Nr   r   c                 <                         | |z
  dz            S )Nr+   astype)r7   r   r   r   s     r   r8   z%TestBracketRoot.test_dtype.<locals>.f   s    >>1t8/5999r   ra   rb   )r=   r>   r   )rz   r
   rC   r   r   rL   r   r   r   r   r   )
rM   r   r=   r>   r   rN   r8   r   r   r   s
       `    @r   
test_dtypezTestBracketRoot.test_dtype   sQ    E""!"**R..11|ttD)F)F|ttD)F)Fzz$ez,,	: 	: 	: 	: 	: 	: **eT]%*88ALLLdTGLLLvvck"""""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            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   rh   ...must be numeric and real.c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>       A r   y            ?c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   helloc                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r=   c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r>   c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r<   0All elements of `factor` must be greater than 1.c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   ru   	broadcastc                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   )r+   rh   r0   )`maxiter` must be a non-negative integer.c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rv   )ro   c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r   c                     | S r   rx   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   	shrubbery)	pytestraises
ValueErrorr   r@   objectsum	ExceptionrC   rM   rN   messages      r   test_input_validationz%TestBracketRoot.test_input_validation   s	    -]: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	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ]9G444 	T 	T++rzz2r(';';RZZ			=R=RSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T >]:W555 	; 	;++r1c::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]:W555 	: 	:++r1b9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:]:W555 	C 	C++r1kBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   <A A $BB
B)CCC.DDD:!E''E+.E+F33F7:F7G<<H H $=I--I14I1J66J:=J:K==LL#MM	M	c                    t          |                    d                    fdt          |                    d          |                    d                    }|j        sJ d |                    d          |                    d          f}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                     j        d	k    sJ d_        t          |                    d          |                    d          d	          }|j        dk    sJ t          |j        |                    d          d           t          |j        |                    d          d           t          j        d          5  t          |                    d          |                    d          d          }d d d            n# 1 swxY w Y   t          |j        |                    d          d           t          j        d          5  t          |                    d          |                    d          d          }d d d            n# 1 swxY w Y   t          |j        |                    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 ) Nr   c                 N                         | j        d          sJ | dz  dz
  S )Nzreal floatingc   r1   isdtyper   r7   r   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f#  s-    ??17O<<<<<7Q;r         g      @c                     | dz
  S )Nr/   rx   r   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f+  s    r6Mr         ro   r   r?   r   c                     || z  dz
  S r3   rx   r7   cs     r   r8   z-TestBracketRoot.test_special_cases.<locals>.f6  s    Q37Nr   r         @r   r+   c                 (    xj         dz  c_         | S r3   r4   r6   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f@  r9   r   i   g      $@r   rh           gV瞯<)atolignore)overr   g      $g      r   r1   )r
   rC   r   rL   r   r   rI   rH   rK   r   r   r5   r@   errstate)rM   rN   r   r   r8   r   s       @@r   test_special_casesz"TestBracketRoot.test_special_cases  s   !"**R..11	 	 	 	 	 Arzz#

2??{	 	 	 ::c??BJJrNN3A333333v((sv((((w!||||x1}}}}zR	 	 	 Arzz#

2!#B1 1 1{#&!---	 	 	 	 	
 aC"**R..999w!|||| Arzz"~~rzz##$& & & x1}}}}

2U;;;;

2U;;;; [h''' 	( 	(2::b>>2::c??%&( ( (C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	

2U;;;;[h''' 	( 	(2::d#3#3RZZ__%&( ( (C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	

2U;;;; [h''' 	( 	(2::b>>2::c??%&( ( (C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ;s6   *:J00J47J4::M  MM
:OOOc           	         d }t          j        ddg          }t          |dt           j         d|f          }d }g d}g d	}g d
}g d}t           j         dt           j         t           j         dt           j         t           j         t           j         g}dt           j        ddt           j        dddg}t          |||||||f          }t          d dt           j         d          }|j        sJ d S )Nc                 0    t          j        |           |z
  S r   r@   exp)r7   r[   s     r   r8   z)TestBracketRoot.test_bug_fixes.<locals>.fj  s    6!99q= r   g(\?gffffff?r   r   )r:   r=   r>   r   c                 6    t          j        | |z            |z
  S r   r  )r7   r[   r   s      r   r8   z)TestBracketRoot.test_bug_fixes.<locals>.fq  s    6!A#;;?"r   )gi<?gx?gt\c?gL0+?gt4?gj~?gE.K?g'2L?)r   r   r   r   r   r   r   r   )gʷG;g_.:
@gbG g9jgWM!?geg~:ZgV^ܿ)gʷG;g/B_@gŎzgH_sgЫ?gˆ-r   r   r   r:   r;   r=   r>   r   c                     | dz   S )Ng      ?rx   r   s    r   r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>  s
    a$h r         )r:   r=   r>   )r@   rC   r   r   rL   )	rM   r8   r[   r   r   r:   r;   r=   r>   s	            r   test_bug_fixeszTestBracketRoot.test_bug_fixesc  s2   	! 	! 	! Jd|$$A2RVG!1%HHH	# 	# 	#1 1 1...B B B0 0 0bfWrvgrBF7RVGBFBBFBB7A3CdQPQFSSS ..DwQOOO{r   )__name__
__module____qualname__r   markparametrizerU   r8   r@   r   rc   r   r   r   r   r   r  r  rx   r   r   r$   r$   /   ss       
 [V%GHH[Z77[\=99[^];;G G <; :9 87 IHGR: : : [S3D$(C(C"DEE[Vb$Z00[VaY//[XQx00; ; 10 0/ 10 FE; [Wuuwwvy&IJJ3C 3C KJ3Cj/ / /: [VeeU^%<==[Vb$Z00[VaY//[W&GHH5 5 IH 0/ 10 >=5"%C %C %CND D DL! ! ! ! !r   r$   c                   J   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d          ej                            dddg          ej                            dddg          d                                                 Zej                            dd          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            d0d1d2g          d3             Zd4 Zd5 Zd6 ZdS )7TestBracketMinimumc                      fdd_         S )Nc                 :    xj         dz  c_         | |z
  dz  |z   S )Nr1   r?   r4   )r7   abr8   s      r   r8   z$TestBracketMinimum.init_f.<locals>.f  s$    GGqLGGEA:>!r   r   r4   )rM   r8   s    @r   init_fzTestBracketMinimum.init_f  s*    	" 	" 	" 	" 	" r   c                 "   |                     |j        |j        k     |j        |j        k     z            sJ |                     |j        |j        k    |j        |j        k    z  |j        |j        k    |j        |j        k    z  z            sJ d S r   )r   r   r   r   r   r   r   )rM   resultrN   s      r   assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket  s    vvY"vy69'<=
 
 	
 	
 	
 vvY&)#	FI(=>y69$VY)>?@
 
 	
 	
 	
 	
 	
r   N)r:   r;   r<   r=   r>   r   c          
      F    d}d t          |||||||f          D             S )Nr:   r;   r=   r>   r<   r   c                     i | ]
\  }}|||S r   rx   )r|   namevals      r   
<dictcomp>z1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>  s+     
 
 
#$ #r   r   )rM   r:   r;   r<   r=   r>   r   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          f}|                    |                    d          g dz            \  }}}	}
||z   }||	z   }|
dz  }
|r|                    |                                 dz  |j                  }t          |                    |                    ||z
   |z            |                    |
          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          |                    |                    ||z            |                    |
          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        |           t          |j        |           t          |j        |           t          |j         ||g|R             t          |j         ||g|R             t          |j         ||g|R             |                     ||           |j        dk    sJ |j        sJ d S )Nr   rh   r,   )r.   r/   r/   r0   r1   r0   r   r?   r  r+   r   )r@   rA   rB   rC   r   r   rD   rE   r  r#  r   rH   rI   r5   r   r   r   r   r   r   r   r  rK   rL   )rM   r%   r&   r(   rN   rO   r   r:   d1d2r<   xm0r;   r=   rQ   lowermiddleupperr8   r>   r   r  s                         r   rU   z%TestBracketMinimum.test_nfev_expected  s"    i##D))

2

2/ !jj););>N>N>N)NOORVBhBh! 	::szz||ma/rz:BBDBGGBFFS4Z=4#788266&>>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BGGBFF38,,rvvf~~=>>??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 ! 
 
 "!RZZ__???? {fj1n,,,,{ag%%%%zQ 		5)))	6***	5)))	11U?T???333	11V#3d#3#3#3444	11U?T???333!!&"---}!!!!~r   c           	          fd}                     dj                  f}                    g d          }                    g d          }                    g d          }                    j         dj         j         dg          }t	          ||||||d	
          }                    t
          j        t          t
          j        t
          j	        t
          j
        gj                  }	t          |j        |	           d S )Nc                 Z    d d d fdd gfdt          | |          D             S )Nc                     | dz
  dz  S )Nrv   r?   rx   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    C!| r   c                     | S r   rx   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     | S r   rx   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     j         S r   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s	    rv r   c                     | dz  S Nr?   rx   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s
    q!t r   c                 8    g | ]\  }} |         |          S rx   rx   r   s      r   r   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>   s)    888DAqHE!HQKK888r   r   r   s     @r   r8   z(TestBracketMinimum.test_flags.<locals>.f  sP    ++ [ [%%%%#^	%E 9888CBKK8888r   r0   r   )r   r   r   r         @)r   r   r   r   r   )r   r   r   r          @r   g       @r+   )r:   r;   r=   r   ro   )r   r   rC   r   r   r   r   r   r   r   r   r   r   rK   )
rM   rN   r8   r   r:   r'  r;   r=   r  reference_flagss
    `        r   r   zTestBracketMinimum.test_flags  s   	9 	9 	9 	9 	9 		!28	,,.jj66677jj22233jj22233zzBF7D26'BF7C@AA!!Scs'+Q8 8 8 **cox&)mS^&)n&6=?X % G G 	77777r   minimumr   r   r   r   r=   r^   r>   r0   c           	         t          |          t          |                    d                    ||n|                    |          }||n|                    |          }|                    |          }fd}g d\  }}}	t          ||                    |          |                    |          |                    |	          |||f          }
|                    |
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 )Nr   r   c                 <                         | |z
  dz            S r2  r   )r7   r7  r   r   s     r   r8   z)TestBracketMinimum.test_dtypes.<locals>.f  s     >>1w;"2E:::r   )ra   r   rb   r	  )rz   r
   rC   r   r   rL   r   r   r   r   r   r   r   )rM   r7  r=   r>   r   rN   r8   r:   r'  r;   r  r   s       `      @r   test_dtypeszTestBracketMinimum.test_dtypes  s   
 E""!"**R..11|ttD)F)F|ttD)F)F**WE*22	; 	; 	; 	; 	; 	; +**S#!rzz#Uz++Cu1M1M

3e
,,4d'
 
 
 vvfn%%%%%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   Tzstr/object arrays)np_onlyr!   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          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            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   rh   )r:   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>1  
    q!t r   y      @      ?c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>3  r>  r   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>5  r>  r   zfarcical aquatic ceremonyr;   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>8  r>  r   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>:  r>  r   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda><  r>  r   r   r   c                     | S r   rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>@  s    q r   ru   z+shape mismatch: objects cannot be broadcastc                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>E  r>  r   r   r   )r   r   r^   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>I  r>  r   rv   )r;   ro   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>K  r>  r   r   c                     | dz  S r2  rx   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>M  r>  r   ekki)r   r   r   r   rC   r@   r   r   r   s      r   r   z(TestBracketMinimum.test_input_validation'  sf    -]:W555 	. 	.T21----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 1]:W555 	? 	?^^RZZ-=-=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]:W555 	J 	J^^RZZ^^IIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J]:W555 	> 	>^^RZZ^^!<> > > >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> ]:W555 	F 	F^^RZZ^^"EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F]:W555 	L 	L^^RZZ^^&((KKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L]:W555 	I 	I^^RZZ^^CHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I E]:W555 	F 	F[["**R..EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F @]:W555 	U 	U^^RZZR-A-A|||TTTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U >]:W555 	Q 	Q^^RZZ^^CPPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q]:W555 	P 	P^^RZZ^^BOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P]:W555 	T 	T^^RZZ^^FSSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	Ts   =AA%%BBB<'C//C36C3'EEE.,F&&F*-F*3HHH1,I))I-0I-'KKK,+L##L'*L'(M??NN%(OO O?(P44P8;P8r:   r   r'  )r]   皙?g333333?r;   )皙?皙?r\   Nr   ))r_   r   )r  r   )rK  r   )rL  r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   c           
      j   |                                  }|                     ||t          t          |j        |                              }t          ||                    ||j                  fi |}|                     ||           |j        dk    sJ |j	        sJ |j
        |j        k    sJ d S )Nr:   r;   r   r   r   )r  r#  r   r   rC   r   r   r  rK   rL   rH   r5   )	rM   r:   r'  r;   r   rN   r8   r   r  s	            r   test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limitsO  s     KKMMScc"*d>S>S8T8TUU!!RZZ2:Z%F%FQQ&QQ!!&"---}!!!!~{ag%%%%%%r   zxl0,xm0,xr0,xmin))ru         ?r   r   )r         @r   r   )r5  r   r4  r   )g      (@      0@      4@r   )NrQ  r   r   )NrR  r   r   )Nr   r4  r   )NrS  rT  r   ))r   r   )gYnr   )g#B;r   )rK  r   )rL  r   )rM  r   c                 ^   |                                  }|                     |||t          t          |j        |                              }t          ||                    |          fi |}	|                     |	|           |	j        dk    sJ |	j        sJ |	j	        |j
        k    sJ d S )N)r:   r;   r=   r   r   )r  r#  r   r   rC   r   r  rK   rL   rH   r5   )
rM   r:   r'  r;   r=   r   rN   r8   r   r  s
             r   test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_lefte  s    : KKMMSc&+C
D,A,A&B&B ! D D!!RZZ__????!!&"---}!!!!~{ag%%%%%%r   zxl0,xm0,xr0,xmax))rL  333333?rM  r   )r]   333333?rK  r   )皙ɿ皙r   r   )3333335333331gffffff,r   )rL  rW  Nr   )r]   rX  Nr   )rY  rZ  Nr   )r[  r\  Nr   ))g?r   )g?r   )gffffff?r   )ru   r   c                 d   |                                  }t          fd|D                       }|                     ||||          }t          |                    |j                  fi |}	|                     |	           |	j        dk    sJ |	j        sJ |	j	        |j
        k    sJ d S )Nc              3   P   K   | ] }                     |j                   V  !dS r   NrC   r   r|   argrN   s     r   	<genexpr>zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>  5      GG3RZZ2:Z66GGGGGGr   )r:   r;   r>   r   r   r   )r  r   r#  r   rC   r   r  rK   rL   rH   r5   )
rM   r:   r'  r;   r>   r   rN   r8   r   r  s
         `   r   test_scalar_with_limit_rightz/TestBracketMinimum.test_scalar_with_limit_right  s    4 KKMMGGGG$GGGGGSc4HH!!RZZ2:Z%F%FQQ&QQ!!&"---}!!!!~{ag%%%%%%r   zxl0,xm0,xr0,xmin,xmax,args))rL  rW  rM  Nr   r   r   )gffffff?333333?rR  rW  NrW  r   )g@      
@g333333@N皙X@rj  r   )rh         @r0   L:Nrm  r   )NrW  NNr   rf  )Nrg  NrW  Nrh  )Nri  NNrj  rk  )Nrl  Nrm  Nrn  c                 P   |                                  }|                     |||t          t          |j        |                              }	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>   r   r   r   )r  r#  r   r   rC   r   rK   r   r   rH   r5   )rM   r:   r'  r;   r=   r>   r   rN   r8   r   r  s              r   test_minimum_at_boundary_pointz1TestBracketMinimum.test_minimum_at_boundary_point  s    z KKMMSt$&+C
D,A,A&B&B ! D D!!RZZ__????}""""Aw69fi00000{ag%%%%%%r   rd   re   rg   ri   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          fd|D                       }t          |                    |
          ||	||||	  	        }g d}|D ]hfd|D             }t          |          }t          t          |                              |                     t!          |j        |           it%                              d                    }|j        j        |j        k    sJ |r$                    |j        dd                   sJ |j        j        j        k    sJ |j        j        j        k    sJ |j        j        j        k    sJ                     |j                  |j        dz
  k    sJ                      |           t          |j         ||j        g|R             t          |j          ||j!        g|R             t          |j"         ||j#        g|R             d S )Nrk   rl   rf   r\   r   r/   c                 \    t                                          | ||||||df	  	        S )Nr   )r:   r;   r=   r>   r<   ro   r   )r   r  )	r'  r:   r;   r=   r>   r<   r  ro   rM   s	          r   bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s:    #DKKMM3CSt)-fg*+S3 3 3 3r   rs   r,   rt   ru   rv   c              3   P   K   | ] }                     |j                   V  !dS r_  r`  ra  s     r   rc  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>-  rd  r   )r:   r;   r=   r>   r<   r   ro   )	r   r   r   r   r   r   rL   rH   rI   c                 V    g | ]%}                     t          |                    &S rx   ry   r{   s     r   r   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>3  r   r   r   r   r1   r   r+   )$r@   r   r   r   r  rA   rB   r   r   r   r   rC   rz   r   r   r   r   rd   r
   rL   r   r   r   rK   r   rH   rI   r   r5   r  r   r   r   r   r   r   )rM   rd   rN   r  r   rs  r8   rO   r:   r;   r'  r=   r>   r   r<   r   r   r   r   r   r   r~   ro   s   ` `                  @@r   r   z%TestBracketMinimum.test_vectorization  s    <AIBKtR((00777c2w		3 	3 	3 	3 	3 
	3
 KKMMi##G,,zzuz%%%jjej$$CJJEJ**cCi88Wc#gd 	/


&&,A "wDGT!W''#-%%c3T4KKQQSSGGGG$GGGGGq"**S//s$$(dGU U U ONN 	3 	3DGGGGG$GGGHsD))HHX"555rxx7I7IJJJHNE2222!"**R..11{ GL0000 	-66#+ad+,,,,,z28++++x~))))w}((((vvcg!'A+----!!#r***#& 04 0 0 0111#& 04 0 0 0111#& 04 0 0 011111r   c                    t          |                    d                    fd}t          ||                    d|j                  d          }|j        sJ d }|                    d          |                    d	          |                    d
          }}}t          ||||d          }t          |j        |           t          |j        |           t          |j        |           d }t          ||                    d	          |                    d                    }|j        sJ t          |j
         ||j        d                     |                                 }|                    d	          |                    d          |                    d          }}}|                    d          |                    d          f}t          |||||          }|j        dk    sJ t          |j        |           t          |j        |           t          |j        |           t          |j
         ||g|R             t          |j         ||g|R             t          |j         ||g|R             d S )Nr   c                 N                         | j        d          sJ | dz  dz
  S )Nnumericb   r1   r   r   s    r   r8   z0TestBracketMinimum.test_special_cases.<locals>.fK  s-    ??17I666667Q;r   r   r   r0   rA  c                     | dz  dz
  S )Nr?   r/   rx   r   s    r   r8   z0TestBracketMinimum.test_special_cases.<locals>.fS  s    a4"9r   r   r   r5  r   )r:   r;   ro   c                     || dz  z  dz
  S )Nr?   r1   rx   r   s     r   r8   z0TestBracketMinimum.test_special_cases.<locals>.f]  s    QT6A:r   r   r   r+   rY  r   rO  )r
   rC   r   r   rL   r   r   r   r   r   r   r  r5   r   r   )	rM   rN   r8   r  r:   r'  r;   r   r   s	           @r   r  z%TestBracketMinimum.test_special_casesE  sw   !"**R..11	 	 	 	 	 "!RZZ2:Z%F%FANNN~	 	 	 

3C"**R..#S!!ScsAFFF	3'''	3'''	3'''	 	 	 "!RZZ__2::b>>JJJ~	11VY??333 KKMM

4(("**T*:*:BJJsOO#S

2

2/!!ScsFFFw!||||	3'''	C(((	3'''	11S=4===111	11S=4===111	11S=4===11111r   c                                          d                               d          cfd}t          |                     d                    }|j        k    sJ d S )NgJg7e4?g[2\WZ?c                 p                                                                  }}||z
  | z  dz   S Nr   rE   r7   log_alog_br>   r=   rN   s      r   r8   z0TestBracketMinimum.test_gh_20562_left.<locals>.fw  s7    66$<<5EemQ&+++r   g_\ݶ?r=   r>   )rC   r   r   rM   rN   r8   r  r>   r=   s    `  @@r   test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_leftr  s     ZZ
++RZZ
-C-C
d	, 	, 	, 	, 	, 	, 	, "!RZZ0B%C%C$'+- - -vy      r   c                                          d                               d          cfd}t          |                     d                    }|j        k    sJ d S )Ng[2\WZgJg7e4̿c                 r                                                                    }}||z
  | z  dz  S r~  r  r  s      r   r8   z1TestBracketMinimum.test_gh_20562_right.<locals>.f  s8    664%=="&&$--5EU]A%**r   g_\ݶr  )rC   r   r   r  s    `  @@r   test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_right  s     ZZ,,bjj.E.E
d	+ 	+ 	+ 	+ 	+ 	+ 	+ "!RZZ0C%D%D'+$8 8 8vy      r   )r  r  r  r  r  r#  r   r  r  rU   r   r:  r"   r   rP  rV  re  rp  r   r   r  r  r  rx   r   r   r  r    s       
  
 
 
 44dQU
 
 
 
 
 [	
  [Z77[\=99E E :9 87 EN8 8 84 [Y(?@@[W&GHH[Vb$Z00[VaY//N N 0/ 10 IH A@N& [!!$7J!KK%T %T LK%TN [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/2b+2 +2 +2Z! ! !! ! ! ! !r   r  ) r   numpyr@   scipy.optimize._bracketr   scipy.optimize.elementwiser   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr   scipy._lib._array_api_no_0dr   r   r	   r
   scipy._lib._array_apir   scipy.conftestr   r   r   array_api_strict_skip_reasonjax_skip_reasonr  r"   usefixturesr$   r  rx   r   r   <module>r     sN        , , , , , , D D D D D D D D 6 6 6 6 6 6 6 6 6      J J J J J J J J J J J J * * * * * * / / / / / /      W >09UVVk/BB+,,Q Q Q Q Q Q Q -,  CB WVQh
 09UVVk/BB+,,! ! ! ! ! ! ! -,  CB WV! ! !r   