
    Џkh                     j   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 j0                  j3                  de      e j0                  j3                  de      e j0                  j3                  de       G d d                           Ze j0                  j3                  dd      e j0                  j3                  de      e j0                  j3                  de      e j0                  j3                  de       G d d                                  Zy)    N)_ELIMITS)bracket_rootbracket_minimum)stats)xp_assert_closexp_assert_equalxp_assert_less)xp_ravelc                      t        | i |}|j                  \  |_        |_        |j                  \  |_        |_        |`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsress      ]/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_bracket.py_bracket_rootr      sB    

'
'C[[NCFCF]]NCFCFJ    c                      t        | i |}|j                  \  |_        |_        |_        |j
                  \  |_        |_        |_        |`|`|S r   )	r   r   r   xmr   r   r   fmr   r   s      r   _bracket_minimumr   "   sL    
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                  j                  dd      ej                  j                  dd      ej                  j                  dd      ej                  j                  dd      d                             Zd Zej                  j                  d	d
 ej                  ddd      g      ej                  j                  dddg      ej                  j                  dddg      ej                  j                  dddg      d                             Z
ej                  j                  d e       dddg      d        Zd Zej                  j                  ddddgf      ej                  j                  dddg      ej                  j                  dddg      ej                  j                  d d!      d"                             Zd# Zd$ Zd% Zy)&TestBracketRootseed)i&$l   v ih0use_xminFT
other_sidefix_one_sidec                    t         j                  j                  |      }|j                  |j                  d      g dz        \  }}}	d|	z   }	||z   }
fd|r|j                  |j                                }|j	                  |j                  ||z
   |z        |j                  |	      z        }|||z
  |	| z  z  z   |||z
  |	|dz
   z  z  z   }}t        ||
|	|      }n\|j	                  |j                  |
|z        |j                  |	      z        }|
||	|z  z  z
  |
||	|dz
  z  z  z
  }}t        ||
|	      }|r2|d    |d	    c|d	<   |d<   | | }}d
|v r|j                  d
       |d<   |r|r|
 |d
<   n|
|d<   d_        t        fi |}|sF|j                  d|j                  dz   z  cxk(  r"dj                  dz
  z  cxk(  rd|dz   z  k(  sKJ  J |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J  J |j                  |j                  |j                  g      }t        ||j                  ||g             |j                  |j                  |j                   g      }t        | |             |j                  |j                  kD  sJ |j#                  |      }|d   |d    k(  sJ |j$                  dk(  sJ |j&                  sJ y )N   size)     j@
         c                 2    xj                   dz  c_         | S Nr.   countxfs    r   r5   z-TestBracketRoot.test_nfev_expected.<locals>.fE       GGqLG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    ii##D)CJJAJ$6$EFQVAg	 ::szz|m,Dt}t34rvvf~EFA3:vrz1143:vQRUVQVxGW:W3WqAcs6EFs1uv67A619$cAfqsmO&;qAcs6:F,25M>F5M>(F5M6%=2rqA"(**V"4!4v"%v!$vA(( 88q#''!)}J17719JAEJJJJJ88	1}HAH!A#qHHHHH **cffcff-.QF!34JJ/0		1W:. vv	"QxE!H9$$$zzQ{{{r   c                 b    t         j                  j                         j                  |      |z
  S r   )r   	_stats_py_SimpleNormalcdf)rJ   qps      r   r5   zTestBracketRoot.f   s%    ,,.221599r   rX   333333?皙?gffffff?r,   r:   Nr;   r-   r9   333333?r<   c                     t        | j                  |j                  d      d||||j                  |      f      }t        |j	                  |j
                         |j	                  |j                               y )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   s[     DFFBJJu$5t$T#)A0@B("''#&&/:r   shape   r(      r(   r<   r<   c           
      d    |r&t        j                  ddd      j                  |      nt        j                  d      }|f}dt         j                   fd       } fdd_        t         j                  j                  d	      }|j                  |
       }|j                  |
      }d|z  d|z  }
}	|r=|j                  |
      dkD  }t         j                   t         j                  c|	|<   |
|<   |j                  |
      dz   } ||||	|
||      j                         }|j                  |      |j                  |      |j                  |	      |j                  |
      |j                  |      f\  }}}	}
}t        t        |j                  |            }t        |||	|
||      }g d}|D ]m  }|D cg c]  }|j                  t        ||             }}t        ||      }t        t!        ||      |j#                  |             |j$                  |k(  rmJ  |j&                  j(                  |j*                  k(  sJ |r |j-                  |j&                  dd       sJ |j.                  j(                  |j0                  k(  sJ |j2                  j(                  |j0                  k(  sJ |j4                  j(                  |j0                  k(  sJ |j7                  |j4                        j
                  dz
  k(  sJ t9        |j:                  |j<                         t        |j>                  |j                    j@                  |j:                  g|              t        |jB                  |j                    j@                  |j<                  g|              y c c}w )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   s(     c4(.aT)02 2r   c                  R    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NI4664*6**r   r   # r)        @@      ?      ?rk   )r   r   r   r   rI   rE   rF   rK   r.   r<   )"r=   linspacereshapefloat64	vectorizero   r>   r?   infravelr@   tuplemapr   getattrr   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attrrefref_attrres_attrr5   rl   s   `                   @@r   test_vectorizationz"TestBracketRoot.test_vectorization   s    <ABKKtR(007bjjQTot		2 
	2
	+ 	ii##G,zzuz%%jjej$Wc#gd

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

3C(*

4(8"**T:J(*

6(:(<$S$f ST*+AsCdf!%w8 C 	+DBFG3

73#56GHGsD)HHX"5rxx7IJ>>U***		+ {{  BGG+++66#++a+,,,zz288+++xx~~)))ww}}(((vvcgg!))a-///svvsvv&

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

6466#&&+@4+@ AB Hs    "N-c                 j   fd}j                  dj                        f}t        |j                  g d      j                  g d      j                  j                   dj                   j                   dg      j                  j                  dj                  j                  d	g      |d
      }j                  t
        j                  t        t
        j                  t
        j                  t
        j                  gj                        }t        |j                  |       y )Nc           	          d d d fdd g}t        | |      D cg c]  \  }} |t        |         |       c}}S c c}}w )Nc                     | dz
  S )Nrs    r4   s    r   <lambda>z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s
    q3w r   c                     | dz
  S Ni  r   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   
    q4x r   c                     | dz
  S r   r   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    q266z r   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       q r   zipintxsjsfuncsr4   jrK   s        r   r5   z%TestBracketRoot.test_flags.<locals>.f   sH    &'') 	"E 25R=AME#a&M!$===   Ar-   r   )      r   r   r         @)r.   r.   r.   r.   ru      r.   r<   r(   )r7   r8   r:   r;   r   rl   )arangeint64r   r@   rz   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rH   )rJ   rK   r5   r   r   	ref_flagss    `    r   
test_flagszTestBracketRoot.test_flags   s    	> 		!288	,.A "

+C D "

+; <!#bffWb266'BFF7A,N!O!#RVVQ,J!K!%q2 JJ ( # # #	 0
 &(XX  /	 	

I.r   root灕Cl?V-?r   float16float32rx   c                    t              ||nj                  |      }||nj                  |      }j                  |      }fd}j                  ddg      }t        |g||||fd}j                  |j                        sJ |j
                  j                  |j                  j                  cxk(  rk(  sJ  J |j                  j                  |j                  j                  cxk(  rk(  sJ  J y )Nr   c                 4    j                  | |z
  dz        S )Nr(   astype)r4   r   r   rK   s     r   r5   z%TestBracketRoot.test_dtype.<locals>.f   s    99a$h1_e44r   r^   r_   )r:   r;   r   )
r~   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"|tD)F|tD)Fzz$ez,	5 **eT]%*8ALLdTGLvvckk"""vv||svv||4u44444vv||svv||4u44444r   c           	         d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d dd       d d d        t        j                  t        |      5  t        d dd	       d d d        t        j                  t        |      5  t        d
 ddd	       d d d        t        j                  t        |      5  t        d ddd	       d d d        t        j                  t        |      5  t        d ddd	       d d d        d}t        j                  t        |      5  t        d ddd       d d d        d}t        j                  t        |      5  t        d |j                  ddg      |j                  g d             d d d        d}t        j                  t        |      5  t        d ddd       d d d        t        j                  t        |      5  t        d ddd       d d d        t        j                  t        |      5  t        d ddd       d d d        y # 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   vxY w# 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w) N`func` must be callable.matchr   re   ...must be numeric and real.c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>       A r   y            ?c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r         @      ?c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r   r:   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r   r;   c                     | S r   r   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   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rr   	broadcastc                     | S r   r   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   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rs   )rl   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   ru   c                     | S r   r   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 	'$A&	' 1]]:W5 	1+ua0	1]]:W5 	1+r40	1]]:W5 	9+r148	9]]:W5 	9+r148	9]]:W5 	;+r1T:	; E]]:W5 	:+r1S9	: ]]9G4 	T+rzz2r(';RZZ	=RS	T >]]:W5 	;+r1c:	;]]:W5 	:+r1b9	:]]:W5 	C+r1kB	C 	CA	' 	'	1 	1	1 	1	9 	9	9 	9	; 	;	: 	:
	T 	T	; 	;	: 	:	C 	Cs   I!I.I;5J)JJ"J/	1J<K	KK!!I+.I8;JJJ"J,/J9<K	KK!K*c                    fdt        j                  d      j                  d            }|j                  sJ d j                  d      j                  d      f}t        g|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        j                  d      j                  d      j                  d            }|j                  sJ t        |j                   |j                  d             fdd_
        t        j                  d      j                  d             j                  dk(  sJ d_
        t        j                  d      j                  d      d      }|j                  dk(  sJ t        |j                  j                  d      d       t        |j                  j                  d      d       t        j                  d      5  t        j                  d      j                  d      d      }d d d        t        |j                  j                  d      d       t        j                  d      5  t        j                  d      j                  d      d      }d d d        t        |j                  j                  d      d       t        j                  d      5  t        j                  d      j                  d      d      }d d d        |j                  rJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   0xY w) Nc                 P    j                  | 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)    ::agg7777Q;r         g      @c                     | dz
  S )Nr,   r   r   s    r   r5   z-TestBracketRoot.test_special_cases.<locals>.f$  s    r6Mr         rl   r   r<   r   c                     || z  dz
  S r0   r   r4   cs     r   r5   z-TestBracketRoot.test_special_cases.<locals>.f/  s    Q37Nr   r         ?      @r   r(   c                 2    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  s   	 Arzz#

2?{{{	 ::c?BJJrN3A333vv(svv((vww!||xx1}}zzR	 Arzz#

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

2U;

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

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

2U; [[h' 	(2::b>2::c?%&(C	( ;;;	( 	(
	( 	(	( 	(s$   -.M .M$.M0M!$M-0M9c           	      2   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 y )Nc                 2    t        j                  |       |z
  S r   r=   exp)r4   rX   s     r   r5   z)TestBracketRoot.test_bug_fixes.<locals>.fc  s    66!9q= r   g(\?gffffff?ru   r   )r7   r:   r;   r   c                 8    t        j                  | |z        |z
  S r   r   )r4   rX   r   s      r   r5   z)TestBracketRoot.test_bug_fixes.<locals>.fj  s    66!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      ?r   r   s    r   r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>|  s
    a$h r         )r7   r:   r;   )r=   r@   r   rz   rI   )	rJ   r5   rX   r   r   r7   r8   r:   r;   s	            r   test_bug_fixeszTestBracketRoot.test_bug_fixes\  s    	! JJd|$A2RVVG!1%H	#1.B0bffWrvvgrBFF7RVVGBFFBBFFBB7A3CdQPQFS .DwQO{{{r   )__name__
__module____qualname__r   markparametrizerR   r5   r=   rv   r`   r|   r   r   r   r   r   r   r   r   r   r!   r!   .   s    [[V%GH[[Z7[[\=9[[^];G < : 8 IGR: [[S3D$(C"DE[[Vb$Z0[[VaY/[[XQx0; 1 0 1 F; [[Wuwvy&IJ2C K2Ch/: [[VeeU^%<=[[Vb$Z0[[VaY/[[W&GH5 I 0 1 >5%CNBH!r   r!   torchzdata-apis/array-api-compat#271c                      e Zd Zd Zd ZddddddddZej                  j                  dd      ej                  j                  dd	      ej                  j                  d
d	      d                      Z	d Z
ej                  j                  ddddgf      ej                  j                  dd      ej                  j                  dddg      ej                  j                  dddg      d                             Zej                  j                  dd      d        Zej                  j                  dddg      ej                  j                  dd      ej                  j                  dd       ej                  j                  d!d"      d#                             Zej                  j                  d$d%      ej                  j                  d!d&      d'               Zej                  j                  d(d)      ej                  j                  d!d*      d+               Zej                  j                  d,d-      d.        Zej                  j                  d/ e       d0d1d2g      d3        Zd4 Zd5 Zd6 Zy)7TestBracketMinimumc                      fdd_         S )Nc                 D    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"    GGqLGEA:>!r   r   r1   )rJ   r5   s    @r   init_fzTestBracketMinimum.init_f  s    	" r   c                 |   |j                  |j                  |j                  k  |j                  |j                  k  z        sJ |j                  |j                  |j
                  k\  |j                  |j
                  kD  z  |j                  |j
                  kD  |j                  |j
                  kD  z  z        sJ y r   )r   r   r   r   r   r   r   )rJ   resultrK   s      r   assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket  s    vvYY"vyy699'<=
 	
 
 vvYY&))#		FII(=>yy699$VYY)>?@
 	
 
r   N)r7   r8   r9   r:   r;   r   c          	      b    d}t        |||||||f      D 	ci c]
  \  }}	|	||	 c}	}S c c}	}w )Nr7   r8   r:   r;   r9   r   )r   )
rJ   r7   r8   r9   r:   r;   r   namesnamevals
             r   
get_kwargszTestBracketMinimum.get_kwargs  sL     A'*53T4QU2V'W
#$ #I
 	
 
s   +r"   )l	   ^0#,N0Lb*& l	   }SES].HMa l	   FDuBP_KU r#   r$   r%   c                    t         j                  j                  |      }|j                  d      |j                  d      f}|j                  |j                  d      g dz        \  }}}	}
||z   }||	z   }|
dz  }
|r|j                  |j                          dz  |j                        }t        |j                  |j                  ||z
   |z        |j                  |
      z              }|||z
  |
| z  z  z   }|||z
  |
|dz
   z  z  z   }|dkD  r|||z
  |
|dz
   z  z  z   n|}|dz  |dz  kD  r|dz  }|||z
  |
| z  z  z   ||}}}nd }t        |j                  |j                  ||z        |j                  |
      z              }|||
|z  z  z
  }|dkD  r|||
|dz
  z  z  z
  n|}|dkD  r|||
|dz
  z  z  z
  n|}|dz  |dz  kD  r|dz  }|||
|z  z  z
  ||}}}| j                         }d }|r| | | }}}d || nd }}| | | }}}| j                  |||||
|	      }t        ||j                  |      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|        t        |j&                   ||g|        t        |j(                   ||g|        | j+                  ||       |j,                  dk(  sJ |j.                  sJ y )Nr   re   r)   )r+   r,   r,   r-   r.   r-   r   r<   r  r(   r   )r=   r>   r?   r@   rx   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    ii##D)

2

2/ !jj);>N)NORVBhBh!::szz|ma/rzz:BDBGGBFFS4Z=4#78266&>IJKAC$J
22ES4Z1Q377F:;a%DC$J!A#66SE qy5!8#QC$J
22E6  %v DBGGBFF38,rvvf~=>?A"VQY,&E/01uS2fqsm++#F./!eC"Vac]**E qy5!8#Q"VQY,&v  %v KKM D3$cC(8ud$D$)6F7UF56E4d6 ! 
 "!RZZ_?? {{fjj1n,,,{{agg%%%zzQ 			5)		6*		5)		1U?T?3		1V#3d#34		1U?T?3!!&"-}}!!!~~~r   c           	      8   fd}j                  dj                        f}j                  g d      }j                  g d      }j                  g d      }j                  j                   dj                   j                   dg      }t	        ||||||d	
      }j                  t
        j                  t        t
        j                  t
        j                  t
        j                  gj                        }	t        |j                  |	       y )Nc           	          d d d fdd g}t        | |      D cg c]  \  }} |t        |         |       c}}S c c}}w )Nc                     | dz
  dz  S )Nrs   r<   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    C!| r   c                     | S r   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                     | S r   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r   c                 :    j                  j                        S r   )r@   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    rzz"&&1 r   c                     | dz  S Nr<   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s
    q!t r   r   r   s        r   r5   z(TestBracketMinimum.test_flags.<locals>.f  sH    +  1#	%E 25R=AME#a&M!$===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@   rz   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    	> 		!288	,.jj67jj23jj23zzBFF7D266'BFF7C@A!!Scs'+Q8 **coox&)mmS^^&)nn&6=?XX % G 	7r   minimumr   r   r   r   r:   r[   r;   r-   c           	         t              ||nj                  |      }||nj                  |      }j                  |      }fd}g d\  }}}	t        |j                  |      j                  |      j                  |	      |||f      }
j                  |
j                        sJ |
j
                  j                  |
j                  j                  cxk(  r |
j                  j                  cxk(  rk(  sJ  J |
j                  j                  |
j                  j                  cxk(  r |
j                  j                  cxk(  rk(  sJ  J y )Nr   c                 4    j                  | |z
  dz        S r"  r   )r4   r&  r   rK   s     r   r5   z)TestBracketMinimum.test_dtypes.<locals>.f  s    99a'kA-u55r   )r^   r   r_   r   )r~   r@   r   r   rI   r   r   r   r   r   r   r   )rJ   r&  r:   r;   r   rK   r5   r7   r  r8   r  s       ``     r   test_dtypeszTestBracketMinimum.test_dtypes	  s,   
 E"|tD)F|tD)F**WE*2	6 +S#!rzz#Uz+Cu1M

3e
,4d'
 vvfnn%%%yy&))//MVYY__MMMMMMyy&))//MVYY__MMMMMMr   Tzstr/object arrays)np_onlyr   c                 f   d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d |j	                  d             d d d        t        j                  t        |      5  t        d	 |j	                  d      d       d d d        t        j                  t        |      5  t        d
 |j	                  d      d       d d d        t        j                  t        |      5  t        d |j	                  d      d       d d d        t        j                  t        |      5  t        d |j	                  d      d       d d d        t        j                  t        |      5  t        d |j	                  d      d       d d d        d}t        j                  t        |      5  t        d |j	                  d      d       d d d        d}t        j                  t        |      5  t        d |j	                  ddg      g d       d d d        d}t        j                  t        |      5  t        d |j	                  d      dd       d d d        t        j                  t        |      5  t        d |j	                  d      dd       d d d        t        j                  t        |      5  t        d  |j	                  d      dd!       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   OxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)"Nr   r   r   re   )r7   r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>)  
    q!t r   r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>+  r-  r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>-  r-  r   r8   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>/  r-  r   r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>1  r-  r   r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>3  r-  r   r   r   c                     | S r   r   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"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>;  r-  r   r   r   )r   r   r[   r   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>?  r-  r   rs   )r8   rl   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>A  r-  r   ru   c                     | dz  S r"  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>C  r-  r   ekki)r   r   r   r   r@   r   s      r   r   z(TestBracketMinimum.test_input_validation  s    -]]:W5 	.T21-	. 1]]:W5 	?^RZZ-=>	?]]:W5 	G^RZZ^F	G]]:W5 	G^RZZ^F	G]]:W5 	H^RZZ^$G	H]]:W5 	H^RZZ^$G	H]]:W5 	J^RZZ^DI	J E]]:W5 	F["**R.E	F D]]:W5 	U^RZZR-A|T	U >]]:W5 	Q^RZZ^CP	Q]]:W5 	P^RZZ^BO	P]]:W5 	T^RZZ^FS	T 	T=	. 	.	? 	?	G 	G	G 	G	H 	H	H 	H	J 	J	F 	F	U 	U	Q 	Q	P 	P	T 	Ts   LL&L3M MMM'M4"#N* N- N0 N'L#&L03L= M
MM$'M14M>NNN$'N0r7   r   r  )rZ   皙?g333333?r8   )皙?皙?rY   Nr   ))r\   r   )r   r   )r:  r   )r;  r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   c           
      n   | j                         }| j                  ||t        t        |j                  |                  }t        ||j	                  ||j                        fi |}| j                  ||       |j                  dk(  sJ |j                  sJ |j                  |j                  k(  sJ y )Nr7   r8   r   r   r   )r
  r  r|   r}   r@   r   rx   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     KKMScc"**d>S8TU!!RZZ2::Z%FQ&Q!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmin))rr         ?r   r   )r         @r   r   )r$  r   r#  r   )g      (@      0@      4@r   )Nr@  r   r   )NrA  r   r   )Nr   r#  r   )NrB  rC  r   ))r   r   )gYnr   )g#B;r   )r:  r   )r;  r   )r<  r   c                 X   | j                         }| j                  |||t        t        |j                  |                  }t        ||j	                  |      fi |}	| j                  |	|       |	j                  dk(  sJ |	j                  sJ |	j                  |j                  k(  sJ y )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    : KKMSc&+C

D,A&B ! D!!RZZ_??!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmax))r;  333333?r<  r   )rZ   333333?r:  r   )皙ɿ皙r   r   )3333335333331gffffff,r   )r;  rF  Nr   )rZ   rG  Nr   )rH  rI  Nr   )rJ  rK  Nr   ))g?r   )g?r   )gffffff?r   )rr   r   c                 `   | j                         }t        fd|D              }| j                  ||||      }t        |j	                  |j
                        fi |}	| j                  |	       |	j                  dk(  sJ |	j                  sJ |	j                  |j                  k(  sJ y )Nc              3   X   K   | ]!  }j                  |j                          # ywr   Nr@   rx   .0argrK   s     r   	<genexpr>zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>  "     G3RZZ2::Z6G   '*)r7   r8   r;   r   r   r   )r
  r|   r  r   r@   rx   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 KKMG$GGSc4H!!RZZ2::Z%FQ&Q!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmin,xmax,args))r;  rF  r<  Nr   r   r   )gffffff?333333?rA  rF  NrF  r   )g@      
@g333333@N皙X@r[  r   )re         @r-   L:Nr^  r   )NrF  NNr   rW  )NrX  NrF  NrY  )NrZ  NNr[  r\  )Nr]  Nr^  Nr_  c                 V   | j                         }| j                  |||t        t        |j                  |                  }	t        ||j	                  |      fi |	}
|
j                  dk(  sJ |d   |
j                  |
j                  fv sJ |
j                  |j                  k(  sJ y )N)r8   r:   r;   r   ru   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 KKMSt$&+C

D,A&B ! D!!RZZ_??}}"""Aw699fii0000{{agg%%%r   ra   rb   rd   rf   c                 <    |r&t        j                  ddd      j                  |      nd}|df}dt         j                   fd       } j	                         }t         j
                  j                  d      }|j                  |	       }|j                  |	      }	||j                  |	      |	|z
  z  z   }
d
|z  d
|	z  }}|r=|j                  |	      dkD  }t         j                   t         j                  c||<   ||<   |j                  |	      dz   } ||
||	||||      j                         }t        fd|D              }t        |j                  |
      j                  |      j                  |	      j                  |      j                  |      j                  |      |	      }g d}|D ]m  }|D cg c]  }j                  t        ||             }}t        ||      }t        t        |      j                  |             |j                   |k(  rmJ  |j"                  j$                  j&                  k(  sJ |r j)                  |j"                  dd       sJ |j*                  j$                  j,                  k(  sJ |j.                  j$                  j,                  k(  sJ |j0                  j$                  j,                  k(  sJ j3                  |j0                        |j4                  dz
  k(  sJ  j7                  |       t        |j8                   ||j:                  g|        t        |j<                   ||j>                  g|        t        |j@                   ||jB                  g|        y c c}w )Nrh   ri   rc   rY   r   r,   c                 L    t        j                         | ||||||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.    #DKKM3CSt)-fg*+S3 3r   rp   r)   rq   rr   rs   c              3   X   K   | ]!  }j                  |j                          # ywrN  rO  rP  s     r   rS  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>#  rT  rU  )r7   r8   r:   r;   r9   r   rl   )	r   r   r   r   r   r   rI   rE   rF   rt   r.   ru   r(   )"r=   rv   rw   ry   r
  r>   r?   rz   r{   r|   r   r@   r~   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   rd  r5   rL   r7   r8   r  r:   r;   r   r9   r   r   r   r   r   r   r   rl   s   ` `                   @r   r   z%TestBracketMinimum.test_vectorization	  s    <ABKKtR(007c2w		3 
	3
 KKMii##G,zzuz%%jjej$CJJEJ*cCi88Wc#gd


&,A "wDGT!W'#-%c3T4KQQSG$GGq"**S/rzz##%::c?D9I$&JJt$4RZZ=O$(';
 O 	+DBFG3

73#56GHGsD)HHX"5rxx7IJ>>U***		+ {{  BGG+++66#++a+,,,zz288+++xx~~)))ww}}(((vvcgg!''A+---!!#r*#&& 04 01#&& 04 01#&& 04 01 Hs   "Nc                    fd}t        |j                  dj                        d      }|j                  sJ d }j                  d      j                  d      j                  d	      }}}t        ||||d
      }t	        |j
                  |       t	        |j                  |       t	        |j                  |       d }t        |j                  d      j                  d            }|j                  sJ t        |j                   ||j
                  d             | j                         }j                  d      j                  d      j                  d      }}}j                  d      j                  d      f}t        |||||      }|j                  dk(  sJ t	        |j
                  |       t	        |j                  |       t	        |j                  |       t	        |j                   ||g|        t	        |j                   ||g|        t	        |j                   ||g|        y )Nc                 P    j                  | j                  d      sJ | dz  dz
  S )Nnumericb   r.   r   r   s    r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fA  s)    ::aggy1117Q;r   r   r   r-   r0  c                     | dz  dz
  S )Nr<   r,   r   r   s    r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fI  s    a4"9r   r   r   r$  r   )r7   r8   rl   c                     || dz  z  dz
  S )Nr<   r.   r   r   s     r   r5   z0TestBracketMinimum.test_special_cases.<locals>.fS  s    QT6A:r   r   r   r(   rH  r   r   r>  )r   r@   rx   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%FAN~~~	 

3C"**R.#S!!ScsAF		3'		3'		3'	 "!RZZ_2::b>J~~~		1VYY?3 KKM

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

2

2/!!ScsFww!||		3'		C(		3'		1S=4=1		1S=4=1		1S=4=1r   c                     j                  d      j                  d      cfd}t        |j                  d            }t        |j                         y )NgJg7e4?g[2\WZ?c                 `    j                        j                        }}||z
  | z  dz   S Nru   rB   r4   log_alog_br;   r:   rK   s      r   r5   z0TestBracketMinimum.test_gh_20562_left.<locals>.fm  s3    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  sT     ZZ
+RZZ
-C
d	, "!RZZ0B%C$'+-		4(r   c                     j                  d      j                  d      cfd}t        |j                  d            }t        |j                         y )Ng[2\WZgJg7e4̿c                 b    j                         j                         }}||z
  | z  dz  S rn  ro  rp  s      r   r5   z1TestBracketMinimum.test_gh_20562_right.<locals>.fz  s4    664%="&&$-5EU]A%**r   g_\ݶrs  )r@   r   r   r   rt  s    `  @@r   test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_rightu  sT     ZZ,bjj.E
d	+ "!RZZ0C%D'+$8		4(r   )r   r   r   r
  r  r  r   r  r  rR   r   r)  skip_xp_backendsr   r?  rE  rV  ra  r|   r   r   ru  rx  r   r   r   r  r    s   

 44dQU
 [[	
 [[Z7[[\=9E : 8EN84 [[Y(?@[[W&GH[[Vb$Z0[[VaY/N 0 1 I AN$ [[!!$7J!K#T L#TJ [[US$K0[[U$56[[U$9: [[	
&	 ; 7 1& [[	
" [[ 

&
#8& [[	
  [[ 
&!2& [[$X	
[x&y[x& [[Wuw	&JK02 L02d*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  ry  r!   r  r   r   r   <module>r     s;     , D 6 6 9 9 *  W P 09UVk2KLl3LML L N M WL^
 g.NO09UVk2KLl3LM|) |) N M W P|)r   