
    tKgjw                         d dl Z d dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmc mZ d dlmZ  G d d      Z G d d      Zy)	    N)assert_array_lessassert_allcloseassert_equal)_bracket_root_bracket_minimum_ELIMITS)statsc            	          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 ej                  ej                  ej                   f      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                  d      g dz  \  }}}d|z   }||z   }	fd|r|j                          }
t        j                  t        j                  ||
z
   |
z        t        j                  |      z        }|
||
z
  || z  z  z   |
||
z
  ||dz
   z  z  z   }}t        ||	||
      }nht        j                  t        j                  |	|z        t        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 t        j                  |j                  |j                  g      }t        |||f       t        j                  |j                  |j                   g      }t        | |             |j                  |j                  kD  sJ t        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    e/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_bracket.pyr   z-TestBracketRoot.test_nfev_expected.<locals>.f       GGqLGH    )xl0xr0factorxmin)r#   r$   r%   r$   r#   r&   xmaxr      )nprandomdefault_rngceillogdictpopr   r   nfevnitasarrayxlxrr   flfrsignstatussuccess)selfr   r   r   r   rngr#   dr%   r$   r&   nlukwargsresbracket	f_bracketsignsr   s                      @r    test_nfev_expectedz"TestBracketRoot.test_nfev_expected   s    ii##D)+l:QVAg	 JJL=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(JJ/0		1W:. vv	"QxE!H9$$$zzQ{{{r"   c                 F    t         j                  j                  |      |z
  S N)r	   normcdf)r:   qps      r    r   zTestBracketRoot.fY   s    zz~~a 1$$r"   rK   333333?皙?gffffff?r   r&   Nr'   r   r%   333333?r(   c           	          t        | j                  dd||||f      }t        t        j                  |j
                         t        j                  |j                               y )N{Gz{Gz?)r&   r'   r%   args)r   r   r   r)   r7   r5   r6   )r:   rK   r&   r'   r%   rA   s         r    
test_basiczTestBracketRoot.test_basic\   sH     DFFE4d#)6bggcffo%rwwsvv7r"   shape   r      r   r(   r(   c           
          |r&t        j                  ddd      j                  |      n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   }t        ||||	||      } |||||	||      j                         }g d}|D ]W  }|D cg c]  }t        ||       }}t        ||      }t        |j                         |       t        |j                  |       Y t        j                  |j                  j                   t         j"                        sJ |r$t        j$                  |j                  dd       sJ t        j                  |j&                  j                   t         j(                        sJ t        j                  |j*                  j                   t         j(                        sJ t        j                  |j,                  j                   t         j(                        sJ t        t        j.                  |j,                        j                  dz
         t1        |j2                  |j4                         t        |j6                    j8                  |j2                  g|        t        |j:                    j8                  |j4                  g|        y c c}w )N皙?rW   rL   r   c           
      @    t        j                  | |||||f      S )Nr&   r'   r%   rS   maxiter)r   r   )r#   r$   r&   r'   r%   rK   r`   r:   s         r    bracket_root_singlez?TestBracketRoot.test_vectorization.<locals>.bracket_root_singlen   s(     c4(.aT)02 2r"   c                  R    xj                   dz  c_          j                  | i |S r   )f_evalsr   )rS   r@   r   r:   s     r    r   z-TestBracketRoot.test_vectorization.<locals>.ft   s&    IINI4664*6**r"   r   # r        @@      ?      ?r_   )r3   r4   r5   r6   r9   r0   r1   r   r(   )r)   linspacereshape	vectorizerc   r*   r+   infr   ravelgetattrr   r   rU   
issubdtyper9   dtypebool_allr8   integerr0   r1   maxr   r3   r4   r5   r   r6   )r:   rU   rK   rS   ra   r;   r#   r$   r&   r'   ir%   rA   refsattrsattrrefref_attrres_attrr   r`   s   `                  @@r    test_vectorizationz"TestBracketRoot.test_vectorizationf   s    <ABKKtR(007ct		2 
	2
	+ 	ii##G,zzuz%%jjej$Wc#gd


&,A "wDGT!W'#-AsCdf!%w8"3T4CIIKBD6:;dsT*dH;sD)HHNN,h7/	  }}S[[..99966#++a+,,,}}SZZ--rzz:::}}SXX^^RZZ888}}SWW]]BJJ777RVVCGG_aii!m4#&&#&&)svv 5 56svv 5 56 <s   6Mc                    d }t        j                  dt         j                        f}t        |g dg dt         j                   dt         j                   t         j                   dgt         j                  dt         j                  t         j                  d	g|d
      }t        j
                  t        j                  t        t        j                  t        j                  t        j                  g      }t        |j                  |       y )Nc                 v    d d d d d g}t        | |      D cg c]  \  }} ||   |       c}}S c c}}w )Nc                     | dz
  S )Nrg    r   s    r    <lambda>z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   s    q3wr"   c                     | dz
  S Ni  r   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       q4xr"   c                     | dz
  S r   r   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>   r   r"   c                 "    t         j                  S rG   r)   nanr   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       rvvr"   c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>       qr"   zipxsjsfuncsr   js        r    r   z%TestBracketRoot.test_flags.<locals>.f   sF    &''% 	"E -0BK8KDAqHE!HQKK888   5r   rp   )rh   rh   rh   rh   rY   )r   r   r   r   rh      r   r(   r   )r#   r$   r&   r'   rS   r`   )r)   arangeint64r   rl   arrayeim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r8   )r:   r   rS   rA   	ref_flagss        r    
test_flagszTestBracketRoot.test_flags   s    	9 		!288,.A 3 0#%66'2w!C"$&&!RVVRVVQ!?!%q2 HHcoo&!mm!nn!nn	. /	 	SZZ+r"   root灕Cl?V-?rp   c                    ||n |      }||n |      } |      }fd}t        j                  ddg      }t        |g||||fd}t        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 )Nc                 2    | |z
  dz  j                        S )Nr   astype)r   r   rp   s     r    r   z%TestBracketRoot.test_dtype.<locals>.f   s    X!O++E22r"   rQ   rR   r   )r&   r'   rS   )
r)   r2   r   rr   r9   r3   rp   r4   r5   r6   )r:   r   r&   r'   rp   r   rB   rA   s       `   r    
test_dtypezTestBracketRoot.test_dtype   s     |tt|ttT{	3 **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 ddg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        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   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   xY w# 1 sw Y   y xY w)N`func` must be callable.matchr   rY   ...must be numeric and real.c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>       Ar"   y            ?c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   helloc                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   r&   c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   r'   c                     | S rG   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 rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rf   +shape mismatch: objects cannot be broadcastc                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   )r   rY   r   )`maxiter` must be a non-negative integer.c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rg   )r`   c                     | S rG   r   r   s    r    r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>   r   r"   rh   )pytestraises
ValueErrorr   r)   objectsumr:   messages     r    test_input_validationz%TestBracketRoot.test_input_validation   s    -]]:W5$A& 6 1]]:W5+ua0 6]]:W5+r73 6]]:W5+r126 6]]:W5+r168< 6]]:W5+r1S9 6 E]]:W5+r1S9 6 @]]:W5+Bx; 6 >]]:W5+r1c: 6]]:W5+r1b9 65= 65 6555555555 65
 65 6555sw   HH,H95I-I)I #I-I9JJH),H69III I*-I69JJJc                    d t        dd      }|j                  sJ d d}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        ddd      }|j                  sJ t        |j                   |j                  d             fdd_	        t        dd       t        j                  d       d_	        t        ddd      }|j                  |j                  f}t        |j
                  d       t        |dd       t        j                  d      5  t        ddd      }d d d        |j                  |j                  f}t        |d   dd       t        j                  d      5  t        ddd      }d d d        |j                  |j                  f}t        |d   dd       t        j                  d      5  t        d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                 r    t        j                  | j                  t         j                        sJ | dz  dz
  S )Nc   r   r)   ro   rp   floatingr   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f   ,    =="++6667Q;r"   r   c                     | dz
  S )Nr   r   r   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f   s    r6Mr"   )r   r   r`   r   r(   r   c                     || z  dz
  S r   r   r   cs     r    r   z-TestBracketRoot.test_special_cases.<locals>.f  s    Q37Nr"   rh   r   r   rS   c                 2    xj                   dz  c_         | S r   r   r   s    r    r   z-TestBracketRoot.test_special_cases.<locals>.f  r!   r"   i   r   r   rY   )r   r   gV瞯<)atolignore)overr   rN   r   )r   r9   r3   r4   r1   r0   r8   r   r5   r   r   r)   errstate)r:   rA   rB   r   s      @r    test_special_casesz"TestBracketRoot.test_special_cases   s   
	 Ar1%{{{	 A333vv(svv((vww!||xx1}}zzR	 Ar11-{{{#&&!-	
 ab!QWWa  Aq"Q/66366"SXXq!e4 [[h'1bq1C (66366"
AE2[[h'33C (66366"
AE2 [[h'1bq1C (;;; (' (' ('s$   %H:<II:III)__name__
__module____qualname__r   markparametrizerE   r   r)   ri   rT   tupler|   r   float16float32float64r   r   r   r   r"   r    r   r   
   s   [[V%GH[[Z7[[\=9[[^];H < : 8 IHT% [[S3D$(C"DE[[Vb$Z0[[VaY/[[XQx08 1 0 1 F8 [[Wuwvy&IJ.7 K.7`,8 [[VeeU^%<=[[Vb$Z0[[VaY/[[Wrzz2::rzz&JK5 L 0 1 >5#:J>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ej                  ej                  ej                  f      ej                  j                  dddg      ej                  j                  dddg      d                             Z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       d-d.d/g      d0        Zd1 Zd2 Zd3 Zy)4TestBracketMinimumc                      fdd_         S )Nc                 D    xj                   dz  c_         | |z
  dz  |z   S )Nr   r(   r   )r   abr   s      r    r   z$TestBracketMinimum.init_f.<locals>.f.  s"    GGqLGEA:>!r"   r   r   )r:   r   s    @r    init_fzTestBracketMinimum.init_f-  s    	" r"   c                    t        j                  |j                  |j                  k  |j                  |j                  k  z        sJ t        j                  |j
                  |j                  k\  |j                  |j                  kD  z  |j
                  |j                  kD  |j                  |j                  kD  z  z        sJ y rG   )r)   rr   r3   xmr4   r5   fmr6   )r:   results     r    assert_valid_bracketz'TestBracketMinimum.assert_valid_bracket4  s    vvYY"vyy699'<=
 	
 
 vvYY&))#		FII(=>yy699$VYY)>?@
 	
 
r"   Nr   )r#   r$   r%   r&   r'   rS   c          	          d}t        |||||||f      D 	ci c];  \  }}	t        |	t        j                        st        j                  |	      s|	dvr||	= c}	}S c c}	}w )Nr#   r$   r&   r'   r%   rS   )Nr   )r   
isinstancer)   ndarrayisscalar)
r:   r#   r$   r%   r&   r'   rS   namesnamevals
             r    
get_kwargszTestBracketMinimum.get_kwargs=  sm     A'*53T4QU2V'W
'W)$#rzz*bkk#.>*$ #I'W
 	
 
s   A Ar   )l	   ^0#,N0Lb*& l	   }SES].HMa l	   FDuBP_KU r   r   r   c                    t         j                  j                  |      }d}|j                  d      g dz  \  }}}}	||z   }
|
|z   }|	dz  }	|r|j                          dz  }t        t        j                  t        j
                  ||z
   |z        t        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        t        j                  t        j
                  ||z        t        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        ||
fi |}|j                  |j                  d	z   k(  sJ |j                  |j                  k(  sJ |j                  |k(  sJ t        j                  |j                  |j                  |j                  g      }t!        ||||f       t        j                  |j"                  |j$                  |j&                  g      }t!        | ||g|        | j)                  |       |j*                  d
k(  sJ |j,                  sJ y )Nr   r   rY   r   )r   r   r   r   r   r   r(   r   r   r   )r)   r*   r+   intr,   r-   r   r   r   r0   r1   r   r2   r3   r   r4   r   r5   r   r6   r   r8   r9   )r:   r   r   r   r;   rS   r#   d1d2r%   xm0r$   r&   r=   lowermiddleupperr   r'   r@   r   rB   rC   s                          r    rE   z%TestBracketMinimum.test_nfev_expectedG  sO    ii##D) "jjaj03CCRVBhBh!JJL=1$D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 ! 
 "!S3F3 {{fjj1n,,,{{agg%%%zzQ **fiiFII>?%!78JJ		699fii@A		1W#4t#45!!&)}}!!!~~~r"   c           	         d }t        j                  dt         j                        f}g d}g d}g d}t         j                   dt         j                   t         j                   dg}t	        ||||||d	
      }t        j
                  t        j                  t        t        j                  t        j                  t        j                  g      }t        |j                  |       y )Nc                 v    d d d d d g}t        | |      D cg c]  \  }} ||   |       c}}S c c}}w )Nc                     | dz
  dz  S )Nrg   r(   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    C!|r"   c                     | S rG   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                     | S rG   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                 "    t         j                  S rG   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  r   r"   c                     | dz  S Nr(   r   r   s    r    r   z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>  s    q!tr"   r   r   s        r    r   z(TestBracketMinimum.test_flags.<locals>.f  sF    +  %#	%E -0BK8KDAqHE!HQKK888r   r   r   )      r  r  r        @)        r  r  r        @)      ?r  r  r         @r  g       @r   )r#   r$   r&   rS   r`   )r)   r   r   rl   r   r   r   r   r   r   r   r   r   r8   )	r:   r   rS   r#   r   r$   r&   r   reference_flagss	            r    r   zTestBracketMinimum.test_flags  s    	9 		!288,.+''vvgtbffWrvvgs3!!Scs'+Q8 ((COOX$'MM3>>$'NN$4 5 	V]]O4r"   minimumr   r   rp   r&   rN   r'   r   c           	      :   ||n |      }||n |      } |      }fd}t        j                  g d      \  }}}t        |||||||f      }	t        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 )Nc                 2    | |z
  dz  j                        S r  r   )r   r  rp   s     r    r   z)TestBracketMinimum.test_dtypes.<locals>.f  s    [1$,,U33r"   )rQ   r  rR   r   )r#   r$   r&   r'   rS   )r)   r   r   rr   r9   r3   rp   r   r4   r5   r   r6   )
r:   r  r&   r'   rp   r   r#   r   r$   r   s
       `     r    test_dtypeszTestBracketMinimum.test_dtypes  s    
 |tt|tt.	4 !35AS#!s4d'
 vvfnn%%%yy&))//MVYY__MMMMMMyy&))//MVYY__MMMMMMr"   c                 6   d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d d       d d d        t        j                  t        |      5  t        d	 dd
       d d d        t        j                  t        |      5  t        d dt               d d d        t        j                  t        |      5  t        d dt                      d d d        t        j                  t        |      5  t        d dt               d d d        d}t        j                  t        |      5  t        d dd       d d d        d}t        j                  t        |      5  t        d ddg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        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   Nx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   y xY w)Nr   r   r   rY   )r#   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>      q!tr"   y      @      ?c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   r   r   c                     | S rG   r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  s    qr"   rf   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   r   r   )r   r   rN   r   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   rg   )r$   r`   c                     | dz  S r  r   r   s    r    r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>  r  r"   rh   )r   r   r   r   r)   r   r   r   s     r    r   z(TestBracketMinimum.test_input_validation  s    -]]:W5T21- 6 1]]:W5^T2 6]]:W5^RW= 6]]:W5^Rb9 6]]:W5^Rfh? 6]]:W5^R< 6 E]]:W5["S9 6 @]]:W5^b"X<H 6 >]]:W5^RQD 6]]:W5^RQC 657 65 6555555555 65
 65 6555sw   HH*H76I-I(I!I+I7JJH'*H47IIII(+I47J JJr#   r  r   )rM   皙?g333333?r$   )皙?皙?rL   NrS   ))rO   r   )g      r   )r"  r   )r#  r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   c                     | j                         }| j                  |||      }t        ||fi |}| j                  |       |j                  dk(  sJ |j
                  sJ |j                  |j                  k(  sJ y )Nr#   r$   rS   r   r   r   r   r   r8   r9   r0   r   )r:   r#   r   r$   rS   r   r@   r   s           r    test_scalar_no_limitsz(TestBracketMinimum.test_scalar_no_limits  sv     KKMSc=!!S3F3!!&)}}!!!~~~{{agg%%%r"   zxl0,xm0,xr0,xmin))rf         ?r  r  )r        @r  r  )r  r  r  r  )g      (@      0@      4@r  )Nr)  r  r  )Nr*  r  r  )Nr  r  r  )Nr+  r,  r  ))r  r  )gYnr  )g#B;r  )r"  r  )r#  r  )r$  r  c                     | j                         }| j                  ||||      }t        ||fi |}| j                  |       |j                  dk(  sJ |j
                  sJ |j                  |j                  k(  sJ y )N)r#   r$   r&   rS   r   r'  )	r:   r#   r   r$   r&   rS   r   r@   r   s	            r    test_scalar_with_limit_leftz.TestBracketMinimum.test_scalar_with_limit_left  sx    : KKMSc4H!!S3F3!!&)}}!!!~~~{{agg%%%r"   zxl0,xm0,xr0,xmax))r#  333333?r$  r  )rM   333333?r"  r  )皙ɿ皙r  r  )3333335333331gffffff,r  )r#  r/  Nr  )rM   r0  Nr  )r1  r2  Nr  )r3  r4  Nr  ))g?r  )g?r  )gffffff?r  )rf   r  c                     | j                         }| j                  ||||      }t        ||fi |}| j                  |       |j                  dk(  sJ |j
                  sJ |j                  |j                  k(  sJ y )N)r#   r$   r'   rS   r   r'  )	r:   r#   r   r$   r'   rS   r   r@   r   s	            r    test_scalar_with_limit_rightz/TestBracketMinimum.test_scalar_with_limit_right!  sx    4 KKMSc4H!!S3F3!!&)}}!!!~~~{{agg%%%r"   zxl0,xm0,xr0,xmin,xmax,args))r#  r/  r$  Nr  r  r  )gffffff?333333?r*  r/  Nr/  r  )g@      
@g333333@N皙X@r;  r   )rY         @r   L:Nr>  r   )Nr/  NNr  r7  )Nr8  Nr/  Nr9  )Nr:  NNr;  r<  )Nr=  Nr>  Nr?  c                     | j                         }| j                  ||||      }t        ||fi |}	|	j                  dk(  sJ |d   |	j                  |	j
                  fv sJ |	j                  |j                  k(  sJ y )N)r$   r&   r'   rS   rh   r   )r   r   r   r8   r3   r4   r0   r   )
r:   r#   r   r$   r&   r'   rS   r   r@   r   s
             r    test_minimum_at_boundary_pointz1TestBracketMinimum.test_minimum_at_boundary_pointC  s~    z KKMSt$TJ!!S3F3}}"""Aw699fii0000{{agg%%%r"   rU   rV   rX   rZ   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   }t        ||	|||
|||	      } ||	|||
|||      j                         }g d}|D ]W  }|D cg c]  }t        ||       }}t        ||      }t        |j                         |       t        |j                  |       Y t        j                  |j                  j                   t         j"                        sJ |r$t        j$                  |j                  dd       sJ t        j                  |j&                  j                   t         j(                        sJ t        j                  |j*                  j                   t         j(                        sJ t        j                  |j,                  j                   t         j(                        sJ t        t        j.                  |j,                        |j0                  dz
          j3                  |       t        |j4                   ||j6                  g|        t        |j8                   ||j:                  g|        t        |j<                   ||j>                  g|        y c c}w )Nr\   r]   rW   rL   r  r   c                 L    t        j                         | ||||||df	      S )Nr  )r#   r$   r&   r'   r%   r`   rS   )r   r   )	r   r#   r$   r&   r'   r%   r   r`   r:   s	          r    bracket_minimum_singlezETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_single  s.    #DKKM3CSt)-fg*+S3 3r"   rd   r   re   rf   rg   )r#   r$   r&   r'   r%   rS   r`   )	r3   r   r4   r5   r   r6   r9   r0   r1   r   rh   r   ) r)   ri   rj   rk   r   r*   r+   rl   r   rm   rn   r   r   rU   ro   r9   rp   rq   rr   r8   rs   r0   r1   rt   r   r   r5   r3   r   r   r6   r4   )r:   rU   r   rS   rD  r   r;   r#   r$   r   r&   r'   ru   r%   rA   rv   rw   rx   ry   rz   r{   r`   s   `                    @r    r|   z%TestBracketMinimum.test_vectorization  s    <ABKKtR(007c3x		3 
	3
 KKMii##G,zzuz%%jjej$CJJEJ*cCi88Wc#gd


&,A "wDGT!W'#-q#3Cd&,4J%c3T4KQQSND6:;dsT*dH;sD)HHNN,h7/	  }}S[[..99966#++a+,,,}}SZZ--rzz:::}}SXX^^RZZ888}}SWW]]BJJ777RVVCGG_aggk2!!#&#&& 04 01#&& 04 01#&& 04 01 <s   M4c           	         d }t        |dd      }|j                  sJ d }d\  }}}t        ||||d      }t        |j                  |j                  |j
                  g|||g       d	 }t        |d
d      }|j                  sJ t        |j                   ||j                  d             | j                         }g d\  }}}d}t        |||||      }|j                  dk(  sJ t        |j                  |j                  |j
                  g|||g       t        |j                  |j                  |j                  g ||g|  ||g|  ||g| g       y )Nc                 r    t        j                  | j                  t         j                        sJ | dz  dz
  S )Nb   r   r   r   s    r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  r   r"   r   r   )r$   c                     | dz  dz
  S )Nr(   r   r   r   s    r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  s    a4"9r"   )r   rh   r(   r   )r#   r$   r`   c                     || dz  z  dz
  S )Nr(   r   r   r   s     r    r   z0TestBracketMinimum.test_special_cases.<locals>.f  s    QT6A:r"   rh   r   r   )r  r1  r  r   r&  )r   r9   r   r3   r   r4   r   r5   r   r   r   r6   )r:   r   r   r#   r   r$   rS   s          r    r   z%TestBracketMinimum.test_special_cases  sK   
	 "!RQ/~~~	 "S#!!ScsAFfiiFII6c3H	 "!Ra0~~~		1VYY?3 KKM)S#!!ScsFww!||YY		699-#sO	
 	YY		699-s]T]AcMDM1S=4=9	
r"   c                 ^    d\  fd}t        |d      }|j                  k(  sJ y )N)gJg7e4?g[2\WZ?c                 P    t        j                  g      \  }}||z
  | z  dz   S Nrh   r)   r-   r   log_alog_br'   r&   s      r    r   z0TestBracketMinimum.test_gh_20562_left.<locals>.f  s0    664,/LE5emQ&+++r"   g_\ݶ?r&   r'   )r   r3   r:   r   r   r'   r&   s      @@r    test_gh_20562_leftz%TestBracketMinimum.test_gh_20562_left  s8     ,
d	, "!%7dNvyy   r"   c                 ^    d\  fd}t        |d      }|j                  k(  sJ y )N)g[2\WZgJg7e4̿c                 R    t        j                    g      \  }}||z
  | z  dz  S rL  rM  rN  s      r    r   z1TestBracketMinimum.test_gh_20562_right.<locals>.f  s1    66D54%.1LE5U]A%**r"   g_\ݶrQ  )r   r4   rR  s      @@r    test_gh_20562_rightz&TestBracketMinimum.test_gh_20562_right  s8     /
d	+ "!%8t$Ovyy   r"   )r   r   r   r   r   r   r   r   r   rE   r   r)   r   r   r   r  r   r(  r.  r6  rA  r   r|   r   rS  rV  r   r"   r    r   r   ,  s   
 44dQS
 [[	
 [[Z7[[\=9C : 8CJ54 [[Y(?@[[Wrzz2::rzz&JK[[Vb$Z0[[VaY/N 0 1 L AN  DD [[US$K0[[U$56[[U$9: [[	
&	 ; 7 1& [[	
" [[ 

&
#8& [[	
  [[ 
&!2& [[$X	
[x&y[x& [[Wuw	&JK-2 L-2^*
X
!
!r"   r   )r   numpyr)   numpy.testingr   r   r   scipy.optimize._bracketr   r   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr	   r   r   r   r"   r    <module>r^     s9      J J M M 6 6 _ _D	m! m!r"   