
    e!h                     F   d dl Z d dlZd dlmZ d dlmZmZ d dlm	c m
Z d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d Zd	 Zd
ZdZe j6                  j9                  de      e j6                  j9                  de      ee j6                  j;                  d       G d d                                  Ze j6                  j9                  de      e j6                  j9                  de      ee j6                  j;                  d       G d d                                  Zy)    N)_ELIMITS)bracket_rootbracket_minimum)stats)xp_assert_closexp_assert_equalxp_assert_lessarray_namespace)xp_ravel)array_api_compatiblec                      t        | i |}|j                  \  |_        |_        |j                  \  |_        |_        |`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsress      i/var/www/html/diagnosisapp-backend/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.z*JAX arrays do not support item assignment.array_api_strict)reasonz	jax.numpyskip_xp_backendsc            	          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 Nr1   countxfs    r   r8   z-TestBracketRoot.test_nfev_expected.<locals>.fG       GGqLGHr   )xl0xr0factorxmin)r:   r;   r<   r;   r:   r=   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr5   r   nfevnitr   r   r   r   r   signstatussuccess)selfr%   r&   r(   r)   xprngr:   dr<   r;   r=   nlur   r   r   r   signsr8   s                       @r   test_nfev_expectedz"TestBracketRoot.test_nfev_expected4   s    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)rM   qps      r   r8   zTestBracketRoot.f   s%    ,,.221599r   r[   333333?皙?gffffff?r/   r=   Nr>   r0   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   r8   rC   r   rJ   r   r   )rM   r[   r=   r>   r<   rN   r   s          r   
test_basiczTestBracketRoot.test_basic   s[     DFFBJJu$5t$T#)A0@B("''#&&/:r   shape   r+      r+   r?   r?   c           
          |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 ]r  }|D cg c]  }|j                  t        ||             }}t        ||      }t        t!        ||      |j#                  |             t%        |j&                  |       t t)        |j                  d            }|j*                  j,                  |j.                  k(  sJ |r |j1                  |j*                  dd       sJ |j2                  j,                  |j4                  k(  sJ |j6                  j,                  |j4                  k(  sJ |j8                  j,                  |j4                  k(  sJ |j;                  |j8                        j
                  dz
  k(  sJ t=        |j>                  |j@                         t        |jB                  |j                    jD                  |j>                  g|              t        |jF                  |j                    jD                  |j@                  g|              y c c}w )N皙?rf   r\   r/   c           
      @    t        j                  | |||||f      S )Nr=   r>   r<   r   maxiter)r   r8   )r:   r;   r=   r>   r<   r[   ro   rM   s         r   bracket_root_singlez?TestBracketRoot.test_vectorization.<locals>.bracket_root_single   s(     c4(.aT)02 2r   c                  R    xj                   dz  c_          j                  | i |S r3   )f_evalsr8   )r   r   r8   rM   s     r   r8   z-TestBracketRoot.test_vectorization.<locals>.f   s&    IINI4664*6**r   r   # r,        @@      ?      ?rn   )r   r   r   r   rL   rH   rI   rN         ?r1   r?   )$r@   linspacereshapefloat64	vectorizerr   rA   rB   infravelrC   tuplemapr   getattrr   r   stackr   rd   r
   rL   dtypeboolallrK   int32rH   rI   maxr	   r   r   r   r8   r   )rM   rd   rN   r[   r   rp   rO   r:   r;   r=   r>   ir<   refsr   attrsattrrefref_attrres_attrxp_testr8   ro   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 	3DBFG3

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

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

6466#&&+@4+@ AB Hs    "O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 )Nrv    r7   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r7   rN   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funcsr7   jrN   s        r   r8   z%TestBracketRoot.test_flags.<locals>.f   sH    &'') 	"E 25R=AME#a&M!$===s   Ar0   r   )      r   r   r         @)r1   r1   r1   r1   ry      r1   r?   r+   )r:   r;   r=   r>   r   ro   )arangeint64r   rC   r~   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rK   )rM   rN   r8   r   r   	ref_flagss    `    r   
test_flagszTestBracketRoot.test_flags   s    	> 		!288	,.A "

+C D "

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

I.r   root灕Cl?V-?r   float16float32r|   c                 J  	 t        |      t        |j                  d            	||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 )Nrx   r   c                 4    j                  | |z
  dz        S )Nr+   astype)r7   r   r   r   s     r   r8   z%TestBracketRoot.test_dtype.<locals>.f   s    >>1t8/599r   ra   rb   )r=   r>   r   )r   r
   rC   r   r   rL   r   r   r   r   r   )
rM   r   r=   r>   r   rN   r8   r   r   r   s
       `    @r   
test_dtypezTestBracketRoot.test_dtype   s    E"!"**R.1|tD)F|tD)Fzz$ez,	: **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t               d d d        t        j                  t        |      5  t        d ddt                      d d d        t        j                  t        |      5  t        d ddt               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   Gx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   rh   ...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   helloc                     | 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   ru   	broadcastc                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   )r+   rh   r0   )`maxiter` must be a non-negative integer.c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   rv   )ro   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   ry   c                     | S r   r   r   s    r   r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>  r   r   	shrubbery)	pytestraises
ValueErrorr   r@   objectsum	ExceptionrC   rM   rN   messages      r   test_input_validationz%TestBracketRoot.test_input_validation   s`    -]]:W5 	'$A&	' 1]]:W5 	1+ua0	1]]:W5 	4+r73	4]]:W5 	7+r126	7]]:W5 	=+r168<	=]]:W5 	:+r1S9	: 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	4 	4	7 	7	= 	=	: 	:	: 	:
	T 	T	; 	;	: 	:	C 	Cs   I1I>J5J-J%)J2#J?1K/K#K%K11I;>JJJ"%J/2J<?K	KK"%K.1K:c                 ,   t        |j                  d            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) Nrx   c                 P    j                  | j                  d      sJ | dz  dz
  S )Nzreal floatingc   r1   isdtyper   r7   r   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f#  s)    ??177O<<<7Q;r         g      @c                     | dz
  S )Nr/   r   r   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f+  s    r6Mr         ro   r   r?   r   c                     || z  dz
  S r3   r   r7   cs     r   r8   z-TestBracketRoot.test_special_cases.<locals>.f6  s    Q37Nr   r         @r   r+   c                 2    xj                   dz  c_         | S r3   r4   r6   s    r   r8   z-TestBracketRoot.test_special_cases.<locals>.f@  r9   r   i   g      $@r   rh           gV瞯<)atolignore)overr   g      $g      r   r1   )r
   rC   r   rL   r   r   rI   rH   rK   r   r   r5   r@   errstate)rM   rN   r   r   r8   r   s       @@r   test_special_casesz"TestBracketRoot.test_special_cases  s   !"**R.1	 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$   .M2:.M>-.N
2M;>N
N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)r7   r[   s     r   r8   z)TestBracketRoot.test_bug_fixes.<locals>.fj  s    66!9q= r   g(\?gffffff?ry   r   )r:   r=   r>   r   c                 8    t        j                  | |z        |z
  S r   r   )r7   r[   r   s      r   r8   z)TestBracketRoot.test_bug_fixes.<locals>.fq  s    66!A#;?"r   )gi<?gx?gt\c?gL0+?gt4?gj~?gE.K?g'2L?)rx   r   rx   rx   r   rx   rx   rx   )gʷG;g_.:
@gbG g9jgWM!?geg~:ZgV^ܿ)gʷG;g/B_@gŎzgH_sgЫ?gˆ-r   r   r   r:   r;   r=   r>   r   c                     | dz   S )Ng      ?r   r   s    r   r   z0TestBracketRoot.test_bug_fixes.<locals>.<lambda>  s
    a$h r         )r:   r=   r>   )r@   rC   r   r~   rL   )	rM   r8   r[   r   r   r:   r;   r=   r>   s	            r   test_bug_fixeszTestBracketRoot.test_bug_fixesc  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parametrizerU   r8   r@   rz   rc   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3C K3Cj/: [[VeeU^%<=[[Vb$Z0[[VaY/[[W&GH5 I 0 1 >5"%CNDL!r   r$   c                      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 )Nr1   r?   r4   )r7   abr8   s      r   r8   z$TestBracketMinimum.init_f.<locals>.f  s"    GGqLGEA:>!r   r   r4   )rM   r8   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   )rM   resultrN   s      r   assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket  s    vvYY"vyy699'<=
 	
 
 vvYY&))#		FII(=>yy699$VYY)>?@
 	
 
r   N)r:   r;   r<   r=   r>   r   c          	      b    d}t        |||||||f      D 	ci c]
  \  }}	|	||	 c}	}S c c}	}w )Nr:   r;   r=   r>   r<   r   r   )
rM   r:   r;   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   rh   r,   )r.   r/   r/   r0   r1   r0   r   r?   r  r+   r   )r@   rA   rB   rC   r|   r   rD   rE   r  r  r   rH   rI   r5   r   r   r   r   r   r   r   r  rK   rL   )rM   r%   r&   r(   rN   rO   r   r:   d1d2r<   xm0r;   r=   rQ   lowermiddleupperr8   r>   r   r  s                         r   rU   z%TestBracketMinimum.test_nfev_expected  s    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]  \  }} ||   |       c}}S c c}}w )Nc                     | dz
  dz  S )Nrv   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                   S r   r   r   s    r   r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    rvv 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   r8   z(TestBracketMinimum.test_flags.<locals>.f  sC    +  %#	%E -0BK8DAqHE!HQK888s   8r0   r   )r   r   r   r         @)r   r   r   r   r   )rx   rx   rx   rx          @r   g       @r+   )r:   r;   r=   r   ro   )r   r   rC   r~   r   r   r   r   r   r   r   r   r   rK   )
rM   rN   r8   r   r:   r  r;   r=   r  reference_flagss
    `        r   r   zTestBracketMinimum.test_flags  s    	9 		!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>   r0   c           	          t        |      t        |j                  d            ||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 )Nrx   r   c                 4    j                  | |z
  dz        S r(  r   )r7   r,  r   r   s     r   r8   z)TestBracketMinimum.test_dtypes.<locals>.f  s    >>1w;"2E::r   )ra   r   rb   r   )r   r
   rC   r   r   rL   r   r   r   r   r   r   r   )rM   r,  r=   r>   r   rN   r8   r:   r  r;   r  r   s       `      @r   test_dtypeszTestBracketMinimum.test_dtypes  s>   
 E"!"**R.1|tD)F|tD)F**WE*2	; +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                    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      t
               d d d        t        j                  t        |      5  t        d |j	                  d      t                      d d d        t        j                  t        |      5  t        d |j	                  d      t               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   _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   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   rh   )r:   r   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>1  
    q!t r   y      @      ?c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>3  r3  r   r   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>5  r3  r   zfarcical aquatic ceremonyr;   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>8  r3  r   r   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>:  r3  r   r   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda><  r3  r   r   r   c                     | S r   r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>@  s    q r   ru   z+shape mismatch: objects cannot be broadcastc                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>E  r3  r   r   r   )r   r   r^   r   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>I  r3  r   rv   )r;   ro   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>K  r3  r   ry   c                     | dz  S r(  r   r   s    r   r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>M  r3  r   ekki)r   r   r   r   rC   r@   r   r   r   s      r   r   z(TestBracketMinimum.test_input_validation'  s    -]]:W5 	.T21-	. 1]]:W5 	?^RZZ-=>	?]]:W5 	J^RZZ^I	J]]:W5 	>^RZZ^!<>	> ]]:W5 	F^RZZ^"E	F]]:W5 	L^RZZ^&(K	L]]:W5 	I^RZZ^CH	I E]]:W5 	F["**R.E	F @]]: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A	. 	.	? 	?	J 	J	> 	>	F 	F	L 	L	I 	I	F 	F
	U 	U	Q 	Q	P 	P	T 	Ts   L)L6MM#M'M*&#M7.N2#N: N= N+  N7)L36M MMM'*M47NNNN(+N47O r:   r   r  )r]   皙?g333333?r;   )皙?皙?r\   Nr   ))r_   r   )r  r   )r@  r   )rA  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r:   r;   r   r   r   )r  r  r   r   rC   r   r|   r  rK   rL   rH   r5   )	rM   r:   r  r;   r   rN   r8   r   r  s	            r   test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limitsO  s     KKMScc"**d>S8TU!!RZZ2::Z%FQ&Q!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmin))ru         ?rx   r   )rx         @r   r   )r*  r   r)  r   )g      (@      0@      4@r   )NrF  rx   r   )NrG  r   r   )Nr   r)  r   )NrH  rI  r   ))r   r   )gYnr   )g#B;r   )r@  r   )rA  r   )rB  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)r:   r;   r=   r   r   )r  r  r   r   rC   r   r  rK   rL   rH   r5   )
rM   r:   r  r;   r=   r   rN   r8   r   r  s
             r   test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_lefte  s    : KKMSc&+C

D,A&B ! D!!RZZ_??!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmax))rA  333333?rB  rx   )r]   333333?r@  rx   )皙ɿ皙r   rx   )3333335333331gffffff,rx   )rA  rL  Nrx   )r]   rM  Nrx   )rN  rO  Nrx   )rP  rQ  Nrx   ))g?r   )g?r   )gffffff?r   )ru   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rC   r|   .0argrN   s     r   	<genexpr>zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>  "     G3RZZ2::Z6G   '*)r:   r;   r>   r   r   r   )r  r   r  r   rC   r|   r  rK   rL   rH   r5   )
rM   r:   r  r;   r>   r   rN   r8   r   r  s
         `   r   test_scalar_with_limit_rightz/TestBracketMinimum.test_scalar_with_limit_right  s    4 KKMG$GGSc4H!!RZZ2::Z%FQ&Q!!&"-}}!!!~~~{{agg%%%r   zxl0,xm0,xr0,xmin,xmax,args))rA  rL  rB  Nrx   rx   r   )gffffff?333333?rG  rL  NrL  r   )g@      
@g333333@N皙X@ra  r   )rh         @r0   L:Nrd  r   )NrL  NNrx   r]  )Nr^  NrL  Nr_  )Nr`  NNra  rb  )Nrc  Nrd  Nre  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)r;   r=   r>   r   ry   r   )r  r  r   r   rC   r   rK   r   r   rH   r5   )rM   r:   r  r;   r=   r>   r   rN   r8   r   r  s              r   test_minimum_at_boundary_pointz1TestBracketMinimum.test_minimum_at_boundary_point  s    z KKMSt$&+C

D,A&B ! D!!RZZ_??}}"""Aw699fii0000{{agg%%%r   rd   re   rg   ri   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                  |
      ||	||||	      }g d}|D ]r  }|D cg c]  }j                  t        ||             }}t        ||      }t        t        |      j                  |             t!        |j"                  |       t t%        j                  d            }|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                        |j8                  dz
  k(  sJ  j;                  |       t        |j<                   ||j>                  g|        t        |j@                   ||jB                  g|        t        |jD                   ||jF                  g|        y c c}w )Nrk   rl   rf   r\   r   r/   c                 L    t        j                         | ||||||df	      S )Nr   )r:   r;   r=   r>   r<   ro   r   )r   r  )	r  r:   r;   r=   r>   r<   r  ro   rM   s	          r   bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s.    #DKKM3CSt)-fg*+S3 3r   rs   r,   rt   ru   rv   c              3   X   K   | ]!  }j                  |j                          # ywrT  rU  rV  s     r   rY  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>-  rZ  r[  )r:   r;   r=   r>   r<   r   ro   )	r   r   r   r   r   r   rL   rH   rI   rw   rx   r1   ry   r+   )$r@   rz   r{   r}   r  rA   rB   r~   r   r   r   rC   r   r   r   r   r   rd   r
   rL   r   r   r   rK   r   rH   rI   r   r5   r  r   r   r   r   r   r   )rM   rd   rN   r  r   rj  r8   rO   r:   r;   r  r=   r>   r   r<   r   r   r   r   r   r   r   r   ro   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/s$$(dGU O 	3DBFG3

73#56GHGsD)HHX"5rxx7IJHNNE2		3 ""**R.1{{  GLL00066#++a+,,,zz288+++xx~~)))ww}}(((vvcgg!''A+---!!#r*#&& 04 01#&& 04 01#&& 04 01! Hs   :"M-c                    t        |j                  d            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 )Nrx   c                 P    j                  | j                  d      sJ | dz  dz
  S )Nnumericb   r1   r   r   s    r   r8   z0TestBracketMinimum.test_special_cases.<locals>.fK  s)    ??177I6667Q;r   r   r   r0   r6  c                     | dz  dz
  S )Nr?   r/   r   r   s    r   r8   z0TestBracketMinimum.test_special_cases.<locals>.fS  s    a4"9r   r   r   r*  r   )r:   r;   ro   c                     || dz  z  dz
  S )Nr?   r1   r   r   s     r   r8   z0TestBracketMinimum.test_special_cases.<locals>.f]  s    QT6A:r   r   r   r+   rN  r   rD  )r
   rC   r   r|   rL   r   r   r   r   r   r   r  r5   r   r   )	rM   rN   r8   r  r:   r  r;   r   r   s	           @r   r   z%TestBracketMinimum.test_special_casesE  s   !"**R.1	 "!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            }|j                  k(  sJ y )NgJg7e4?g[2\WZ?c                 `    j                        j                        }}||z
  | z  dz   S Nry   rE   r7   log_alog_br>   r=   rN   s      r   r8   z0TestBracketMinimum.test_gh_20562_left.<locals>.fw  s3    66$<5EemQ&+++r   g_\ݶ?r=   r>   )rC   r   r   rM   rN   r8   r  r>   r=   s    `  @@r   test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_leftr  sX     ZZ
+RZZ
-C
d	, "!RZZ0B%C$'+-vyy   r   c                     j                  d      j                  d      cfd}t        |j                  d            }|j                  k(  sJ y )Ng[2\WZgJg7e4̿c                 b    j                         j                         }}||z
  | z  dz  S rt  ru  rv  s      r   r8   z1TestBracketMinimum.test_gh_20562_right.<locals>.f  s4    664%="&&$-5EU]A%**r   g_\ݶry  )rC   r   r   rz  s    `  @@r   test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_right  sX     ZZ,bjj.E
d	+ "!RZZ0C%D'+$8vyy   r   )r  r  r  r  r  r  r   r  r  rU   r   r/  r"   r   rE  rK  r\  rg  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N [[US$K0[[U$56[[U$9: [[	
&	 ; 7 1& [[	
" [[ 

&
#8& [[	
  [[ 
&!2& [[$X	
[x&y[x& [[Wuw	&JK/2 L/2b+2Z!!r   r
  ) r   numpyr@   scipy.optimize._bracketr   scipy.optimize.elementwiser   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr   scipy._lib._array_api_no_0dr   r   r	   r
   scipy._lib._array_apir   scipy.conftestr   r   r   array_api_strict_skip_reasonjax_skip_reasonr  r"   usefixturesr$   r
  r   r   r   <module>r     s#     , D 6 6 J J * /  W >09UVk/B+,Q Q -  C WQh
 09UVk/B+,! ! -  C W!r   