
    >qj7                         d dl Z d dlZd dlmZ d dlmZmZ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mZ d Zd Z ee       G d	 d
             Z ee       G d d             Zy)    N)_ELIMITS)bracket_rootbracket_minimum	find_rootfind_minimum)stats)xp_assert_closexp_assert_equalxp_assert_less)xp_ravelmake_xp_test_casec                      t        | i |}|j                  \  |_        |_        |j                  \  |_        |_        |`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsress      `/opt/rentech/trading_bot/.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   c            	          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ej                  j                  d d&d'g      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   r6   z-TestBracketRoot.test_nfev_expected.<locals>.fA       GGqLGHr   )xl0xr0factorxmin)r8   r9   r:   r9   r8   r;   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr3   r   nfevnitr   r   r	   r   r   signstatussuccess)selfr#   r$   r&   r'   xprngr8   dr:   r9   r;   nlur   r   r   r   signsr6   s                       @r   test_nfev_expectedz"TestBracketRoot.test_nfev_expected.   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)rK   qps      r   r6   zTestBracketRoot.f{   s%    ,,.221599r   rY   333333?皙?gffffff?r-   r;   Nr<   r.   r:   333333?r=   c                     t        | j                  |j                  d      d||||j                  |      f      }t        |j	                  |j
                         |j	                  |j                               y )N{Gz{Gz?)r;   r<   r:   r   )r   r6   rA   r
   rH   r   r   )rK   rY   r;   r<   r:   rL   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皙?rd   rZ   r-   c           
      @    t        j                  | |||||f      S )Nr;   r<   r:   r   maxiter)r   r6   )r8   r9   r;   r<   r:   rY   rm   rK   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 r1   )f_evalsr6   )r   r   r6   rK   s     r   r6   z-TestBracketRoot.test_vectorization.<locals>.f   s&    IINI4664*6**r   r   # r*        @@      ?      ?rl   )r   r   r   r   rJ   rF   rG   rL   r/   r=   )"r>   linspacereshapefloat64	vectorizerp   r?   r@   infravelrA   tuplemapr   getattrr	   r   stackrb   rJ   dtypeboolallrI   int32rF   rG   maxr   r   r   r   r6   r   )rK   rb   rL   rY   r   rn   rM   r8   r9   r;   r<   ir:   refsr   attrsattrrefref_attrres_attrr6   rm   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 )Nrt    r5   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r5   rL   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funcsr5   jrL   s        r   r6   z%TestBracketRoot.test_flags.<locals>.f   sH    &'') 	"E 25R=AME#a&M!$===   Ar.   r   )      r   r   r         @)r/   r/   r/   r/   rv      r/   r=   r)   )r8   r9   r;   r<   r   rm   )arangeint64r   rA   r{   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r
   rI   )rK   rL   r6   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float32ry   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)r5   r   r   rL   s     r   r6   z%TestBracketRoot.test_dtype.<locals>.f   s    99a$h1_e44r   r_   r`   )r;   r<   r   )
r   rA   r   r   rJ   r   r   r   r   r   )	rK   r   r;   r<   r   rL   r6   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   rf   ...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   r:   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   rs   	broadcastc                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   )r)   rf   r.   )`maxiter` must be a non-negative integer.c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rt   )rm   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rv   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   	shrubbery)pytestraises
ValueErrorr   	ExceptionrA   rK   rL   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   r6   z-TestBracketRoot.test_special_cases.<locals>.f  s)    ::agg7777Q;r         g      @c                     | dz
  S )Nr-   r   r   s    r   r6   z-TestBracketRoot.test_special_cases.<locals>.f   s    r6Mr         rm   r   r=   r   c                     || z  dz
  S r1   r   r5   cs     r   r6   z-TestBracketRoot.test_special_cases.<locals>.f+  s    Q37Nr   r         ?      @r   r)   c                 2    xj                   dz  c_         | S r1   r2   r4   s    r   r6   z-TestBracketRoot.test_special_cases.<locals>.f5  r7   r   i   g      $@r   rf           gV瞯<)atolignore)overr   g      $g      r   r/   )r   rA   rJ   r   r   rG   rF   rI   r	   r   r3   r>   errstate)rK   rL   r   r   r6   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)r5   rY   s     r   r6   z)TestBracketRoot.test_bug_fixes.<locals>.f_  s    66!9q= r   g(\?gffffff?rv   r   )r8   r;   r<   r   c                 8    t        j                  | |z        |z
  S r   r   )r5   rY   r   s      r   r6   z)TestBracketRoot.test_bug_fixes.<locals>.ff  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   r8   r9   r;   r<   r   c                     | dz   S )Ng      ?r   r   s    r   r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>x  s
    a$h r         )r8   r;   r<   )r>   rA   r   r{   rJ   )	rK   r6   rY   r   r   r8   r9   r;   r<   s	            r   test_bug_fixeszTestBracketRoot.test_bug_fixesX  s    	! JJd|$A2RVVG!1%H	#1.B0bffWrvvgrBFF7RVVGBFFBBFFBB7A3CdQPQFS .DwQO{{{r   r   ry   c                 t   d }|j                  d|j                        }|j                  g d|j                        }|j                  g dt        ||            d d |j                  f   }t        |||fd|i      }t        ||j                  |fd|i      }||z   }	t        |j                  |	       y )Nc                    | ||z   z
  S r   r   r5   r   rY   s      r   r6   z&TestBracketRoot.test_kwargs.<locals>.f~  s    A;r   r   r   r/   r=   r)   r=   r)   rf   rY   r   r   )
zerosr   rA   r   newaxisr   r   r   r	   r5   
rK   rL   r   r6   ar   rY   r   r   r   s
             r   test_kwargszTestBracketRoot.test_kwargs{  s    	 HHRrzzH*JJy

J3JJyE(:J;ArzzMJq!1$Qx@7??!sAhG!es#r   )__name__
__module____qualname__r   markparametrizerS   r6   r>   rw   ra   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!F [[Wy)&<=$ >$r   r"   c                   B   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ej                  j                  dd7d8g      d9        Zy):TestBracketMinimumc                      fdd_         S )Nc                 D    xj                   dz  c_         | |z
  dz  |z   S )Nr/   r=   r2   )r5   r  br6   s      r   r6   z$TestBracketMinimum.init_f.<locals>.f  s"    GGqLGEA:>!r   r   r2   )rK   r6   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   )rK   resultrL   s      r   assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket  s    vvYY"vyy699'<=
 	
 
 vvYY&))#		FII(=>yy699$VYY)>?@
 	
 
r   N)r8   r9   r:   r;   r<   r   c          	      b    d}t        |||||||f      D 	ci c]
  \  }}	|	||	 c}	}S c c}	}w )Nr8   r9   r;   r<   r:   r   )r   )
rK   r8   r9   r:   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   rf   r*   )r,   r-   r-   r.   r/   r.   r   r=   r  r)   r   )r>   r?   r@   rA   ry   r   rB   rC   r  r  r    rF   rG   r3   r	   r   r   r   r   r   r   r  rI   rJ   )rK   r#   r$   r&   rL   rM   r   r8   d1d2r:   xm0r9   r;   rO   lowermiddleupperr6   r<   r   r  s                         r   rS   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 )Nrt   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   )rA   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   r6   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)   )r8   r9   r;   r   rm   )r   r   rA   r{   r    r   r   r   r   r   r   r   r
   rI   )
rK   rL   r6   r   r8   r!  r9   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   )r5   r0  r   rL   s     r   r6   z)TestBracketMinimum.test_dtypes.<locals>.f  s    99a'kA-u55r   )r_   r   r`   r   )r   rA   r    r   rJ   r   r   r   r   r   r   r   )rK   r0  r;   r<   r   rL   r6   r8   r!  r9   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_onlyreasonc                 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   rf   )r8   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>1  r8  r   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>3  r8  r   r9   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>5  r8  r   r   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>7  r8  r   r   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>9  r8  r   r   r   c                     | S r   r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>=  s    q r   rs   z/Array shapes are incompatible for broadcasting.c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>A  r8  r   r   r   )r   r   r\   r   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>E  r8  r   rt   )r9   rm   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>G  r8  r   rv   c                     | dz  S r,  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>I  r8  r   ekki)r   r   r   r    rA   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r8   r   r!  )r[   皙?g333333?r9   )皙?皙?rZ   Nr   ))r]   r   )r   r   )rE  r   )rF  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r8   r9   r   r   r   )r  r  r}   r~   rA   r    ry   r  rI   rJ   rF   r3   )	rK   r8   r!  r9   r   rL   r6   r   r  s	            r   test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limitsK  s     KKMScc"**d>S8TU!!RZZ2::Z%FQ&Q!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmin))rs         ?r   r   )r         @r   r   )r.  r   r-  r   )g      (@      0@      4@r   )NrK  r   r   )NrL  r   r   )Nr   r-  r   )NrM  rN  r   ))r   r   )gYnr   )g#B;r   )rE  r   )rF  r   )rG  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)r8   r9   r;   r   r   )r  r  r}   r~   rA   r    r  rI   rJ   rF   r3   )
rK   r8   r!  r9   r;   r   rL   r6   r   r  s
             r   test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_lefta  s    : KKMSc&+C

D,A&B ! D!!RZZ_??!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmax))rF  333333?rG  r   )r[   333333?rE  r   )皙ɿ皙r   r   )3333335333331gffffff,r   )rF  rQ  Nr   )r[   rR  Nr   )rS  rT  Nr   )rU  rV  Nr   ))g?r   )g?r   )gffffff?r   )rs   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rA   ry   .0argrL   s     r   	<genexpr>zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>  "     G3RZZ2::Z6G   '*)r8   r9   r<   r   r   r   )r  r}   r  r    rA   ry   r  rI   rJ   rF   r3   )
rK   r8   r!  r9   r<   r   rL   r6   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))rF  rQ  rG  Nr   r   r   )gffffff?333333?rL  rQ  NrQ  r   )g@      
@g333333@N皙X@rf  r   )rf         @r.   L:Nri  r   )NrQ  NNr   rb  )Nrc  NrQ  Nrd  )Nre  NNrf  rg  )Nrh  Nri  Nrj  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)r9   r;   r<   r   rv   r   )r  r  r}   r~   rA   r    rI   r   r   rF   r3   )rK   r8   r!  r9   r;   r<   r   rL   r6   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   rb   rc   re   rg   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 )Nri   rj   rd   rZ   r   r-   c                 L    t        j                         | ||||||df	      S )Nr   )r8   r9   r;   r<   r:   rm   r   )r    r  )	r!  r8   r9   r;   r<   r:   r  rm   rK   s	          r   bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s.    #DKKM3CSt)-fg*+S3 3r   rq   r*   rr   rs   rt   c              3   X   K   | ]!  }j                  |j                          # ywrY  rZ  r[  s     r   r^  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>)  r_  r`  )r8   r9   r;   r<   r:   r   rm   )	r   r   r   r   r   r   rJ   rF   rG   ru   r/   rv   r)   )"r>   rw   rx   rz   r  r?   r@   r{   r|   r}   r    rA   r   r	   r   r   rb   rJ   r   r   r   rI   r   rF   rG   r   r3   r  r   r   r   r   r   r   )rK   rb   rL   r  r   ro  r6   rM   r8   r9   r!  r;   r<   r   r:   r   r   r   r   r   r   r   rm   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   r6   z0TestBracketMinimum.test_special_cases.<locals>.fG  s)    ::aggy1117Q;r   r   r   r.   r;  c                     | dz  dz
  S )Nr=   r-   r   r   s    r   r6   z0TestBracketMinimum.test_special_cases.<locals>.fO  s    a4"9r   r   r   r.  r   )r8   r9   rm   c                     || dz  z  dz
  S )Nr=   r/   r   r   s     r   r6   z0TestBracketMinimum.test_special_cases.<locals>.fY  s    QT6A:r   r   r   r)   rS  r   r   rI  )r    rA   ry   rJ   r
   r   r   r   r	   r   r  r3   r   r   )rK   rL   r6   r  r8   r!  r9   r   s    `      r   r   z%TestBracketMinimum.test_special_casesB  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 Nrv   rC   r5   log_alog_br<   r;   rL   s      r   r6   z0TestBracketMinimum.test_gh_20562_left.<locals>.fs  s3    66$<5EemQ&+++r   g_\ݶ?r;   r<   )rA   r    r	   r   rK   rL   r6   r  r<   r;   s    `  @@r   test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_leftn  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 ry  rz  r{  s      r   r6   z1TestBracketMinimum.test_gh_20562_right.<locals>.f  s4    664%="&&$-5EU]A%**r   g_\ݶr~  )rA   r    r	   r   r  s    `  @@r   test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_right{  sT     ZZ,bjj.E
d	+ "!RZZ0C%D'+$8		4(r   r   ry   c                 t   d }|j                  d|j                        }|j                  g d|j                        }|j                  g dt        ||            d d |j                  f   }t        |||fd|i      }t        ||j                  |fd|i      }||z   }	t        |j                  |	       y )Nc                    | ||z   z
  dz  S r,  r   r  s      r   r6   z)TestBracketMinimum.test_kwargs.<locals>.f  s    QK!##r   r   r   r  r  rY   r  )
r  r   rA   r   r  r   r   r   r	   r5   r  s
             r   r	  zTestBracketMinimum.test_kwargs  s    	$ HHRrzzH*JJy

J3JJyE(:J;ArzzMJ!!QaT3(C1gooQD#qJ!es#r   )r
  r  r  r  r  r  r   r  r  rS   r   r3  skip_xp_backendsr   rJ  rP  ra  rl  r}   r   r   r  r  r	  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)) [[Wy)&<=$ >$r   r  )r   numpyr>   scipy.optimize._bracketr   scipy.optimize.elementwiser   r   r   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   r    r"   r  r   r   r   <module>r     s}      ,A A 6 6 9 9 = < Z$ Z$ !Z$x
 ?#J$ J$ $J$r   