
    Yh                        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 d dlmZ d Zd Zd	Zd
Ze j                            de          e j                            de          e j                            de           G d d                                              Ze j                            dd          e j                            de          e j                            de          e j                            de           G d d                                                          ZdS )    N)_ELIMITS)bracket_rootbracket_minimum)stats)xp_assert_closexp_assert_equalxp_assert_less)xp_ravelc                  v    t          | i |}|j        \  |_        |_        |j        \  |_        |_        |`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsress      s/var/www/tools.fuzzalab.pt/emblema-extractor/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.z2JAX/Dask arrays do not support boolean assignment.array_api_strict)reasonz	jax.numpyz
dask.arrayc            	          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 Nr.   countxfs    r   r5   z-TestBracketRoot.test_nfev_expected.<locals>.fE       GGqLGGHr   )xl0xr0factorxmin)r7   r8   r9   r8   r7   r:   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr2   r   nfevnitr   r   r   r   r   signstatussuccess)selfr"   r#   r%   r&   xprngr7   dr9   r8   r:   nlur   r   r   r   signsr5   s                       @r   test_nfev_expectedz"TestBracketRoot.test_nfev_expected2   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)rJ   qps      r   r5   zTestBracketRoot.f   s)    ,,..2215599r   rX   333333?皙?gffffff?r,   r:   Nr;   r-   r9   333333?r<   c                    t          | j        |                    d          d||||                    |          f          }t          |                    |j                   |                    |j                             d S )N{Gz{Gz?)r:   r;   r9   r   )r   r5   r@   r   rG   r   r   )rJ   rX   r:   r;   r9   rK   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           
           |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 ]`fd|D             }t          |          }t          t!          |                              |                     |j        |k    sJ a|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 t9          |j        |j                   t          |j        
                      j         |j        g|R                       t          |j!        
                      j         |j        g|R                       d S )N皙?rc   rY   r,   c           
      >    t          j        | |||||f          S )Nr:   r;   r9   r   maxiter)r   r5   )r7   r8   r:   r;   r9   rX   rl   rJ   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 r0   )f_evalsr5   )r   r   r5   rJ   s     r   r5   z-TestBracketRoot.test_vectorization.<locals>.f   s)    IINII464*6***r   r   # r)        @@      ?      ?rk   )r   r   r   r   rI   rE   rF   c                 V    g | ]%}                     t          |                    &S  r@   getattr.0refattrrK   s     r   
<listcomp>z6TestBracketRoot.test_vectorization.<locals>.<listcomp>   /    GGG3

73#5#566GGGr   rK   r.   r<   )"r=   linspacereshapefloat64	vectorizero   r>   r?   infravelr@   tuplemapr   rw   r   r
   stackra   rI   dtypeboolallrH   int32rE   rF   maxr	   r   r   r   r5   r   )rJ   ra   rK   rX   r   rm   rL   r7   r8   r:   r;   ir9   refsr   attrsref_attrres_attrr{   r5   rl   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 	+ 	+DGGGGG$GGGHsD))HHX"555rxx7I7IJJJ>U*****{ BG++++ 	-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 )Nrs   ru   r4   s    r   <lambda>z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s
    q3w r   c                     | dz
  S Ni  ru   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   
    q4x r   c                     | dz
  S r   ru   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   r   r   c                     | j         z  S r   )nanr4   rK   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s    q26z r   c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       q r   c                 R    g | ]#\  }} t          |                   |          $S ru   intry   r4   jfuncss      r   r|   z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>   1    ===AME#a&&M!$$===r   zipxsjsr   rK   s     @r   r5   z%TestBracketRoot.test_flags.<locals>.f   sR    &&'''')))) [	"E >===R====r   r-   r   )      r   r   r         @)r.   r.   r.   r.   r      r.   r<   r(   )r7   r8   r:   r;   r   rl   )arangeint64r   r@   r   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rH   )rJ   rK   r5   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                    t                    ||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   c                 <                         | |z
  dz            S )Nr(   astype)r4   r   r   rK   s     r   r5   z%TestBracketRoot.test_dtype.<locals>.f   s    99a$h1_e444r   r^   r_   )r:   r;   r   )
rw   r@   r   r   rI   r   r   r   r   r   )	rJ   r   r:   r;   r   rK   r5   r   r   s	       ``   r   
test_dtypezTestBracketRoot.test_dtype   s:    E""|ttD)F)F|ttD)F)Fzz$ez,,	5 	5 	5 	5 	5 	5 **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           	      x   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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            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   re   ...must be numeric and real.c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>       A r   y            ?c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r         @      ?c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r   r:   c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r   r;   c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r9   0All elements of `factor` must be greater than 1.c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rr   	broadcastc                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   )r(   re   r-   )`maxiter` must be a non-negative integer.c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rs   )rl   c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   r   c                     | S r   ru   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   	shrubbery)pytestraises
ValueErrorr   	Exceptionr@   rJ   rK   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 	1 	1++r4000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1]:W555 	9 	9++r148888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:W555 	9 	9++r148888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:W555 	; 	;++r1T::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 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5EEE<FF!$F!G&&G*-G*=III?J  J$'J$K''K+.K+L//L36L3c                    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 ) Nc                 N                         | j        d          sJ | dz  dz
  S )Nzreal floatingc   r.   isdtyper   r   s    r   r5   z-TestBracketRoot.test_special_cases.<locals>.f  s-    ::ag777777Q;r         g      @c                     | dz
  S )Nr,   ru   r   s    r   r5   z-TestBracketRoot.test_special_cases.<locals>.f$  s    r6Mr         rl   r   r<   r   c                     || z  dz
  S r0   ru   r4   cs     r   r5   z-TestBracketRoot.test_special_cases.<locals>.f/  s    Q37Nr   r         ?      @r   r(   c                 (    xj         dz  c_         | S r0   r1   r3   s    r   r5   z-TestBracketRoot.test_special_cases.<locals>.f9  r6   r   i   g      $@r   re           gV瞯<)atolignore)overr   g      $g      r   r.   )r   r@   rI   r   r   rF   rE   rH   r   r   r2   r=   errstate)rJ   rK   r   r   r5   s    `  @r   test_special_casesz"TestBracketRoot.test_special_cases  su   	 	 	 	 	 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   :JJJ:LL"%L"(:N..N25N2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)r4   rX   s     r   r5   z)TestBracketRoot.test_bug_fixes.<locals>.fc  s    6!99q= r   g(\?gffffff?r   r   )r7   r:   r;   r   c                 6    t          j        | |z            |z
  S r   r   )r4   rX   r   s      r   r5   z)TestBracketRoot.test_bug_fixes.<locals>.fj  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   r7   r8   r:   r;   r   c                     | dz   S )Ng      ?ru   r   s    r   r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>|  s
    a$h r         )r7   r:   r;   )r=   r@   r   r   rI   )	rJ   r5   rX   r   r   r7   r8   r:   r;   s	            r   test_bug_fixeszTestBracketRoot.test_bug_fixes\  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parametrizerR   r5   r=   r   r`   r   r   r   r   r   r   r  ru   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2C 2C KJ2Ch/ / /: [VeeU^%<==[Vb$Z00[VaY//[W&GHH5 5 IH 0/ 10 >=5%C %C %CNB B BH! ! ! ! !r   r!   torchzdata-apis/array-api-compat#271c                   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 )Nr.   r<   r1   )r4   abr5   s      r   r5   z$TestBracketMinimum.init_f.<locals>.f  s$    GGqLGGEA:>!r   r   r1   )rJ   r5   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   )rJ   resultrK   s      r   assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket  s    vvY"vy69'<=
 
 	
 	
 	
 vvY&)#	FI(=>y69$VY)>?@
 
 	
 	
 	
 	
 	
r   N)r7   r8   r9   r:   r;   r   c          
      F    d}d t          |||||||f          D             S )Nr7   r8   r:   r;   r9   r   c                     i | ]
\  }}|||S r   ru   )ry   namevals      r   
<dictcomp>z1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>  s+     
 
 
#$ #r   r   )rJ   r7   r8   r9   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   re   r)   )r+   r,   r,   r-   r.   r-   r   r<   r  r(   r   )r=   r>   r?   r@   r   r   rA   rB   r  r  r   rE   rF   r2   r   r   r   r   r   r   r   r  rH   rI   )rJ   r"   r#   r%   rK   rL   r   r7   d1d2r9   xm0r8   r:   rN   lowermiddleupperr5   r;   r   r  s                         r   rR   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 )Nrs   r<   ru   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    C!| r   c                     | S r   ru   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     | S r   ru   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                 8                         j                  S r   )r@   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    rzz"&11 r   c                     | dz  S Nr<   ru   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s
    q!t r   c                 R    g | ]#\  }} t          |                   |          $S ru   r   r   s      r   r|   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>  r   r   r   r   s     @r   r5   z(TestBracketMinimum.test_flags.<locals>.f  sP    ++ [ [1111#^	%E >===R====r   r-   r   )r   r   r   r         @)r   r   r   r   r   )r   r   r   r          @r   g       @r(   )r7   r8   r:   r   rl   )r   r   r@   r   r   r   r   r   r   r   r   r   r   rH   )
rJ   rK   r5   r   r7   r"  r8   r:   r  reference_flagss
    `        r   r   zTestBracketMinimum.test_flags  s   	> 	> 	> 	> 	> 		!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;   r-   c           	         t                    ||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   c                 <                         | |z
  dz            S r-  r   )r4   r2  r   rK   s     r   r5   z)TestBracketMinimum.test_dtypes.<locals>.f  s     99a'kA-u555r   )r^   r   r_   r  )rw   r@   r   r   rI   r   r   r   r   r   r   r   )rJ   r2  r:   r;   r   rK   r5   r7   r"  r8   r  s       ``     r   test_dtypeszTestBracketMinimum.test_dtypes	  s   
 E""|ttD)F)F|ttD)F)F**WE*22	6 	6 	6 	6 	6 	6 +**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                 V   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          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   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   re   )r7   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>)  
    q!t r   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>+  r9  r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>-  r9  r   r8   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>/  r9  r   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>1  r9  r   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>3  r9  r   r   r   c                     | S r   ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>7  s    q r   rr   z/Array shapes are incompatible for broadcasting.c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>;  r9  r   r   r   )r   r   r[   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>?  r9  r   rs   )r8   rl   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>A  r9  r   r   c                     | dz  S r-  ru   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>C  r9  r   ekki)r   r   r   r   r@   r   s      r   r   z(TestBracketMinimum.test_input_validation  sh    -]:W555 	. 	.T21----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 1]:W555 	? 	?^^RZZ-=-=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]:W555 	G 	G^^RZZ^^FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G]:W555 	G 	G^^RZZ^^FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G]:W555 	H 	H^^RZZ^^$GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H]:W555 	H 	H^^RZZ^^$GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H]:W555 	J 	J^^RZZ^^DIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 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 D]: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%'G::G>G> 'III;'J..J25J2+LLL5(M))M-0M-(OO
O)(PP"%P"r7   r   r"  )rZ   皙?g333333?r8   )皙?皙?rY   Nr   ))r\   r   )r  r   )rF  r   )rG  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r7   r8   r   r   r   )r  r  r   r   r@   r   r   r  rH   rI   rE   r2   )	rJ   r7   r"  r8   r   rK   r5   r   r  s	            r   test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limitsE  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))rr         ?r   r   )r         @r   r   )r0  r   r/  r   )g      (@      0@      4@r   )NrL  r   r   )NrM  r   r   )Nr   r/  r   )NrN  rO  r   ))r   r   )gYnr   )g#B;r   )rF  r   )rG  r   )rH  r   c                 ^   |                                  }|                     |||t          t          |j        |                              }t          ||                    |          fi |}	|                     |	|           |	j        dk    sJ |	j        sJ |	j	        |j
        k    sJ d S )N)r7   r8   r:   r   r   )r  r  r   r   r@   r   r  rH   rI   rE   r2   )
rJ   r7   r"  r8   r:   r   rK   r5   r   r  s
             r   test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_left[  s    : KKMMSc&+C
D,A,A&B&B ! D D!!RZZ__????!!&"---}!!!!~{ag%%%%%%r   zxl0,xm0,xr0,xmax))rG  333333?rH  r   )rZ   333333?rF  r   )皙ɿ皙r   r   )3333335333331gffffff,r   )rG  rR  Nr   )rZ   rS  Nr   )rT  rU  Nr   )rV  rW  Nr   ))g?r   )g?r   )gffffff?r   )rr   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r@   r   ry   argrK   s     r   	<genexpr>zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>  5      GG3RZZ2:Z66GGGGGGr   )r7   r8   r;   r   r   r   )r  r   r  r   r@   r   r  rH   rI   rE   r2   )
rJ   r7   r"  r8   r;   r   rK   r5   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))rG  rR  rH  Nr   r   r   )gffffff?333333?rM  rR  NrR  r   )g@      
@g333333@N皙X@re  r   )re         @r-   L:Nrh  r   )NrR  NNr   ra  )Nrb  NrR  Nrc  )Nrd  NNre  rf  )Nrg  Nrh  Nri  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)r8   r:   r;   r   r   r   )r  r  r   r   r@   r   rH   r   r   rE   r2   )rJ   r7   r"  r8   r:   r;   r   rK   r5   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   ra   rb   rd   rf   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 ]`fd|D             }t          |          }t          t          |                              |                     |j        |k    sJ a|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 )Nrh   ri   rc   rY   r   r,   c                 \    t                                          | ||||||df	  	        S )Nr   )r7   r8   r:   r;   r9   rl   r   )r   r  )	r"  r7   r8   r:   r;   r9   r  rl   rJ   s	          r   bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s:    #DKKMM3CSt)-fg*+S3 3 3 3r   rp   r)   rq   rr   rs   c              3   P   K   | ] }                     |j                   V  !dS rZ  r[  r\  s     r   r^  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>#  r_  r   )r7   r8   r:   r;   r9   r   rl   )	r   r   r   r   r   r   rI   rE   rF   c                 V    g | ]%}                     t          |                    &S ru   rv   rx   s     r   r|   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>+  r}   r   r~   r.   r   r(   )"r=   r   r   r   r  r>   r?   r   r   r   r   r@   rw   r   r
   r   ra   rI   r   r   r   rH   r   rE   rF   r   r2   r  r   r   r   r   r   r   )rJ   ra   rK   r  r   rn  r5   rL   r7   r8   r"  r:   r;   r   r9   r   r   r   r   r   r{   rl   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//rzz##%::c??D9I9I$&JJt$4$4RZZ=O=O$('; ; ;
 ONN 	+ 	+DGGGGG$GGGHsD))HHX"555rxx7I7IJJJ>U*****{ BG++++ 	-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                    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 )Nc                 N                         | j        d          sJ | dz  dz
  S )Nnumericb   r.   r   r   s    r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fA  s-    ::agy111117Q;r   r   r   r-   r<  c                     | dz  dz
  S )Nr<   r,   ru   r   s    r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fI  s    a4"9r   r   r   r0  r   )r7   r8   rl   c                     || dz  z  dz
  S )Nr<   r.   ru   r   s     r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fS  s    QT6A:r   r   r   r(   rT  r   r   rJ  )r   r@   r   rI   r   r   r   r   r   r   r  r2   r   r   )rJ   rK   r5   r  r7   r"  r8   r   s    `      r   r   z%TestBracketMinimum.test_special_cases<  s`   
	 	 	 	 	 "!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                    }t          |j                   d S )NgJg7e4?g[2\WZ?c                 p                                                                  }}||z
  | z  dz   S Nr   rB   r4   log_alog_br;   r:   rK   s      r   r5   z0TestBracketMinimum.test_gh_20562_left.<locals>.fm  s7    66$<<5EemQ&+++r   g_\ݶ?r:   r;   )r@   r   r   r   rJ   rK   r5   r  r;   r:   s    `  @@r   test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_lefth  s     ZZ
++RZZ
-C-C
d	, 	, 	, 	, 	, 	, 	, "!RZZ0B%C%C$'+- - -	4(((((r   c                                          d                               d          cfd}t          |                     d                    }t          |j                   d S )Ng[2\WZgJg7e4̿c                 r                                                                    }}||z
  | z  dz  S ry  rz  r{  s      r   r5   z1TestBracketMinimum.test_gh_20562_right.<locals>.fz  s8    664%=="&&$--5EU]A%**r   g_\ݶr~  )r@   r   r   r   r  s    `  @@r   test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_rightu  s     ZZ,,bjj.E.E
d	+ 	+ 	+ 	+ 	+ 	+ 	+ "!RZZ0C%D%D'+$8 8 8	4(((((r   )r  r  r	  r  r  r  r   r
  r  rR   r   r5  skip_xp_backendsr   rK  rQ  r`  rk  r   r   r   r  r  ru   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J [US$K00[U$566[U$9:: [	
 & & 	 ;: 76 10& [	
 " [ 

 
& &
 
# 8& [	
   [ 
 & & ! 2& [$X	
[ [x& &y[ [x& [Wuuww	&JKK02 02 LK02d*2 *2 *2X) ) )) ) ) ) )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	   scipy._lib._array_apir
   r   r   array_api_strict_skip_reasonboolean_index_skip_reasonr
  r  r!   r  ru   r   r   <module>r     sA        , , , , , , D D D D D D D D 6 6 6 6 6 6 6 6 6      9 9 9 9 9 9 9 9 9 9 * * * * * *      W P 09UVVk2KLLl3LMML L L L L L L NM ML WVL^
 g.NOO09UVVk2KLLl3LMM|) |) |) |) |) |) |) NM ML WV PO|) |) |)r   