
    (ph                       S r SSKrSSKrSSKrSSKrSSKJrJrJ	r	J
r
JrJrJr  SSKrSSKJr  SSKrSSKJr  SSKJrJr  SSKJrJrJr  SSKJr  SS	KJr  SS
KJr  SSKJ r   SSK!J"r"J#r#  SSK$J%r%J&r&J'r'  SSK(J)r)J*r*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2  SSK3J4r4  SSK5J6r6J7r7  \Rp                  Rr                  r9S r: " S S5      r; " S S\;5      r<S r=S r>S r?S r@S rAS rBS rC\Rp                  R                  S 5       rE\Rp                  R                  S 5       rFS  rG " S! S"\<5      rH " S# S$\<5      rI " S% S&\<5      rJ " S' S(\<5      rK " S) S*\;5      rL\Rp                  R                  S+/ S,Q5      S- 5       rN " S. S/5      rO " S0 S15      rP " S2 S35      rQS4 rR " S5 S65      rSS7 rTS8 rUS9 rVS: rWS; rX\4 " S< S=5      5       rYS> rZS? r[S@ r\SASB/r]SCSD/r^SEr_SF r` " SG SH5      raSI rbSJ rcSK rdSL re " SM SN5      rf\Rp                  R                  \Rp                  R                  SO5      SP 5       5       rh " SQ SR5      riSS rj " ST SU5      rk\R                  SV 5       rmSW rnSX roSY rpSZ rqS[ rr\r" 5       rs\Rp                  R                  S\5      \Rp                  R                  \R                  " S]S^9S_   S`   Sa   Sb:H  S\Sc9\Rp                  R                  S+\sSd   5      \Rp                  R                  Se\sSe   5      \Rp                  R                  Sf\sSg   5      \Rp                  R                  Sh\sSh   5      \Rp                  R                  Si\sSj   5      Sk 5       5       5       5       5       5       5       rw\Rp                  R                  S+\sSd   5      Sl 5       rxSm rySn rzSo r{Sp r| " Sq Sr5      r}Ss r~St r\Rp                  R                  S+SuSv/5      \Rp                  R                  Sw\-\.\/\0\1\2/5      Sx 5       5       rg)yzx
Unit tests for optimization routines from optimize.py

Authors:
   Ed Schofield, Nov 2005
   Andrew Straw, April 2008

    N)assert_allcloseassert_equalassert_almost_equalassert_no_warningsassert_warnsassert_array_lesssuppress_warnings)raises)optimize)BoundsNonlinearConstraint)MINIMIZE_METHODSMINIMIZE_METHODS_NEW_CBMINIMIZE_SCALAR_METHODS)LINPROG_METHODS)ROOT_METHODS)ROOT_SCALAR_METHODS)QUADRATIC_ASSIGNMENT_METHODS)ScalarFunction
FD_METHODS)
MemoizeJacshow_optionsOptimizeResult)rosen	rosen_der
rosen_hess)
coo_matrix
csc_matrix
csr_matrix	coo_array	csr_array	csc_array)array_api_compatible)xp_assert_equalarray_namespacec                     S n S n[         R                  " S/5      n[        R                  " XU5      n[	        US5        [        R                  " XUSSS9n[	        US5        [        R                  " XUSS	9n[	        US5        [        R                  " XUSSSS
9n[	        US5        [        [        R                  " XUSS	9S-
  5      nUS:  d   e[        [        R                  " XUSSSS
9S-
  5      nUS:  d   eS nS n[         R                  " SSS5      n[        R                  " XEUSSS9n[	        US5        [        [        [        R                  XEUSSS9  [        R                  " [        [        [        SSS9nUS:  d   eg )Nc                 <    SS[         R                  " U * 5      -   -  $ N   npexpxs    U/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_optimize.pyexpittest_check_grad.<locals>.expit.   s    Ar
N##    c                 l    [         R                  " U * 5      S[         R                  " U * 5      -   S-  -  $ Nr)      r*   r-   s    r/   	der_expit"test_check_grad.<locals>.der_expit1   s*    vvqbzQ^a///r2         ?r   random  )	directionseedư>)epsilon)r>   r;   rng皙?Hz>c                 P    U [         R                  " U 5      -  R                  5       $ N)r+   sinsumr-   s    r/   x_sinxtest_check_grad.<locals>.x_sinxJ   s    "&&)  ""r2   c                 b    [         R                  " U 5      U [         R                  " U 5      -  -   $ rC   r+   rD   cosr-   s    r/   
der_x_sinx#test_check_grad.<locals>.der_x_sinxM   s!    vvay1RVVAY;&&r2   r5   皙?)r;   r?   random_projectionallgƠ>)r+   arrayr   
check_gradr   absarangeassert_raises
ValueErrorhimmelblau_gradhimmelblau_hesshimmelblau_x0)r0   r6   x0rrF   rK   s         r/   test_check_gradr[   *   s   $0 
3%BEb1A1Eb&.T	;A1Eb$?A1Eb$&.D	:A1 	H"dCaGHAt8O8H"d*2>@AB 	CAt8O8#' 
1a	BF&.D	:A1*h11b/T;
 	O_m&+	7At8O8r2   c                   6    \ rS rSrSrS rS rS rS rS r	Sr
g	)
CheckOptimize`   zBase test case for a simple constrained entropy maximization problem
(the machine translation example of Berger et al in
Computational Linguistics, vol 22, num 1, pp 39--72, 1996.)
c                    [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      U l        [         R                  " / SQ5      U l        [         R                  " S[         R
                  5      U l        [         R                  " / SQ5      U l        SU l        [        R                  " 5       U l        [        R                  " 5       U l        [        R                  " 5       U l        g )	Nr)   r)   r)   )r)   r)   r   )r)   r   r)   )r)   r   r   )      ?333333?      ?   )        g\g)3?  )r+   rP   FKzerosfloat64startparamssolutionmaxiter	threadinglocal	funccalls	gradcallstraceselfs    r/   setup_methodCheckOptimize.setup_methodf   s    9$$$$	& '
 .)88Arzz2!@A"*"*__&
r2   c                    [        U R                  S5      (       d  SU R                  l        [        U R                  S5      (       d  SU R                  l        U R                  =R                  S-  sl        U R                  R                  S:  a  [	        S5      e[
        R                  " U R                  U5      n[
        R                  " [        [
        R                  " U5      5      5      nU[
        R                  " U R                  U5      -
  n[        U R                  S5      (       d  / U R                  l        U R                  R                  R                  [
        R                  " U5      5        U$ )Ncr   r)   ip  z+too many iterations in optimization routinet)hasattrrp   rx   rq   RuntimeErrorr+   dotrg   logrE   r,   rh   rr   ry   appendcopy)rt   r.   log_pdotlogZfs        r/   funcCheckOptimize.funct   s    t~~s++ DNNt~~s++ DNNA>>d"LMM66$&&!$vvc"&&*+,266$&&!$$tzz3''DJJL

BGGAJ'r2   c                    [        U R                  S5      (       d  SU R                  l        U R                  =R                  S-  sl        [        R                  " U R
                  U5      n[        R                  " [        [        R                  " U5      5      5      n[        R                  " X#-
  5      n[        R                  " U R
                  R                  5       U5      U R                  -
  $ )Nrx   r   r)   )rz   rq   rx   r+   r|   rg   r}   rE   r,   	transposerh   rt   r.   r   r   ps        r/   gradCheckOptimize.grad   s    t~~s++ DNNA66$&&!$vvc"&&*+,FF8?#vvdff&&(!,tvv55r2   c                    [         R                  " U R                  U5      n[         R                  " [	        [         R
                  " U5      5      5      n[         R
                  " X#-
  5      n[         R                  " U R                  R                  [         R                  " [         R                  " U5      U R                  [         R                  " U R                  R                  U5      -
  5      5      $ rC   )r+   r|   rg   r}   rE   r,   Tdiagr   s        r/   hessCheckOptimize.hess   s    66$&&!$vvc"&&*+,FF8?#vvdffhhffRWWQZ"&&12E)EFH 	Hr2   c                 N    [         R                  " U R                  U5      U5      $ rC   )r+   r|   r   rt   r.   r   s      r/   hesspCheckOptimize.hessp   s    vvdiilA&&r2   )rg   rh   rp   rq   rm   rl   rk   rr   N)__name__
__module____qualname____firstlineno____doc__ru   r   r   r   r   __static_attributes__ r2   r/   r]   r]   `   s!    
'$6H'r2   r]   c                   l   \ rS rSrS rS rS rS rS rS r	\
R                  R                  S5      S	 5       rS
 rS rS r\
R                  R#                  SS/SS/SS/SS//5      S 5       rS r\
R                  R)                  SS9S 5       rS rS rS rS rS rS rS rS  rS! rS" rS# r S$r!g%)&CheckOptimizeParameterized   c                 0   U R                   (       al  U R                  U R                  SS.n[        R                  " U R
                  U R                  SSU R                  US9nUS   US   US   US	   US
   4u  p4pVnOS[        R                  " U R
                  U R                  U R                  SU R                  SU R                  SS9nUu  p4pVn[        U R                  U5      U R                  U R                  5      SS9  U R                  R                  S:X  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       e[        U R                  R                  SS / SQ/ SQ/SSS9  g )NFrm   disp
return_allr   CG)argsmethodjacoptionsr.   funnfevnjevstatusT)rm   full_outputr   retallr=   atol	      r5      )r         rc   )r   g;ӱ.g)`$|;?+=rA   r   rtol)use_wrapperrm   r   r   minimizer   rk   r   fmin_cgr   rl   rp   rx   rq   rr   ry   )	rt   optsresparamsfopt
func_calls
grad_callswarnflagretvals	            r/   test_cg"CheckOptimizeParameterized.test_cg   sh   #||TYY"')D##DIIt/?/?b+/TYY,02C C#e*c&k3v;HM ;F*( %%dii1A1A&*iiT\\26TYY-24F @F<V:8		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~1$6dnn&6&66$ 	

Qq)'=?"	/r2   c                     S n[         R                  " SSS5       HB  n[        R                  " X/SS9nUR                  (       d   e[        UR                  S/SS	9  MD     g )
Nc                 L    SS[         R                  " SU S-
  -  5      -
  S-  -  $ )Ng      @r)         rc   r5   r*   )rZ   s    r/   r   8CheckOptimizeParameterized.test_cg_cornercase.<locals>.f   s(    !bffT1s7^44q888r2   g      rd   G   r   r   rc   h㈵>r   )r+   linspacer   r   successr   r.   )rt   r   rY   sols       r/   test_cg_cornercase-CheckOptimizeParameterized.test_cg_cornercase   sR    	9
 ++eQ+B##AtD9C;;;CEEC5t4 ,r2   c                 D   U R                   (       au  U R                  U R                  SS.n[        R                  " U R
                  U R                  U R                  SSUS9nUS   US   US   US	   US
   US   US   4u  p4pVpxn	OT[        R                  " U R
                  U R                  U R                  SU R                  SU R                  SS9n
U
u  p4pVpxn	[        U R                  U5      U R                  U R                  5      SS9  U R                  R                  S:X  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       e[        U R                  R                  SS / SQ/ SQ/SSS9  g )NFr   BFGSr   r   r   r   r   r.   r   r   hess_invr   r   r   Tr   rm   r   r   r   r=   r   
         )r   g&/LgB__E7?)r   g$g
|3?r   rA   r   )r   rm   r   r   r   r   rk   r   	fmin_bfgsr   rl   rp   rx   rq   rr   ry   )rt   r   r   r   r   goptHoptr   r   r   r   s              r/   	test_bfgs$CheckOptimizeParameterized.test_bfgs   s{   #||TYY"')D##DIIt/?/?(,		&r,02C
 Hc%j#e*c*oKVc(mJ=FF$jh ''		43C3CTYY-/48tyy/46F
 28/V4X		&)499T]]+C!	#
 ~~2%7t~~'7'77%~~1$6dnn&6&66$ 	

Qq)==?"	/r2   c           	      .   [         R                  " [        SS9   [        R                  " / SQ5      nU R
                  [        R                  " S5      * S.n[        R                  " [        R                  USSUS9  S S S 5        g ! , (       d  f       g = f)	N+'hess_inv0' matrix isn't positive definite.matchg?ffffff?皙?ffffff?333333?   r   	hess_inv0r   r   rY   r   r   r   )
pytestr
   rU   r+   rP   r   eyer   r   r   )rt   rY   r   s      r/   test_bfgs_hess_inv0_neg2CheckOptimizeParameterized.test_bfgs_hess_inv0_neg   sk     ]]: .0 134B IIRVVAYJ?DhnnF&*,	1 1 1s   A#B
Bc           	      :   [         R                  " [        SS9   [        R                  " / SQ5      n[        R
                  " S5      nSUS'   U R                  US.n[        R                  " [        R                  USS	US
9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   r   r   r   r   r   r   )
r   r
   rU   r+   rP   r   r   r   r   r   )rt   rY   r   r   s       r/   test_bfgs_hess_inv0_semipos6CheckOptimizeParameterized.test_bfgs_hess_inv0_semipos   sw     ]]: .0 134Bq	IIdO III>DhnnF&*,1 1 1s   A)B
Bc                 R   [         R                  n[        R                  " / SQ5      nU R                  S[        R
                  " S5      -  S.n[         R                  " XSSUS9n[         R                  " XSSSU R                  0S9n[        UR                  UR                  S	S
9  g )Nr   {Gz?r   r   r   r   r   r   r=   r   )	r   r   r+   rP   r   r   r   r   r   )rt   r   rY   r   r   res_trues         r/   test_bfgs_hess_inv0_sanity5CheckOptimizeParameterized.test_bfgs_hess_inv0_sanity   s    nnXX/0		rvvay0@A6(,.$$SR.4dii-@BD9r2   ignore::UserWarningc           
      x  ^ S mU4S jnS/n[         R                  " SS9   U R                  (       a*  SU R                  0n[        R
                  " TX!SSUS	9S
   nO [        R                  " TX!U R                  S9n[         R                  " T" U5      5      (       a   e S S S 5        g ! , (       d  f       g = f)Nc                 ,    [         R                  U * -  * $ rC   )r+   er-   s    r/   r   ;CheckOptimizeParameterized.test_bfgs_infinite.<locals>.func  s    DDaRL= r2   c                    > T" U 5      * $ rC   r   )r.   r   s    r/   fprime=CheckOptimizeParameterized.test_bfgs_infinite.<locals>.fprime  s    G8Or2   r   ignore)overr   r   r   r   r.   r   )r+   errstater   r   r   r   r   isfinite)rt   r   rY   r   r.   r   s        @r/   test_bfgs_infinite-CheckOptimizeParameterized.test_bfgs_infinite	  s    	!	S[[h'		*%%dB6+-t==@B &&tRdiiH{{47+++++ (''s   A?B++
B9c                     / SQn[         R                  " [         R                  USSS0S9n[         R                  " [         R                  USSS0S9nUR                  UR                  :w  d   eg )Nr   bfgsxrtolMbP?r   r   gtolr   r   r   nit)rt   rY   r   refs       r/   test_bfgs_xrtol*CheckOptimizeParameterized.test_bfgs_xrtol  sa    & "6GT?L "6FD>Kww#''!!!r2   c                     / SQn[         R                  " [         R                  USSS0S9n[         R                  " [         R                  USSS0S9nUR                  UR                  :  d   eg )Ng$@g333334@g%@r   333333r  c1:0yE>r
  r@   )r   r   r   r   )rt   rY   res_c1_small
res_c1_bigs       r/   test_bfgs_c1'CheckOptimizeParameterized.test_bfgs_c1#  sg     +(()+FT4LR&&x~~')&4,P
   :??222r2   c                     / SQn[         R                  " [         R                  USSS0S9n[         R                  " [         R                  USSS0S9nUR                  UR                  :  d   eg )Nr   r  c2?r
  r   r  )rt   rY   res_defaultres_mods       r/   test_bfgs_c2'CheckOptimizeParameterized.test_bfgs_c2.  sc     '''(*6D":O##HNN$&vd|M,,,r2   r  r  rc   r5   皙r@   rM   c           	          [         R                  " [        SS9   / SQn[        R                  " [        R
                  USXS.S9  S S S 5        g ! , (       d  f       g = f)Nz'c1' and 'c2'r   r  cg)r  r  r
  )r   r
   rU   r   r   r   )rt   r  r  rY   s       r/   test_invalid_c1_c2-CheckOptimizeParameterized.test_invalid_c1_c28  sA     ]]:_=.Bhnnb-/&:< >==s   ,A
Ac           
         U R                   (       ae  U R                  U R                  SS.n[        R                  " U R
                  U R                  SSUS9nUS   US   US   US	   US
   US   4u  p4pVpxOH[        R                  " U R
                  U R                  SU R                  SU R                  SS9n	U	u  p4pVpx[        U R                  U5      U R                  U R                  5      SS9  [        USS  U R                  SS  SS9  U R                  R                  S::  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       eg )NFr   r   Powellr   r   r   r.   r   direcr  r   r   Tr   r=   r   r)   h㈵>   r   )r   rm   r   r   r   r   rk   fmin_powellr   rl   rp   rx   rq   
rt   r   r   r   r   r)  numiterr   r   r   s
             r/   test_powell&CheckOptimizeParameterized.test_powellA  sZ   #||TYY"')D##DIIt/?/?b+3TCC Hc%j#g,E
KXB0>F%*h ))$))T5E5E/14<<6:168F DJ@V5:		&)499T]]+C!	# 	qr
DMM!"$5DA ~~8+=T^^-=-==+~~1$6dnn&6&66$r2   zeThis part of test_powell fails on some platforms, but the solution returned by powell is still valid.reasonc           
         U R                   (       ae  U R                  U R                  SS.n[        R                  " U R
                  U R                  SSUS9nUS   US   US   US	   US
   US   4u  p4pVpxOH[        R                  " U R
                  U R                  SU R                  SU R                  SS9n	U	u  p4pVpx[        U R                  SS / SQ/ SQ/ SQ/ SQ/ SQ/SSS9  g )NFr   r   r'  r(  r.   r   r)  r  r   r   Tr   "   '   )病~W?f"Bܿg%?)r6  r7  g:&?)gSϼW?gf"Bg{år?)r6  r7  {år?)gB?r7  r8  r   rA   r   )
r   rm   r   r   r   r   rk   r,  r   rr   r-  s
             r/   test_powell_gh14014.CheckOptimizeParameterized.test_powell_gh14014c  s     #||TYY"')D##DIIt/?/?b+3TCC Hc%j#g,E
KXB0>F%*h ))$))T5E5E/14<<6:168F DJ@V5: 	

2b)>>>>>	@
 #	/r2   c           	      V   U R                    Vs/ s H$  n[        R                  * [        R                  4PM&     nnU R                  (       a  U R                  U R
                  SS.n[        R                  " U R                  U R                   SUSUS9nUS   US   peX`R                  R                  :X  d   e[        U R                  U5      U R                  U R                  5      SS	S
9  U R                  R                  S::  d   eU R                  R                  S:X  d   eg g s  snf )NFr   r   r'  )r   boundsr   r   r.   r   r=   r   r      r   )rk   r+   pir   rm   r   r   r   r   rp   rx   r   rl   rq   )rt   _r<  r   r   r   r   s          r/   test_powell_bounded.CheckOptimizeParameterized.test_powell_bounded  s    ,0+;+;<+;aBEE6255/+;<#||TYY"')D##DIIt/?/?b+1+3TCC #&c(CKJ!1!1111DIIf-tyy/G!%D2 >>##x///>>##q((('  =s   +D&c           
         U R                   (       aa  U R                  U R                  SS.n[        R                  " U R
                  U R                  SSUS9nUS   US   US   US	   US
   4u  p4pVnOH[        R                  " U R
                  U R                  SU R                  SU R                  SS9nUu  p4pVn[        U R                  U5      U R                  U R                  5      SS9  U R                  R                  S:X  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       e[        U R                  R                  SS / SQ/ SQ/SSS9  g )NFr   r   Nelder-meadr(  r.   r   r  r   r   Tr   r=   r      r   L   N   )g	dװ?g]fgt䝁?)gә ?g#=^goT?r   rA   r   )r   rm   r   r   r   r   rk   fminr   rl   rp   rx   rq   rr   ry   )	rt   r   r   r   r   r.  r   r   r   s	            r/   test_neldermead*CheckOptimizeParameterized.test_neldermead  s[   #||TYY"')D##DIIt/?/?b+8$HC Hc%j#e*c&kM;#7F'x ]]499d.>.>(*DLL/3$))*/1F =C9V7		&)499T]]+C!	#
 ~~3&8(8(88&~~1$6dnn&6&66$ 	

R+=>@"	/r2   c                    [         R                  " S5      nU R                  US'   [        S5       H  nXS-   U4==   S-  ss'   M     U R                  (       am  U R
                  SSUS.n[        R                  " U R                  U R                  S	S
US9nUS   US   US   US   US   4u  pVpxn	[        US   S   US   5        O?[        R                  " U R                  U R                  S	U R
                  SSSUS9n
U
u  pVpxn	[        U R                  U5      U R                  U R                  5      SS9  U R                  R                  S:X  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       e[        U R                  R                   SS / SQ/ SQ/SSS9  g )N)r   rd   .rd   r)   r@   FTrm   r   r   initial_simplexr   rC  r(  r.   r   r  r   r   allvecsr   r   rm   r   r   r   rL  r=   r   d   2   4   )gIt?g?'ΛTgx8?)gҢ_׆?goMg囎|52?r   rA   r   )r+   ri   rk   ranger   rm   r   r   r   r   rG  rl   rp   rx   rq   rr   ry   )rt   simplexjr   r   r   r   r.  r   r   r   s              r/   test_neldermead_initial_simplex:CheckOptimizeParameterized.test_neldermead_initial_simplex  s   ((6"''qAaCFOs"O  #||U"&7DD##DIIt/?/?b+8$HC;>s8;>u:;>u:;>v;;>x=	;J7F'x
 C	N1-wqz:]]499d.>.>(*DLL/3%3:<F
 =C9V7		&)499T]]+C!	#
 ~~3&8(8(88&~~1$6dnn&6&66$ 	

R+==?"	/r2   c                 V   / n[         R                  " S5      nU R                  S S US'   [        S5       H  nX#S-   U4==   S-  ss'   M     UR	                  U5        [         R                  " S5      nUR	                  U5        U H  nU R
                  (       aH  U R                  SSUS.n[        [        [        R                  U R                  U R                  S	S
US9  M\  [        [        [        R                  U R                  U R                  S	U R                  SSSUS9
  M     g )N)rd   r5   r5   .r)   r@   )rd   rd   FrK  r   rC  r(  TrN  )r+   ri   rk   rR  r~   r   rm   rT   rU   r   r   r   rG  )rt   bad_simplicesrS  rT  r   s        r/   #test_neldermead_initial_simplex_bad>CheckOptimizeParameterized.test_neldermead_initial_simplex_bad  s    ((6"''+qAaCFOs"O W%((6"W%$G#'<<&+Ij&//"ii"..#%%2&*, j(--"ii)9)9#%t||*.U5.5	7 %r2   c                     S n[         R                  " US/S/SS9n[        UR                  S/5        [         R                  " USS/SS/SS9n[        UR                  SS/5        g )	Nc                 4    [         R                  " U S-  5      $ Nr5   r+   rE   r-   s    r/   quad>CheckOptimizeParameterized.test_neldermead_x0_ub.<locals>.quad	      66!Q$<r2   r)   )r   ra   nelder-meadr<  r   r   r5   )r)         @r   r   r   r.   )rt   r_  r   s      r/   test_neldermead_x0_ub0CheckOptimizeParameterized.test_neldermead_x0_ub  st    	  C9 	
 	s#FW% 	
 	1v&r2   c           	          SS0n[         R                  " U R                  U R                  SU R                  SUS9nUR
                  S:X  d   eg )Nrm   	Newton-CGr   r   r   r   r   r)   )r   r   r   rk   r   r   )rt   r   results      r/   test_ncg_negative_maxiter4CheckOptimizeParameterized.test_ncg_negative_maxiter  sK    2""499d.>.>*5499(*D: }}!!!r2   c           
          S nS nS/nSn[         R                  " UUUS[        US9S9nUR                  S:X  d   e[	        UR
                  S   [        R                  5        g )Nc                 4    [         R                  " U S   5      $ Nr   )r+   rJ   r-   s    r/   cosine=CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.cosine&  s    66!A$<r2   c                 6    [         R                  " U S   5      * $ rq  )r+   rD   r-   s    r/   r   :CheckOptimizeParameterized.test_ncg_zero_xtol.<locals>.jac)  s    FF1Q4L= r2   r@   r   	newton-cg)xtol)rY   r   r   r   )r   r   dictr   r   r.   r+   r>  )rt   rr  r   rY   rw  rl  s         r/   test_ncg_zero_xtol-CheckOptimizeParameterized.test_ncg_zero_xtol$  sf    	 	! U""6&('**5+/T?	<
 }}!!!FHHQK/r2   c                    U R                   (       aU  U R                  U R                  SS.n[        R                  " U R
                  U R                  SU R                  SUS9S   nOM[        R                  " U R
                  U R                  U R                  SU R                  SU R                  SS9nUn[        U R                  U5      U R                  U R                  5      SS	9  U R                  R                  S
:X  d   U R                  R                  5       eU R                  R                  S::  d   U R                  R                  5       e[        U R                  R                  SS / SQ/ SQ/SSS9  g )NFr   rj  r   rk  r.   r   r=   r   r      rd   r   (6-H=g?g4u3?r~  g_g/N3?rA   r   )r   rm   r   r   r   r   rk   r   fmin_ncgr   rl   rp   rx   rq   rr   ry   rt   r   r   r   s       r/   test_ncg#CheckOptimizeParameterized.test_ncg6  s:   #||TYY"')D&&tyy$2B2B.9tyy,.>>ACF &&tyy$2B2BDII,.38tyy.35F
 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77% 	

Qq)KKM!	.r2   c                 &   U R                   (       a`  U R                  U R                  SS.n[        R                  " U R
                  U R                  SU R                  U R                  SUS9S   nOX[        R                  " U R
                  U R                  U R                  U R                  SU R                  SU R                  SS9	nUn[        U R                  U5      U R                  U R                  5      SS	9  U R                  R                  S
::  d   U R                  R                  5       eU R                  R                  S::  d   U R                  R                  5       e[        U R                  R                   SS / SQ/ SQ/SSS9  g )NFr   rj  r   )r   r   r   r   r   r.   )fhessr   rm   r   r   r   r=   r   r      rd   r   r}  r  rA   r   )r   rm   r   r   r   r   rk   r   r   r  r   rl   rp   rx   rq   rr   ry   r  s       r/   test_ncg_hess(CheckOptimizeParameterized.test_ncg_hessW  sK   #||TYY"')D&&tyy$2B2B.9tyy,0II,.> ?BCF
 &&tyy$2B2BDII-1YY,.38tyy.3	5F 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77%
 	

Qq)KKM!	.r2   c                 &   U R                   (       a`  U R                  U R                  SS.n[        R                  " U R
                  U R                  SU R                  U R                  SUS9S   nOX[        R                  " U R
                  U R                  U R                  U R                  SU R                  SU R                  SS9	nUn[        U R                  U5      U R                  U R                  5      SS	9  U R                  R                  S
::  d   U R                  R                  5       eU R                  R                  S::  d   U R                  R                  5       e[        U R                  R                   SS / SQ/ SQ/SSS9  g )NFr   rj  r   )r   r   r   r   r   r.   )fhess_pr   rm   r   r   r   r=   r   r   r  rd   r   r}  r  rA   r   )r   rm   r   r   r   r   rk   r   r   r  r   rl   rp   rx   rq   rr   ry   r  s       r/   test_ncg_hessp)CheckOptimizeParameterized.test_ncg_hesspy  sK   #||TYY"')D&&tyy$2B2B.9tyy-1ZZ,.> ?BCF
 &&tyy$2B2BDII/3zz,.38tyy.3	5F 		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~2%7t~~'7'77%
 	

Qq)KKM!	.r2   c                 r   U R                   (       a  [        R                  " U R                  U R                  SU R
                  U R                  S.S9n[        UR                  U R                  U R                  5      SS9  U R                  R                  S::  d   U R                  R                  5       eg g )Ncobyqarm   r   r
  r=   r   A   )r   r   r   r   rk   rm   r   r   r   rl   rp   rx   rt   r   s     r/   test_cobyqa&CheckOptimizeParameterized.test_cobyqa  s    ##		  $(LL$))D	C CGGTYYt}}%=DI >>##w.@0@0@@. r2   r   N)"r   r   r   r   r   r   r   r   r   r   r   markfilterwarningsr  r  r  r  parametrizer$  r/  xfailr9  r@  rH  rU  rY  rf  rm  ry  r  r  r  r  r   r   r2   r/   r   r      s   />	5 /D,
,	: [[ 56, 7, "	3- [[dD\S!H-13K-0#J,8 9<9< 7D [[ & '/'/@)2/>&/P7>'."0$.B .D .DAr2   r   c            	         ^ [         R                  R                  S5      mU4S jn S H?  nS H6  n[        R                  " U TR                  S5      USU0S9nUS   U:X  a  M6   e   MA     g )	Nl	   <vgRI*q4 c                 ,   > TR                  S5      S-  $ Nr)   rf   r9   )r.   r?   s    r/   costtest_maxfev_test.<locals>.cost  s    zz!}t##r2   )r)   r   rP  )r'  Nelder-Meadr   maxfevr
  r   )r+   r9   default_rngr   r   )r  imaxfevr   rl  r?   s       @r/   test_maxfev_testr    sq    
))

 G
HC$  0F&&tSZZ^.408'/BDF &>W,,,	 0	 r2   c                     S n [         R                  R                  U [        R                  " S5      S5      u  p[        S5       H-  nU" [        R                  " U5      5        US   US-   :X  a  M-   e   Sn[        [         R                  R                  US9   U" [        R                  " W5      5        S S S 5        [         R                  R                  U [        R                  " S5      S5      u  pSn[        [        US9   U" [        R                  " SS/5      5        S S S 5        g ! , (       d  f       N}= f! , (       d  f       g = f)Nc                     U $ rC   r   r-   s    r/   func_8test_wrap_scalar_function_with_validation.<locals>.func_  s    r2   r)   r   r   zToo many function callsr   @The user-provided objective function must return a scalar value.)
r   	_optimize'_wrap_scalar_function_maxfun_validationr+   asarrayrR  rT   _MaxFuncCallErrorrU   rP   )r  fcallsr   imsgs        r/   )test_wrap_scalar_function_with_validationr    s    %%//rzz!}aH F 1XRZZ]ayAaC  $C	x));;3	GRZZ] 
H %%//rzz!}aH F MC	z	-RXXq!f 
.	- 
H	G 
.	-s   D/E /
D= 
Ec                      Sn [        [        U S9   [        R                  " S [        R
                  " SS/5      SS9  S S S 5        g ! , (       d  f       g = f)Nr  r   c                     U $ rC   r   r-   s    r/   <lambda>.test_obj_func_returns_scalar.<locals>.<lambda>  s    Ar2   r)   r   r   )rT   rU   r   r   r+   rP   r   s    r/   test_obj_func_returns_scalarr    s@    &E 
z	/+rxxA'7G 
0	/	/s   .A
Ac                      [         R                  " / SQ5      n [        R                  R	                  [        R
                  U SS9nUR                  S::  d   eg )Nr   r  )xatoliS  )r+   rP   r   	_minimize_minimize_neldermeadr   r  )rY   r   s     r/   test_neldermead_iteration_numr    sG    	+	,B



1
1(.."8< 2 >C77c>>r2   c                      [         R                  " SS/5      R                  [         R                  5      n S n[        R
                  " XSS9  g )N      @      @c                 n    U R                   [        R                  :X  d   e[        R                  " U 5      $ rC   )dtyper+   float32r   r   r-   s    r/   rosen_*test_neldermead_respect_fp.<locals>.rosen_  s'    ww"**$$$~~a  r2   r  r   )r+   rP   astyper  r   r   )rY   r  s     r/   test_neldermead_respect_fpr    s:    	3*		$	$RZZ	0B! f7r2   c                  P    S n [         R                  R                  U SS/SSSS9  g )Nc                 $    U S   S-  U S   S-  -   $ Nr   r5   r)   r   r-   s    r/   r   )test_neldermead_xatol_fatol.<locals>.func  s    tqy1Q419$$r2   r)   r5   r	  )rm   r  fatol)r   r  r  )r   s    r/   test_neldermead_xatol_fatolr    s2    % ++D1a&!26d , Dr2   c                      S n / SQn[         R                  " XSS9n[        UR                  S5        [         R                  " XSSS0S9n[        UR                  S5        g )	Nc                 4    [         R                  " U S-  5      $ r]  r^  r-   s    r/   r   &test_neldermead_adaptive.<locals>.func      vva1f~r2   )gM@'?gOC?g~?g -?g?g#j?g ?g~^g?gܠr#?g^cǽ?g)i	?g'?g?g1?g[VΤ?r  r   FadaptiveTr
  )r   r   r   r   )r   p0r   s      r/   test_neldermead_adaptiver    s[    
FB 

D]
;Ce$


D]%/$68Cd#r2   c            	         S n Sn/ SQn[        [        R                  5         [        R                  " XUSS9nS S S 5        [	        WR
                  [        R                  " S/[        U5      -  5      SS9  [        UR                  S	5        [        UR                  S
5        / SQ/ SQ/ SQ/n[        [        R                  5         [        R                  " XUSSU0S9nS S S 5        [	        UR
                  [        R                  " / SQ5      SS9  [        UR                  S5        [        UR                  S5        g ! , (       d  f       GN= f! , (       d  f       Nx= f)Nc                 4    [         R                  " U S-  5      $ r]  r^  r-   s    r/   r   /test_bounded_powell_outsidebounds.<locals>.func  r  r2   )ri  r)   r  r  )rc   gr'  rc  re   r=   r   Tr   r   r   r   )r   r)   r   )r   r   r)   r)  )r<  r   r   )g      r   r   Fr   )r   r   OptimizeWarningr   r   r.   r+   rP   lenr   r   r   )r   r<  rY   r   r)  s        r/   !test_bounded_powell_outsideboundsr  
  s   
&F	B 
h..	/I 
0CEE288RD3r7N3$?d#Q 	9-E	h..	/'-h)0%(8: 
0 CEE288K0t<e$Q% 
0	/ 
0	/s   EE
E
E"c                  0   S n Sn/ SQnSSS.n[         R                  " XSUS9n[        UR                  SS	S
9  [        UR                  SS	S
9  [         R                  " XUUSS9n[
        R                  " / SQ5      n[        UR                  US	S
9  [        UR                  U " U5      S	S
9  S[
        R                  * S4S[
        R                  4SS4n[         R                  " XUUSS9n[
        R                  " / SQ5      n[        UR                  US	S
9  [        UR                  U " U5      S	S
9  S n S/S-  n/ SQn[         R                  " XSS9n[         R                  " XUSS9n[        UR                  SS	S
9  [        UR                  SS	S
9  [
        R                  * [
        R                  4/S-  n[         R                  " XUSS9n[        UR                  UR                  S	S
9  [        UR                  UR                  S	S
9  [        UR                  UR                  S	S
9  / SQnS/S-  n[        [         R                  5         [         R                  " XUSS9nS S S 5        [        UR                  SS	S
9  g ! , (       d  f       N$= f)Nc                 4    [         R                  " U S-  5      $ r]  r^  r-   s    r/   r   +test_bounded_powell_vs_powell.<locals>.func3  r  r2   ))ri  )r!  )r)   gffffff"@)r  gffffff@g/)g gr   r   r  绽|=ftolrw  r'  r
  re   r=   r   )r   r<  r   )ri  r!  r)   r   r  )Nri  r!  r)   )r  Nr  c                    [         R                  " U S   * 5      [         R                  " U S   5      -  [         R                  " U S   * U S   -  5      -  [         R                  " U S   5      -  nU[         R                  " [         R                  " U S   U S   -  5      [         R                  " U S   5      -  5      -  nUS-  $ Nr   r)   r5   rI   r.   ry   s     r/   r   r  Q  s    FFAaD5MBFF1Q4L(2661Q4%!A$,+??"&&1,N	RVVBFF1Q4!A$;'"&&1,677!tr2   )r  r   rd   )r   r   r   r   rc  g8:}?r   )gb4F@g:gW?@)r   r   r   r.   r   r+   rP   infr   r   r  )r   r<  rY   r   
res_powellres_bounded_powellr   s          r/   test_bounded_powell_vs_powellr  *  sb   DF	!Be,G""4HgNJJLL"40JNNBT2!**4W282:< 	%&A&((!$7&**DG$? 266'3!RVVj+MF!**4W282:< 	%&A&((!$7&**DG$?

 Y]F	B""4H=J!**4282:< JNN$8tD&**AD9
 w 1$F!**4282:< JNN$6$:$:FJOO%7%<%<4HJLL"4"6"6TB 
2BY]F	h..	/%..t6<6>@ 
0 &**AD9	 
0	/s   J
Jc                     S[         R                  * S4/S-  SSS.S.n / SQnS n[        R                  " X!40 U D6n[	        UR
                  S	S
S9  S n[        R                  " X!40 U D6n[	        UR
                  S5        S n[        R                  " X!40 U D6n[	        UR
                  SSS9  S n[         R                  * S4/S-  U S'   [        R                  " X!40 U D6n[	        UR
                  SSS9  g )Nr'  g    .Ard   r  r  )r   r<  r   r`   c                 0    [         R                  " U 5      * $ rC   r^  r-   s    r/   r   1test_onesided_bounded_powell_stability.<locals>.f  s    q	zr2   g    `F-C6?r   c                     [         R                  " [         R                  " U 5      5      S-  * [         R                  " U S:  5      (       a  S-  $ S-  $ )Nr@   r   r)   ri  r+   rR   rE   rO   r-   s    r/   r   r    s>    rvvay!c**266!a%==aIIbIIr2   gwc                     [         R                  " [         R                  " U 5      5      S-  * [         R                  " U S:  5      (       a  S-  $ S-  $ )Nr   r   r)   ri  r  r-   s    r/   r   r    s>    rvvay!R''q1u1FF2FFr2   gB+IarA   r   c                    [         R                  " [         R                  " U S S 5      5      S-  * [         R                  " [         R                  " U SS  5      5      S-  -
  nU[         R                  " U S:  5      (       a  S-  nU$ S-  nU$ )Nr5   r   r@   r   r)   ri  r  r  s     r/   r   r    su    VVBFF1Ra5M"a''"&&!"*?C*HH	266!a%==a) '))r2   g     @@r<  g 4&k\)r+   r  r   r   r   r   )kwargsrY   r   r   s       r/   &test_onesided_bounded_powell_stabilityr  w  s     !66'3(1,"&57F 
B


A
,V
,CCGGT-J 

A
,V
,CCGG_-G 

A
,V
,CCGG\5
 &&#'!+F8


A
,V
,CCGG9Er2   c                       \ rS rSrSrSrSrg)TestOptimizeWrapperDispi  Tr   Nr   r   r   r   r   r   r   r   r2   r/   r  r    s    KDr2   r  c                       \ rS rSrSrSrSrg)TestOptimizeWrapperNoDispi  TFr   Nr  r   r2   r/   r  r    s    KDr2   r  c                       \ rS rSrSrSrSrg)TestOptimizeNoWrapperDispi  FTr   Nr  r   r2   r/   r  r    s    KDr2   r  c                       \ rS rSrSrSrSrg)TestOptimizeNoWrapperNoDispi  Fr   Nr  r   r2   r/   r  r    s    KDr2   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS r\R.                  R1                  S5      \R.                  R3                  S5      \R.                  R3                  S5      \R.                  R5                  S/ SQ\-   5      S 5       5       5       5       r\R.                  R5                  S/ SQ5      S 5       rS r\R.                  R5                  S/ SQ5      S 5       r\R.                  R@                  \R.                  R5                  S/ SQ5      S  5       5       r!S! r"S" r#S# r$S$ r%\R.                  R5                  S/ S%Q5      S& 5       r&\R.                  R5                  S/ S'Q5      S( 5       r'\R.                  R3                  S5      \R.                  R5                  S\(5      \R.                  R5                  S)/ S*Q5      S+ 5       5       5       r)S, r*\R.                  R5                  SS-5      S. 5       r+\R.                  R@                  \R.                  R5                  S/ S/Q5      S0 5       5       r,S1r-g2)3TestOptimizeSimplei  c                    S nS n[         R                  /n[         R                  " SSS9   [        R                  " XUSS9n[         R
                  " U" U5      5      (       d   e S S S 5        g ! , (       d  f       g = f)Nc                     U $ rC   r   r-   s    r/   r   .TestOptimizeSimple.test_bfgs_nan.<locals>.func  s    Hr2   c                 .    [         R                  " U 5      $ rC   r+   	ones_liker-   s    r/   r   0TestOptimizeSimple.test_bfgs_nan.<locals>.fprime      <<?"r2   r   )r   invalidFr  )r+   nanr  r   r   isnan)rt   r   r   rY   r.   s        r/   test_bfgs_nan TestOptimizeSimple.test_bfgs_nan  s^    		#ffX[[h9""4V%@A88DG$$$$ :99s   :A11
A?c                    S n[         R                  " SS9   [        R                  " US5      nS S S 5        [         R                  " WS   5      (       d   eUS   SL d   eS nS	 n[         R                  " SS9   [        R                  " USUS
9nS S S 5        [         R                  " US   5      (       d   eUS   SL d   eg ! , (       d  f       N= f! , (       d  f       NJ= f)Nc                 "    [         R                  $ rC   r+   r	  r-   s    r/   r   5TestOptimizeSimple.test_bfgs_nan_return.<locals>.func      66Mr2   r   r  r   r   r   Fc                 2    U S:X  a  S$ [         R                  $ rq  r  r-   s    r/   r   r    s    Q1*BFF*r2   c                 .    [         R                  " U 5      $ rC   r  r-   s    r/   r   7TestOptimizeSimple.test_bfgs_nan_return.<locals>.fprime  r  r2   )r   )r+   r  r   r   r
  )rt   r   rl  r   s       r/   test_bfgs_nan_return'TestOptimizeSimple.test_bfgs_nan_return  s    	[[*&&tQ/F + xxu&&&&i E)))	+	#[[*&&tQF;F + xxu&&&&i E))) +* +*s   C<C
C
C%c           	         [         R                  " [         R                  " S5      5      [         R                  R	                  [        U R                  5      5      -  n[        R                  " U R                  U R                  USU R                  SS9n[        U R                  U5      U R                  U R                  5      SS9  g )Nra   r   F)r>   r   rm   r   r=   r   )r+   sqrtspacingr9   randr  rl   r   r   r   rk   rm   r   )rt   r>   r   s      r/   test_bfgs_numerical_jacobian/TestOptimizeSimple.test_bfgs_numerical_jacobian  s     ''"**R.)BIINN3t}};M,NN##DIIt/?/?,3",0LLuF 			&)499T]]+C!	#r2   c                     / SQn/ SQn[         R                  " X5       Hl  u  p4[        R                  " U R                  U R
                  X4S9n[        U R	                  UR                  5      U R	                  U R                  5      SS9  Mn     g )N)r   r   TNC2-point3-pointN)r   r   r=   r   )		itertoolsproductr   r   r   rk   r   r.   rl   )rt   methodsjacsr   r   rl  s         r/   test_finite_differences_jac.TestOptimizeSimple.test_finite_differences_jac  sm    '+$,,W;KF&&tyy$2B2B.4?FDIIfhh/4==1I!%' <r2   c           
      ,   / SQn[         [        R                  4-   n[        R                  " X5       Hg  u  p4U[        R                  L a  U" 5       n[        R
                  " U R                  U R                  X0R                  US9nUR                  (       a  Mg   e   / SQnU H[  n[        R                  " [        5         [        R
                  " U R                  U R                  X0R                  S S9  S S S 5        M]     g ! , (       d  f       Mo  = f)N)trust-constrrj  	trust-ncgtrust-krylovr   r   r   )r+  r,  doglegtrust-exact)r   r   r   r#  r$  r   r   rk   r   r   r   r
   rU   )rt   r%  hessesr   r   rl  s         r/   test_finite_differences_hess/TestOptimizeSimple.test_finite_differences_hess  s     Mx}}..%--g>LFx}}$v&&tyy$2B2B.4)),02F >>>!> ? IFz*!!$))T-=-=)/YY'+- +* **s   6D
D	c                 P    S n[         R                  " US/SS9n[        USSSS9  g )Nc                      U S:  a  gU SU -  -   $ )Nr   gBra   r   r-   s    r/   r   /TestOptimizeSimple.test_bfgs_gh_2169.<locals>.f	  s    1u&2a4xr2         $@Fr  ra   r  r   r   )r   r   r   )rt   r   xss      r/   test_bfgs_gh_2169$TestOptimizeSimple.test_bfgs_gh_2169  s-    	 
 C5u5Cd6r2   c                 V   ^ U4S jn[        5       m[        R                  " USSSSS9  g )Nc                 Z   > U S   nUT;  d   eTR                  U5        SU S-  -  SU -  4$ )Nr   r   r5      )add)r.   xpseens     r/   r   :TestOptimizeSimple.test_bfgs_double_evaluations.<locals>.f  s9    1BT>!>HHRLad7BqD= r2   r  TrA   )r   r   tol)setr   r   )rt   r   r@  s     @r/   test_bfgs_double_evaluations/TestOptimizeSimple.test_bfgs_double_evaluations  s'    	! u!T&dEr2   c                    [         R                  " U R                  U R                  U R                  SU R
                  S9nUu  p#n[        U R                  U5      U R                  U R                  5      SS9  U R                  R                  S:X  d   U R                  R                  5       eU R                  R                  S:X  d   U R                  R                  5       e[        U R                  R                  SS / SQ/ S	Q/S
SS9  g )Nr   )r   rm   r=   r   r   r   rd   )g><gwT볹gUuAX?)re   gHg!mʲ3?r   rA   r   )r   fmin_l_bfgs_br   rk   r   rm   r   rl   rp   rx   rq   rr   ry   rt   r   r   r   ds        r/   test_l_bfgs_b TestOptimizeSimple.test_l_bfgs_b  s    ''		43C3C(,		04> #q		&)499T]]+C!	#
 ~~1$6dnn&6&66$~~1$6dnn&6&66$ 	

Qq)D68"	/r2   c                     [         R                  " U R                  U R                  SU R                  S9nUu  p#n[        U R                  U5      U R                  U R                  5      SS9  g )NT)approx_gradrm   r=   r   )r   rH  r   rk   rm   r   rl   rI  s        r/   test_l_bfgs_b_numjac'TestOptimizeSimple.test_l_bfgs_b_numjac3  s[    ''		43C3C4804> #q		&)499T]]+C!	#r2   c                    ^  U 4S jn[         R                  " UT R                  T R                  S9nUu  p4n[	        T R                  U5      T R                  T R                  5      SS9  g )Nc                 H   > TR                  U 5      TR                  U 5      4$ rC   )r   r   )r.   rt   s    r/   r   4TestOptimizeSimple.test_l_bfgs_b_funjac.<locals>.fun@  s    99Q<1--r2   rm   r=   r   )r   rH  rk   rm   r   r   rl   )rt   r   r   r   r   rJ  s   `     r/   test_l_bfgs_b_funjac'TestOptimizeSimple.test_l_bfgs_b_funjac>  s\    	. ''T-=-=04> #q		&)499T]]+C!	#r2   c                     " S S5      nU" 5       n[         R                  " [         R                  SS/SUSS0S9n[        UR                  S5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  S5        UR                  S	L d   e[        UR                  S
5        g )Nc                        \ rS rSrS rS rSrg):TestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.CallbackiN  c                 .    SU l         S U l        S U l        g rq  )r  r   r.   rs   s    r/   __init__CTestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callback.__init__O  s    r2   c                 p    Xl         [        R                  " U5      U l        U =R                  S-  sl        g r(   )r.   r   r   r   r  rt   r.   s     r/   __call__CTestOptimizeSimple.test_l_bfgs_b_maxiter.<locals>.Callback.__call__T  s$    #>>!,Ar2   )r   r  r.   Nr   r   r   r   r[  r_  r   r   r2   r/   CallbackrY  N  s    
r2   rb  re   l-bfgs-brm   r   )r   callbackr   r)   Fz+STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT)r   r   r   r   r  r   r.   r   r   r   message)rt   rb  rx   r   s       r/   test_l_bfgs_b_maxiter(TestOptimizeSimple.test_l_bfgs_b_maxiterK  s    		 		 JR)*YND 	SWWa CEE133'CGGQUU+SZZ#{{e###S[[B	Dr2   c                    SU R                   S.n[        R                  " U R                  U R                  SU R
                  US9n[        U R                  UR                  5      U R                  U R                  5      SS9  U R                  R                  UR                  :X  d   eS=U R                  l
        U R                  l
        [        R                  " U R                  U R                  SUS9nU R                  R                  UR                  :X  d   e[        U R                  UR                  5      U R                  U R                  5      SS9  S=U R                  l
        U R                  l
        [        R                  " U R                  U R                  S	SUS
9nU R                  R                  UR                  :X  d   e[        U R                  UR                  5      U R                  U R                  5      SS9  g )NFr   rm   L-BFGS-Br   r   r   r=   r   r   r
  r"  r   r   r   )rm   r   r   r   rk   r   r   r.   rl   rq   rx   r   rp   r   )rt   r   rZ   ras       r/   test_minimize_l_bfgs_b)TestOptimizeSimple.test_minimize_l_bfgs_be  s   $,,7dii)9)9%/TYY&*, 			!##		$--(@!	#~~166))).//4>>+tyy$*:*:&0$@ ~~277***		"$$4==)A!	# /0/4>>+tyy$*:*:	&0$@~~277***		"$$4==)A!	#r2   c           	      <   S nS H  nSU R                   US.n[        R                  " U R                  U R                  SU R
                  US9nU R                  UR                  5      nUc  UnOXQ:  d   e[        XPR                  U R                  5      US9  M     g )N)r@   r  rA   r  F)r   rm   r  rj  rk  r   )	rm   r   r   r   rk   r   r.   r   rl   )rt   v0rC  r   r   vs         r/   test_minimize_l_bfgs_b_ftol.TestOptimizeSimple.test_minimize_l_bfgs_b_ftol  s    ,C!dllCHD##DIIt/?/?+5499,02C 		#%% AzvvAyy7cB -r2   c           	          [         R                  " [         R                  [        R                  " SS/5      S[         R
                  SSS.S9nUR                  (       a   eg )Nr  ra   rj  Fr)   )r   maxlsrk  )r   r   r   r+   rP   r   r   )rt   r   s     r/   test_minimize_l_bfgs_maxls-TestOptimizeSimple.test_minimize_l_bfgs_maxls  sK    $0E'1x7I7I16(CE ;;;r2   c                 h  ^^ [         R                  m[         R                  n/ m[        R                  " SS5      nUU4S jnSu  pEn[         R
                  " X2XS9  [        S [        TUS  5       5       5      u  pxXX-   n	[        TS U 5      n
[         R
                  " TX!U	S9u  pn[        X5        g )Nr   rf   c                 :   > T" U 5      nTR                  U5        U$ rC   )r~   )r.   valuer   valuess     r/   objfunMTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.objfun  s    aDEMM% Lr2   )   rO  i,  )r   maxfunc              3   ,   #    U  H
  u  pX!4v   M     g 7frC   r   ).0r  ys      r/   	<genexpr>PTestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption.<locals>.<genexpr>  s     A&@daA6&@s   )
r   r   r   r+   fullrH  max	enumerateminr   )rt   grY   r}  lowmediumhighrr  kr  targetxminrG  rJ  r   r|  s                 @@r/   *test_minimize_l_bfgs_b_maxfun_interruption=TestOptimizeSimple.test_minimize_l_bfgs_b_maxfun_interruption  s    NNWWQ	 )Tv!AAivw&@AA VDS\" ..q"vNA$'r2   c           	            S	S jn/ SQn[         R                  " [         R                  X![        SS9S9n[	        UR
                  SSSS9  g )
Nc                    UnU " U5      n	Sn
SnSnSnU(       a  U(       d  X:  a  SnUS-  n[        [        R                  " U5      5       Hh  nX   U-
  X   U-   4 H:  n[        R                  " U5      nUUU'   U " U/UQ76 nU
S-  n
UU	:  d  M4  Un	UnSnM<     Ub  U" U5        Uc  M_  X:  d  Mf  Sn  O   U(       a  U(       d  X:  a  M  [        R
                  " XUXS:  S9$ )Nr)   r   TFr   r.   r  r   r   )rR  r+   sizer   r   r   )r   rY   r   r  stepsizerm   rd  r   bestxbestyfuncallsniterimprovedstopdimstestxtestys                     r/   custmin/TestOptimizeSimple.test_custom.<locals>.custmin  s   EGEHEHD4EO 
 -C#j83UZ(5JK "%&c
 #E 1D 1 A 5=$)E$)E'+H L  + )h.@# . 4EO& **u50819O Or2   )g?r  r   皙?r   皙?r  r
  ra   r  r7  r   Nr@   rO  N)r   r   r   rx  r   r.   )rt   r  rY   r   s       r/   test_customTestOptimizeSimple.test_custom  sG    <?*.	O> ((,d(;=sD9r2   c                 t   ^^ SS/mSmUU4S jnSS/n[         R                  " [         R                  X!TTS9  g )N)r  r5   )r   rd   constraintsc                 V   > US   TL d   eUS   TL d   e[         R                  " 5       $ )Nr<  r  r   r   )r   rY   r   r<  r  s      r/   r  0TestOptimizeSimple.test_gh10771.<locals>.custmin  s8    8$...=)[888**,,r2   r)   )r   r<  r  )r   r   r   )rt   r  rY   r<  r  s      @@r/   test_gh10771TestOptimizeSimple.test_gh10771  s@     6"#	-
 V(.."!'[	Br2   c           	      J   S nS nS H  nUS;   a  S nOUn[         R                  " USS/USUS9n[         R                  " USS/USUS9nU" UR                  5      U" UR                  5      :  a  Mj   U S	U" UR                  5       S
U" UR                  5       35       e   g )Nc                 2    U u  pUS-  US-  -  US-  -   S-   $ )Nr5   r   r)   r   zr.   r  s      r/   r   <TestOptimizeSimple.test_minimize_tol_parameter.<locals>.func  s)    DAa419q!t#a''r2   c                 p    U u  p[         R                  " SU-  US-  -  SUS-  -  -   SUS-  -  U-  /5      $ )Nr5   r   rd   r+   rP   r  s      r/   dfunc=TestOptimizeSimple.test_minimize_tol_parameter.<locals>.dfunc  sB    DA88QqSAX!Q$.!Q$q9::r2   
rb  powellr#  r  rv  rc  tnccobylar  slsqprb  r  r  r  r5   r  )r   rC  r   ra   : z vs. )r   r   r.   )rt   r   r  r   r   sol1sol2s          r/   test_minimize_tol_parameter.TestOptimizeSimple.test_minimize_tol_parameter  s    	(	;4F FF$$TAq6s,24D$$TAq6s,24D<$tvv,. BXRTVV~U4<.AB.4r2   r   r   ignore::RuntimeWarningr   )rG  r,  r   r   r  rH  fmin_tnc
fmin_slsqpc                   ^^
 TS;   a  S nO0[         R                  n[         R                  n[         R                  n[        R
                  " S5      n0 nTR                  S5      (       a:  [        [         T5      nTS:X  a  SUS'   OCTS:X  a  S	US
'   O7TS;   a  SUS'   O+SUS'   O%U4S jnTS:X  a  [        S	S9US'   O[        SS9US'   TS;   a  WUS'   OTS;   a  WUS'   OTS;   a
  WUS'   WUS'   / m
U
4S jnU" X%4SU0UD6  [        T
5      S:  d   e[        S T
 5       5      (       d   e[        R                  " T
S5      n	[        S U	 5       5      (       a   eg )N)r  rH  c                 Z    [         R                  " U 5      [         R                  " U 5      4$ rC   )r   r   r   r-   s    r/   r   DTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.func  s!    ~~a((*<*<Q*???r2   r   rG  r  r   iterr  rO  r  )rG  r,  i  rm   c                  :   > TUS'   [         R                  " U 0 UD6$ )Nr   r   r   )akwr   s     r/   routineGTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.routine#  s"    %8((!2r22r2   r  r  r   rT  )r  r   )rv  r   r,  r/  r+  r.  r*  r   c                    > [        U [        R                  5      (       a   eTR                  U [        R
                  " U 5      45        g rC   )
isinstancer   r   r~   r+   r   )r.   r   r  resultss      r/   rd  HTestOptimizeSimple.test_minimize_callback_copies_array.<locals>.callback8  s4    !!X%<%<====NNArwwqz?+r2   rd  r5   c              3   V   #    U  H  u  p[         R                  " X:H  5      v   M!     g 7frC   )r+   rO   r  r.   r  s      r/   r  ITestOptimizeSimple.test_minimize_callback_copies_array.<locals>.<genexpr>A  s     6gda266!&>>gs   ')c              3   `   #    U  H$  u  p[         R                  " US    US    5      v   M&     g7f)r   N)r+   may_share_memoryr  s      r/   r  r  C  s*     P<41r**1Q4166<s   ,.)r   r   r   r   r+   ri   
startswithgetattrrx  r  rO   r#  combinationsany)rt   r   r   r   r   rY   r  r  rd  r  r  s    `        @r/   #test_minimize_callback_copies_array6TestOptimizeSimple.test_minimize_callback_copies_array  s    22@ >>D$$C&&DXXb\ V$$h/G%!"v:%#&x 22$(y!$%y!3 $($4y!$(Oy!]""F8~%F5M ( (F5M!F6N 	, 	686v6 7|a6g66666 --gq9P<PPPPPPr2   r  c                 r   S nS n[         R                  " S/5      nU" U5      nUnUS:X  a	  [        SS9O[        SS9nUS;   a  S n[        R                  " X$XaUS	9n[        U" UR                  5      UR                  5        US
:X  a  [        R                  " S5        U" UR                  5      U::  d   eg )Nc                     U S-
  S-  $ r4   r   r-   s    r/   r   1TestOptimizeSimple.test_no_increase.<locals>.funcL      EA:r2   c                     SU S-
  -  S-  S-
  $ )Nr5   r)   ri  r   r-   s    r/   bad_grad5TestOptimizeSimple.test_no_increase.<locals>.bad_gradO  s     a!e9#a''r2          @r  r=  r  rT  r  rl  r  zSLSQP returns slightly worse)
r+   rP   rx  r   r   r   r.   r   r   r  )	rt   r   r   r  rY   f0r   r   r   s	            r/   test_no_increase#TestOptimizeSimple.test_no_increaseE  s    		(
 XXse_"X%+u_$b/$r:JBBCc(/1T#%%[#''*WLL78CEE{b   r2   c                     S nS n[         R                  " / SQ5      n[        R                  " XSSUS.S9n[	        UR
                  [         R                  " / SQ5      S	-  S
S9  g )Nc                 P    [        U [        R                  " / SQ5      -
  S-  5      $ )N)ra   r  rd  r  r5   )rE   r+   rP   r-   s    r/   r   7TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.fd  s!    BHH%566:;;r2   c                     [         R                  " / SQ/ SQ/5      n[         R                  " [         R                  " X5      [         R                  " SS/5      -   U /5      $ )N)ri  ri  ri  ri  )r  r  ri  r   r   )r+   rP   concatenater|   r.   r  s     r/   cons:TestOptimizeSimple.test_slsqp_respect_bounds.<locals>.consg  sE    *,<=>A>>266!<"((Ar72C#CQ"GHHr2   )rc   ra   r8   r  r  ineqtyper   r   r  )re   r5   r   r   rd   g-q=r   )r+   rP   r   r   r   r.   )rt   r   r  rY   r   s        r/   test_slsqp_respect_bounds,TestOptimizeSimple.test_slsqp_respect_boundsb  sY    	<	I XX()g5;D,IKrxx6q8uEr2   )r  r'  r   r   rj  rj  SLSQPr*  r.  r+  r/  r,  r  c           	         Sn[         R                  " S5      n[        [        R                  US[        R
                  [        R                  S S 5      nU[        US9S.nUS;   a  UR                  US'   O$US;   a  UR                  US'   UR                  US	'   [        R                  " UR                  U40 UD6nUR                  U:X  d   eUR                  UR                  :  d   e[        US
5      (       a  UR                  UR                   :  d   eUS:X  a  UR"                  S:X  d   eg US:X  a  UR"                  S:X  d   eg g )Nr   r   r   rT  r
  )rj  r   r  r   r   r  r   r  r   )r+   ri   r   r   r   r   r   rx  r   r   r   r   r  r   rz   r   ngevr   )rt   r   MAXITERrY   sfr  r   s          r/   test_respect_maxiter'TestOptimizeSimple.test_respect_maxiterp  s)    XXb\HNNBH4F4F$//t= #tG/DE^#GGF5M ( (GGF5MWWF6N5f5ww'!!!xx277"""388rww&&& W::?"?x::?"?  r2   )r  r'  rG  r,  c           	         [         R                  " S5      n[        [        R                  US[        R
                  [        R                  S S 5      nSSS.n[        R                  " [        SS9   UR                  S5      (       a%  [        [        U5      nU" UR                  U40 UD6  O [        R                  " UR                  X!US	9  S S S 5        g ! , (       d  f       g = f)
Nr   r   r)   Tr  zMaximum number of iterationsr   rG  r
  )r+   ri   r   r   r   r   r   r   warnsRuntimeWarningr  r  r   r   )rt   r   rY   r  r   r  s         r/   test_runtime_warning'TestOptimizeSimple.test_runtime_warning  s     XXb\HNNBH4F4F$//t=.\\. ?A  ((!(F3.g.!!"&&"WMA A As   0AC
C#c                    Sn[         R                  n[         R                  n[         R                  nS nSUS.4n[        R
                  " S5      n[         R                  " X'XcUS[        US9S9nUR                  U:X  d   eg )	Nr   c                 `    [         R                  " SU S   -  SU S   -  -
  SU S   -  -
  /5      $ )NrM   r   皙?r)   Q?r5   r  r-   s    r/   r   RTestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints.<locals>.fun  s6    88S1Q4Z#!*4tad{BCDDr2   r  r  r   r*  rT  )r  r   r   r   r   )	r   r   r   r   r+   ri   r   rx  r  )	rt   r   r   r   r   r   r  rY   r   s	            r/   2test_respect_maxiter_trust_constr_ineq_constraintsETestOptimizeSimple.test_respect_maxiter_trust_constr_ineq_constraints  s     NN  ""	E  XXb\4t'5(,W(=? ww'!!!r2   c                 D   S nS n[         R                  " S/5      n[        R                  " X5      n[        R                  " XSUS./S9n[        R                  " XS/S9n[        R                  " XSUS./S/S	9n[        R                  " XSUS./S
/S	9nXEXgU4 H  n	U	R                  (       a  M   e   [        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  [        UR                  SSS9  g )Nc                     U S-  $ r]  r   r-   s    r/   r   6TestOptimizeSimple.test_minimize_automethod.<locals>.f      a4Kr2   c                     U S-
  $ r]  r   r-   s    r/   r  9TestOptimizeSimple.test_minimize_automethod.<locals>.cons  s    q5Lr2   r6  r  r  )r  )r   r   r<  )r  r<  r)   r   r   rA   r   r5   r   )r+   rP   r   r   r   r   r.   )
rt   r   r  rY   sol_0sol_1sol_2sol_3sol_4r   s
             r/   test_minimize_automethod+TestOptimizeSimple.test_minimize_automethod  s   		 XXse_!!!(!!!v>B7D 6E F!!!	:!!!8>t/L.M*14 !!!8>t/L.M*14 %6C;;;; 7.....r2   c                     S nSS jn[         R                  " / SQ5      n[         R                  R                  [	        U5      5      n[
        R                  " XX#SS9  g )Nc                 8    [         R                  " X-
  S-  5      $ r]  r^  r.   rx   s     r/   Y=TestOptimizeSimple.test_minimize_coerce_args_param.<locals>.Y  s    6613(##r2   c                     SX-
  -  $ r]  r   r!  s     r/   dY_dxATestOptimizeSimple.test_minimize_coerce_args_param.<locals>.dY_dx  s    ac7Nr2   )rd   r)   r   r)   r   r   r5   r   r   rd   r   r   )r   r   r   rC   )r+   rP   r9   randnr  r   r   )rt   r"  r%  rx   xinits        r/   test_minimize_coerce_args_param2TestOptimizeSimple.test_minimize_coerce_args_param  sE    	$	 HH67		A'!Gr2   c           	        ^	^
^ / SQn/ SQnU	U
U4S jnU
4S jn[         R                  " X5       H  u  m
nUS;   a  [        T
S-  S9nO
[        5       nT
S:  a  US	;   a  M1  S
/mS /m	[        R                  " UTXEUS9nU ST
 ST	 SU 3nUR
                  (       d   U5       e[        UR                  S/US9  UR                  S::  d   U5       eT
S:  a1  US;   a  [        T	S   SUS9  M  T	S   S:  a	  T	S   S:  d   U5       eM  M     g )N)gJz5r)   gd~QJ)r   r   rj  rj  c                    > TS   c#  U S   TS   :w  a  [        U S   TS   -
  5      TS'   [        U 5      R                  5       S:  a  [        S5      eTU S   S-
  S-  -  $ )Nr   g     @zOptimization stepped far away!r)   r5   )rR   r  AssertionError)r.   first_step_sizescalerY   s    r/   r   7TestOptimizeSimple.test_initial_step_scaling.<locals>.f  sl    q!)adbem%(11%6"1vzz|c!$%EFF!A$(Q&&r2   c                 D   > [         R                  " TU S   S-
  -  /5      $ Nr   r)   r  )r.   r/  s    r/   r  7TestOptimizeSimple.test_initial_step_scaling.<locals>.g  s"    88UAaD1H-.//r2   )r   r   r  )r  r  )rj  rj        rl   r  ra   err_msgrd   r   g)\(?rc   )	r#  r$  rx  r   r   r   r   r.   r  )rt   scalesr%  r   r  r   r   r   r7  r.  r/  rY   s            @@@r/   test_initial_step_scaling,TestOptimizeSimple.test_initial_step_scaling  s1    "9	'	0 '..v?ME6'E$J/&u}+D!DB#fO##Arq,35C  %?*;2cUCG;;'';CEEC5':77a<((<u}^+#OA$6gN +1-38JQ8NWPWWN8N ? @r2   )rb  r  r#  r  rv  rc  r  r  r  r  r*  r.  r+  r/  r,  c                 .  ^^ US:  a  US:X  a  [         R                  " S5        [        R                  R	                  S5      mS/mS nUU4S jnS nS	 n[        R
                  " S
/5      nUS;   nUS;   n	X4/n
U(       a  U/OUS /nU	(       a  U/OUS /nUS:X  a	  [        SS9O[        SS9n[        R                  " SS9   [        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        [        R                  " XU5       H8  u  nnnS/m[        R                  " XUUUUS9n[!        UR"                  S5        M:     S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr)   r  z,COBYQA does not support concurrent executionr:   r   c                 "    [         R                  $ rC   r  r-   s    r/   r   0TestOptimizeSimple.test_nan_values.<locals>.func  r  r2   c                 p   > TS==   S-  ss'   TS   S:  a  [         R                  $ TR                  5       $ r  )r+   r	  r  )r.   countr?   s    r/   func21TestOptimizeSimple.test_nan_values.<locals>.func2"  s0    !HMHQx!|vvxxz!r2   c                 0    [         R                  " S/5      $ Nra   r  r-   s    r/   r   0TestOptimizeSimple.test_nan_values.<locals>.grad)  s    88SE?"r2   c                 2    [         R                  " S//5      $ rC  r  r-   s    r/   r   0TestOptimizeSimple.test_nan_values.<locals>.hess,  s    88cUG$$r2   ra   rv  r,  r/  r+  r.  r,  r/  r+  r.  r  r=  r  rT  r   r  delta_grad == 0.*.*does not use Hessian.*.*does not use gradient.*)r   r   r   r   F)r   skipr+   r9   RandomStaterP   rx  r  r	   filterUserWarningr  r#  r$  r   r   r   r   )rt   r   num_parallel_threadsr   r@  r   r   rY   
needs_grad
needs_hessfuncsgradshesssr   supr   r  hr   r?  r?   s                      @@r/   test_nan_values"TestOptimizeSimple.test_nan_values  sg     !#((:KKFG ii##D)		"	#	% XXse_  7 7
  * *
 $4,$4,%+u_$b/$r:J[[*,=,?3JJ{$78JJ~'ABJJ~'BC$,,U5A1a''11V079S[[%0	 B -@**,?,?**s%   FBE5$F5
F	?F
F)rb  r#  r  rc  r  r  r  r  r*  r.  r+  r/  r,  c           
         S =p#US;   a  U R                   nUS;   a  U R                  n[        R                  " SS9   [	        5        nUR                  [        S5        [        R                  " U R                  U R                  XUS9  S S S 5        S S S 5        [        S[        U R                  R                  5      5       H^  n[        R                  " U R                  R                  US-
     U R                  R                  U   5      (       d  MR  [!        SU 35      e   g ! , (       d  f       N= f! , (       d  f       N= f)	NrG  rH  r   r  rI  r-  r)   zDuplicate evaluations made by )r   r   r+   r  r	   rN  rO  r   r   r   rk   rR  r  rr   ry   array_equalr{   )rt   r   r   r   rV  r  s         r/   test_duplicate_evaluations-TestOptimizeSimple.test_duplicate_evaluationsF  s      - -))C    99D[[*,=,?3JJ{$78dii)9)9%+4A -@* q#djjll+,A~~djjll1q514::<<?CC"4VH=? ? - -@,?**s$   D6AD%	D6%
D3	/D66
Enew_cb_interface)r   r)   r5   c                   ^
^^ U4S jmSTl         U4S jnU4S jnSmUS:X  a  U
U4S jnO"US:X  a   " U
U4S	 jS
5      nU" 5       nOU
4S jnU
U4S jm
ST
l        ST
l         S/S-  UTX4S.n[        R                  " S0 UDSU0D6nUS:X  a  TS-   mUS:X  aC  [        R                  " S0 UDSST00D6n	UR                  U	R                  s=:X  a  T:X  d   e   eOB[        R                  " S0 UDSST00D6n	UR
                  U	R
                  s=:X  a  T:X  d   e   eUR                  U	R                  :X  d   e[        UR                  U	R                  5        UR                  US;   a  SOS:X  d   eg )Nc                 >   > STl         [        R                  " U 5      $ NF)flagr   r   r.   r   s    r/   r   9TestOptimizeSimple.test_callback_stopiteration.<locals>.fg  s    AF>>!$$r2   Fc                 >   > STl         [        R                  " U 5      $ ra  )rb  r   r   rc  s    r/   r  9TestOptimizeSimple.test_callback_stopiteration.<locals>.gl  s    AF%%a((r2   c                 >   > STl         [        R                  " U 5      $ ra  )rb  r   r   rc  s    r/   rW  9TestOptimizeSimple.test_callback_stopiteration.<locals>.hp  s    AF&&q))r2   r   r)   c                 X   > U R                   T" U R                  5      :X  d   eT" 5         g rC   r   r.   )intermediate_resultrd  r   s    r/   callback_interfaceJTestOptimizeSimple.test_callback_stopiteration.<locals>.callback_interfacew  s(    *..!4G4I4I2JJJJ
r2   r5   c                   ,   > \ rS rSrS\4U U4S jjrSrg)@TestOptimizeSimple.test_callback_stopiteration.<locals>.Callbacki{  rk  c                 X   > UR                   T" UR                  5      :X  d   eT" 5         g rC   rj  )rt   rk  rd  r   s     r/   r_  ITestOptimizeSimple.test_callback_stopiteration.<locals>.Callback.__call__|  s(    .22a8K8M8M6NNNNJr2   r   N)r   r   r   r   r   r_  r   )rd  r   s   r/   rb  ro  {  s      r2   rb  c                    > T" 5         g rC   r   )xkr   rd  s     r/   rl  rm    s    
r2   c                     > T =R                   S-  sl         ST l        T R                   T:X  a  ST l        [        5       eg )Nr)   FT)r  rb  StopIteration)rd  rm   s   r/   rd  @TestOptimizeSimple.test_callback_stopiteration.<locals>.callback  s7    JJ!OJ!HMzzW$ $#o% %r2   r   r  )rY   r   r   r   r   rd  rb  r  r   r  rm   )r*  r  rd   c   r   )
rb  r  r   r   r   r  r   r   r.   r   )rt   r   r^  r  rW  rl  rb  r  r   r  rd  r   rm   s             @@@r/   test_callback_stopiteration.TestOptimizeSimple.test_callback_stopiteration`  s   	% 	)	* q  "  "*	& 
a611 F&F3EF]"kGX##JfJx6IJC88sxx2722222##KfKy'6JKC77cgg000000ww#''!!!SUUCEE"zz6 .
 $
a  	 r2   c                     Sn[        [        US9   [        R                  " S [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = f)Nz"'x0' must only have one dimension.r   c                     U $ rC   r   r-   s    r/   r  4TestOptimizeSimple.test_ndim_error.<locals>.<lambda>  s    r2   )r5   r)   )rT   rU   r   r   r+   onesrt   r  s     r/   test_ndim_error"TestOptimizeSimple.test_ndim_error  s5    2:S1k2776?; 211s   -A
A)rb  rc  r  r  r  r  r*  c                 ~   S n[        SS/SS/5      nSn[        R                  " [        US9   [        R
                  " U/ SQXS	9  S S S 5        [        / S
Q/ SQ5      nSn[        R                  " [        US9   [        R
                  " U/ SQXS	9  S S S 5        g ! , (       d  f       N[= f! , (       d  f       g = f)Nc                 4    [         R                  " U S-  5      $ r]  r^  r-   s    r/   r   :TestOptimizeSimple.test_minimize_invalid_bounds.<locals>.f  ra  r2   r)   r5   rd   r   z?The number of bounds is not compatible with the length of `x0`.r   )r)   r5   rd   rY   r   r<  )r)   r   r)   )rd   r   r5   z:An upper bound is less than the corresponding lower bound.)r   r   r
   rU   r   r   )rt   r   r   r<  r  s        r/   test_minimize_invalid_bounds/TestOptimizeSimple.test_minimize_invalid_bounds  s    	  AA'O]]:S1aIfL 2 	9-J]]:S1aIfL 21 21
 21s   B;B.
B+.
B<)r  r#  rv  r  c                 V   US:X  a  0 OS[         R                  0nUS:X  a  [        O[         R                  nSSS.n[        R
                  " USS9   [         R                  " S S	S	/4XS
.UD6  S S S 5        SUS'   [         R                  " S S	S	/4XS
.UD6  g ! , (       d  f       N1= f)Nr  r   Tr   ri  Maximum numberr   c                 .    [         R                  " U 5      $ rC   r   r   r-   s    r/   r  BTestOptimizeSimple.test_minimize_warnings_gh1953.<locals>.<lambda>  s    q(9r2   r   r
  Fr   c                 .    [         R                  " U 5      $ rC   r  r-   s    r/   r  r    s    HNN1$5r2   )r   r   r  r  r   r  r   )rt   r   r  warning_typer   s        r/   test_minimize_warnings_gh19530TestOptimizeSimple.test_minimize_warnings_gh1953  s    
 x'eX5G5G-H*0(*:%55 	  B/\\,.>?9Aq6 H%+H@FH @  51v 	D!'	D<B	D @?s   B
B(r   N).r   r   r   r   r  r  r  r'  r1  r9  rE  rK  rO  rU  rf  rn  rs  rw  r  r  r  r  r   r  	fail_slowr  r  r   r  r  r  r  thread_unsafer  r  r  r)  r9  rX  r\  r   rx  r  r  r  r   r   r2   r/   r  r    s   	%*.
#'-47	F/.	##D4#8C"(4$:LBB2 [[2[[ 56[[ 89[[X,.>?@;Q	@ : 7 ;Qz [[X (L M!M!4F [[X (2 3
#3
#@ [[[[X (? @N@ N"(/4
H0d [[X (G H
.1H
.1` [[X (G H
?H
?* [[ 89[[X'>?[[/;; < @ :;z<
 [[X (8 9M9M [[[[X'LMD N Dr2   r  r   )rc  r  r'  r  r  c                     S n[         R                  " USS/U S9nUR                  (       d   e[        UR                  S/SS9  g )Nc                 4    [         R                  " U S-  5      $ r]  r^  r-   s    r/   r   $test_minimize_with_scalar.<locals>.f  r  r2      )rB  rO  rc  re   r   r   )r   r   r   r   r.   )r   r   r   s      r/   test_minimize_with_scalarr    s?     

Ar;-
GC;;;CEEC5t,r2   c                       \ rS rSrS rSS jrSS jrSS jrS rS r	S r
\R                  R                  S	S
S/SS
/S
S
//5      S 5       rS rSrg)TestLBFGSBBoundsi  c                      SU l         SU l        g )N))r)   NNN)r)   r   r<  rl   rs   s    r/   ru   TestLBFGSBBounds.setup_method  s    /r2   c                 0    SU-  US   U-  US   U-  -   -  $ )Nra   r   r)   r   r   s      r/   r   TestLBFGSBBounds.fun  s&    Qw!A$'AaD!G+,,r2   c                     XS-
  -  $ r(   r   r   s      r/   r   TestLBFGSBBounds.jac  s    q5zr2   c                 F    U R                  X5      U R                  X5      4$ rC   r   r   r   s      r/   fjTestLBFGSBBounds.fj  s    xx~txx~--r2   c                     [         R                  " U R                  SS/U R                  U R                  S9u  pnUS   S:X  d
   US   5       e[        XR                  SS9  g )Nr   ri  )r   r<  r   taskr=   r   )r   rH  r   r   r<  r   rl   rt   r.   r   rJ  s       r/   test_l_bfgs_b_bounds%TestLBFGSBBounds.test_l_bfgs_b_bounds  s[    ((Ar70404=a }!,1V9,!==t4r2   c                     [         R                  " U R                  SS/SU R                  S9u  pnUS   S:X  d
   US   5       e[	        XR
                  SS9  g )	Nr   ri  r  )r   r<  r   r  r=   r   )r   rH  r  r<  r   rl   r  s       r/   rU  %TestLBFGSBBounds.test_l_bfgs_b_funjac  sT    ((1b'04=a}!,1V9,!==t4r2   c                     [         R                  " U R                  SS/SU R                  U R                  S9nUS   (       d
   US   5       e[        UR                  U R                  SS9  g )	Nr   ri  rj  r   r   r<  r   re  r=   r   )r   r   r   r   r<  r   r.   rl   r  s     r/   test_minimize_l_bfgs_b_bounds.TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds  sW    1b'*$(HHT[[B9~-s9~-~t}}48r2   r<  )r   r)   r  c           	          [         R                  " [        SS9   [        R                  " U R
                  SS/SU R                  US9  S S S 5        g ! , (       d  f       g = f)Nz	.*bound.*r   r   ri  rj  r  )r   r
   rU   r   r   r   r   )rt   r<  s     r/   'test_minimize_l_bfgs_b_incorrect_bounds8TestLBFGSBBounds.test_minimize_l_bfgs_b_incorrect_bounds  sC     ]]:[9dhhB
"&((6; :99s   /A
A c                    / SQnSS/n[         R                  " X5       Hi  u  p4[        R                  " U R                  SS/USX0R
                  SS 0S9nUS	   (       d
   US
   5       e[        UR                  U R                  SS9  Mk     g )Nr   r  r   r   ri  rj  finite_diff_rel_step)r   r   r   r<  r   r   re  r=   r   )	r#  r$  r   r   r   r<  r   r.   rl   )rt   r&  argssr   r   r   s         r/    test_minimize_l_bfgs_b_bounds_FD1TestLBFGSBBounds.test_minimize_l_bfgs_b_bounds_FD  s    
 ,"**47IC##DHHq"gD+5(+KK-CT,JLC y>13y>1>CEE4==t< 8r2   r  Nr  )r   r   r   r   ru   r   r   r  r  rU  r  r   r  r  r  r  r   r   r2   r/   r  r    sl    -.559 [[X
7	
7	
7	( 
;
;
=r2   r  c                   v   \ rS rSrS rS"S jrS r\R                  R                  S5      S 5       r
S rS rS	 rS
 rS rS r\R                  R#                  S/ SQ5      S 5       r\R                  R#                  S/ SQ5      S 5       r\R                  R                  S5      \R                  R#                  S/ SQ5      S 5       5       rS rS r\R                  R#                  SSS/5      S 5       r\R                  R                  S5      \R                  R#                  S\5      \R                  R#                  SSS/5      \R                  R#                  S/ SQ5      S 5       5       5       5       r\R                  R4                  \R                  R#                  S/ SQ5      S 5       5       rS rg!)#TestOptimizeScalari  c                     SU l         g )Nr8   rl   rs   s    r/   ru   TestOptimizeScalar.setup_method  s	    r2   c                     X-
  S-  S-
  $ )zObjective functionr5   r   r   )rt   r.   r  s      r/   r   TestOptimizeScalar.fun  s    zCr2   c                    [         R                  " U R                  5      n[        XR                  SS9  [         R                  " U R                  SS9n[        XR                  SS9  [         R                  " U R                  SS9n[        US   U R                  SS9  [         R                  " U R                  SS9n[        XR                  SS9  S	n[
        R                  " [        US
9   [         R                  " U R                  SS9  S S S 5        Sn[
        R                  " [        US
9   [         R                  " U R                  SS9  S S S 5        g ! , (       d  f       NR= f! , (       d  f       g = f)Nr=   r   r  r  brackTr   r   iri     /\(f\(xb\) < f\(xa\)\) and \(f\(xb\) < f\(xc\)\)r   ri  r   r)   \(xa < xb\) and \(xb < xc\)r   ri  r)   )r   brentr   r   rl   r   r
   rU   )rt   r.   re  s      r/   
test_brentTestOptimizeScalar.test_brent  s    NN488$==t4NN48884==t4NN4886!dmm$7NN488=9==t4D]]:W5NN488:6 6 1]]:W5NN488:6 65	 65 65s   - E0 E*
E'*
E8r   c                 &   [         R                  " U R                  5      n[        XR                  SS9  [         R                  " U R                  SS9n[        XR                  SS9  [         R                  " U R                  SS9n[        US   U R                  SS9  [         R                  " U R                  SS9n[        XR                  SS9  [         R                  " U R                  SS	9n[        XR                  5        / S
QnU HZ  n[         R                  " U R                  SSS9n[         R                  " U R                  USS9nUS   US   pe[        Xe-
  U5        M\     Sn[        R                  " [        US9   [         R                  " U R                  SS9  S S S 5        Sn[        R                  " [        US9   [         R                  " U R                  SS9  S S S 5        g ! , (       d  f       NR= f! , (       d  f       g = f)Nr=   r   r  r  Tr  r   r  rC  )r   r)   r   )rm   r   r5   r  r   r  r  r  )	r   goldenr   r   rl   r   r   r
   rU   )rt   r.   maxiter_test_casesrm   rY   nfev0r   re  s           r/   test_goldenTestOptimizeScalar.test_golden1  ss   OODHH%==t4OODHHH5==t4OODHH$7!dmm$7OODHHM:==t4OODHH!,==)&)G1$GB'tLAQ%14w/	 * E]]:W5OODHHJ7 6 1]]:W5OODHHJ7 65	 65 65s    G1 H1
G?
Hc                    [         R                  " U R                  SS5      n[        USSS9  [         R                  " U R                  SS5      n[        XR                  SS9  [         R                  " U R                  [
        R                  " S/5      [
        R                  " S/5      5      n[        XR                  SS9  [        [        [         R                  U R                  SS5        g )Nr   r)   r  r   r   r=   )	r   	fminboundr   r   rl   r+   rP   rT   rU   r^  s     r/   test_fminbound!TestOptimizeScalar.test_fminboundQ  s    txxA.14(txxA.==t4txx1#!F==t4j("4"4dhh1Er2   c                 j   [         R                  " [        SS9   [        R                  " U R
                  [        R                  " S5      S5        S S S 5        [        R                  " U R
                  S[        R                  " S5      5      n[        XR                  SS9  g ! , (       d  f       NY= f)Nz.*must be finite scalars.*r   r)   r5   r)   r   r=   r   )r   r
   rU   r   r  r   r+   ri   rP   r   rl   r^  s     r/   test_fminbound_scalar(TestOptimizeScalar.test_fminbound_scalar\  sp    ]]:-IJtxx&)91= K txxBHHQK8==t4	 KJs   7B$$
B2c                 :    S n[         R                  " USS5        g )Nc                     U S-  $ r]  r   r-   s    r/   r   ,TestOptimizeScalar.test_gh11207.<locals>.fund  r  r2   r   )r   r  )rt   r   s     r/   test_gh11207TestOptimizeScalar.test_gh11207c  s    	31%r2   c           	         [         R                  " U R                  5      R                  n[	        XR
                  SS9  [         R                  " U R                  SS9nUR                  (       d   e[         R                  " U R                  S[        SS9S9nUR                  (       a   e[         R                  " U R                  SS	SS
9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	S9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	SS
9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	SS
9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	S9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	SS
9R                  n[	        XR
                  SS9  [         R                  " U R                  SS	SS9R                  n[	        USSS9  [         R                  " U R                  SS	SS9R                  n[	        XR
                  SS9  [         R                  " U R                  [        R                  " S/5      [        R                  " S/5      4[        R                  " S/5      4SS9R                  n[	        XR
                  SS9  [        [        [         R                  U R                  SSS	S9  [        [        [         R                  U R                  [        R                  " S5      S4SS	S9  [         R                  " U R                  S[        R                  " S5      4SS9R                  n[	        XR
                  SS9  g )Nr=   r   Brentr   rd   rT  r
  r  r8   )bracketr   r   )r   r   r  r  )r   r)   Bounded)r<  r   r   r)   r  )r)   r   boundedr   r8   )r   r)   r<  r   r   r5   rc  )r   minimize_scalarr   r.   r   rl   r   rx  r+   rP   rT   rU   ri   r^  s     r/   test_minimize_scalar'TestOptimizeScalar.test_minimize_scalarh  s   $$TXX.00==t4$$TXXg>yyy$$TXXg-1!_>99}$$TXXx*1'CCD1 	
==t4$$TXXg*0223! 	
==t4$$TXX}*1'CCD1 	
==t4$$TXXx*1(DDEA 	
==t4$$TXXh*0223! 	
==t4$$TXX}*1(DDEA 	
==t4$$TXXf6,5778q 	
14($$TXXf7,5778q 	
==t4$$TXXrxx}79xx}7F+-88SE?*=,57 89q 	
 	==t4j(":":DHH#IG	E 	j(":":DHH hhqk1-ig	O $$TXXq"((1+6F,5778q 	
==t4r2   c           	            SS jn[         R                  " U R                  SU[        SS9S9n[	        UR
                  U R                  SS9  g )	Nc                 N   US   US   -   S-  nU " U5      n	Sn
SnSnSnU(       ah  U(       da  X:  a\  SnUS-  nX-
  X-   4 H  nU " U/UQ76 nU
S-  n
X:  d  M  Un	UnSnM      Ub  U" U5        Ub  X:  a  SnOU(       a  U(       d  X:  a  M\  [         R                  " XUXS:  S9$ )Nr)   r   r  TFr  r  )r   r  r   r  r  rm   rd  r   r  r  r  r  r  r  r  r  s                   r/   r  ?TestOptimizeScalar.test_minimize_scalar_custom.<locals>.custmin  s    QZ'!*,3EJEHEHD4EO 
#.0@AE--EMH} % %#' B 'UO%(*<D 4EO  **u50819O Or2   )r   r   r  r  )r  r   r   r=   r   r  )r   r  r   rx  r   r.   rl   )rt   r  r   s      r/   test_minimize_scalar_custom.TestOptimizeScalar.test_minimize_scalar_custom  sJ    AD*.	O8 &&txx.5/3T/BD 	t}}48r2   c                 B    [         R                  " U R                  SS9  g )Nr8   r   r   r  r   rs   s    r/   &test_minimize_scalar_coerce_args_param9TestOptimizeScalar.test_minimize_scalar_coerce_args_param  s      4r2   r   )r  r  r  c                 X    S H$  n[         R                  " U R                  SU0S9  M&     g )N)r   r)   r5   rd   r   )r   r  )rt   r   r   s      r/   	test_dispTestOptimizeScalar.test_disp  s&     !D$$TXX~F !r2   c                 J   US:X  a  SSS/0O0 n[         R                  " U R                  4SU0UD6n[        US5      (       d   e[        US5      (       d   e[        US5      (       d   e[        US	5      (       d   e[        US
5      (       d   e[        US5      (       d   eg )Nr  r<  r  r   r   r.   r   re  r   r   r  )r   r  r   rz   )rt   r   r  rl  s       r/   test_result_attributes)TestOptimizeScalar.test_result_attributes  s    *0I*=(S"I&2))$((L6LVLvs####vy))))vy))))vu%%%%vv&&&&vu%%%%r2   c                   ^ [         R                  R                  S5        S/mU4S jnSnSn[         R                  " SS9   [	        5        nUR                  [        S5        UR                  [        S	5        UR                  [        S
5        S/mUS:X  a  SU0O0 n[        R                  " U4SU0UDU[        SS9S.D6n[        UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr:   r   c                    > TS==   S-  ss'   TS   S:  a  [         R                  $ U S-  S[         R                  " U 5      -  -   $ )Nr   r)   r   r5   r@   )r+   r	  rD   )r.   r?  s    r/   r   0TestOptimizeScalar.test_nan_values.<locals>.func  s?    !HMHQx!|vv!tcBFF1Io--r2   r  r  r   r  rI  rJ  rK  r  r<  r  r=  rT  r
  F)r+   r9   r<   r  r	   rN  rO  r  r   r  rx  r   r   )	rt   r   r   r  r<  rV  r  r   r?  s	           @r/   rX  "TestOptimizeScalar.test_nan_values  s     			t	. [[*,=,?3JJ{$78JJ~'ABJJ~'BCCE+1Y+>h'BF**4 E E-3E<B373CEC e, -@**,?,?**s%   C<BC+C<+
C9	5C<<
D
c                     S n[         R                  " U5      n[        UR                  SSS9  [         R                  " USSS0S9n[        UR                  S	5        g )
Nc                     U S-  $ r]  r   r-   s    r/   r   CTestOptimizeScalar.test_minimize_scalar_defaults_gh10911.<locals>.f  r  r2   r   r  r   )r)   rO  r  r  )r<  r   r)   )r   r  r   r.   )rt   r   r   s      r/   %test_minimize_scalar_defaults_gh109118TestOptimizeScalar.test_minimize_scalar_defaults_gh10911  sT    	 &&q)qt,&&q07/?Aq!r2   c                    Sn[         R                  " [        US9   [        R                  " [
        R                  S[
        R                  4S9  S S S 5        [         R                  " [        US9   [        R                  " [
        R                  [
        R                  S4S9  S S S 5        g ! , (       d  f       Nd= f! , (       d  f       g = f)Nz+Optimization bounds must be finite scalars.r   r)   r  )	r   r
   rU   r   r  r+   rD   r  r	  r~  s     r/   'test_minimize_non_finite_bounds_gh10911:TestOptimizeScalar.test_minimize_non_finite_bounds_gh10911  sz     <]]:S1$$RVVQK@ 2]]:S1$$RVVRVVQK@ 21 2111s   4B.14B?.
B<?
Cr  r  c                     Sn[         R                  " [        US9   [        R                  " [
        R                  USS9  S S S 5        g ! , (       d  f       g = f)Nz'Use of `bounds` is incompatible with...r   r  r   r<  )r   r
   rU   r   r  r+   rD   )rt   r   r  s      r/   2test_minimize_unbounded_method_with_bounds_gh10911ETestOptimizeScalar.test_minimize_unbounded_method_with_bounds_gh10911  s9     8]]:S1$$RVVF6J 211s   %A


Ar  rC  r)   r=   fshape)r   r)   r)   r)   c                 b  ^ U4S jnSu  pVUS:w  a
  [        XV4S9O	[        XV4S9nUR                  [        XS95        [        R                  " U40 UD6nUR                  R
                  UR                  R
                  s=:X  a(  U" UR                  5      R
                  s=:X  a  T:X  d   e   eg )Nc                 T   > [         R                  " U S-  5      R                  T5      $ Nr   )r+   rP   reshape)r.   r  s    r/   r   ITestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196.<locals>.f!  s     88AqD>))&11r2   )r!  rM   r  )r  r  )r   rC  )rx  updater   r  r.   shaper   )	rt   r   rC  r  r   r  br  r   s	      `     r/   +test_minimize_scalar_dimensionality_gh16196>TestOptimizeScalar.test_minimize_scalar_dimensionality_gh16196  s    	2 *0I*=$v&A6* 	d&23&&q3F3uu{{cggmmGqx~~GGGGGGr2   )r  r  r  c                     S n0 nUS:X  a  SOSnSS/X4'   SSS	.n[         R                  " [        R                  S
S9   [        R                  " U4XS.UD6  S S S 5        SUS'   [        R                  " U4XS.UD6  g ! , (       d  f       N-= f)Nc                     U S-
  S-  $ r4   r   r-   s    r/   r   BTestOptimizeScalar.test_minimize_scalar_warnings_gh1953.<locals>.f1  r  r2   r  r<  r  r  r   Trd   ri  r  r   r
  Fr   )r   r  r   r  r  )rt   r   r   r  kwdr   s         r/   $test_minimize_scalar_warnings_gh19537TestOptimizeScalar.test_minimize_scalar_warnings_gh1953,  s    
	  I-h92hA.\\(22:JK$$Q /v /'-/ L    M6MfM LKs   A??
Br  Nr  )r   r   r   r   ru   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  rX  r  r  r
  r   r  r  r  r   r   r2   r/   r  r    s    7* [[ 568 78>	F5&
:5x!9F5 [[X'EFG GG
 [[X'EF& G& [[ 56[[X'EF- G 7-:"A [[X':;K <K [[ 89[[X'>?[[UQI.[[X'9:H ; / @ :H [[[[X'EFN G Nr2   r  c                       \ rS rSr\R
                  R                  S5      S 5       r\R
                  R                  SS5      S 5       r	Sr
g)	TestBracketiA  r  c                    S nSn[         R                  " [        US9   [        R                  " USS5        S S S 5        [         R                  " [        US9   [        R                  " US[
        R                  5        S S S 5        [         R                  " [        US9   [        R                  " USS9  S S S 5        [         R                  " [        US9   [        R                  " USS9  S S S 5        S nS	n[         R                  " [        US9   [        R                  " US
SSS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nc                 0    SU :  U S:  -  (       a  U S-  $ S$ Nri  r)   r5   g      Y@r   r-   s    r/   r   3TestBracket.test_errors_and_status_false.<locals>.fF       !VA.1a4:U:r2   9The algorithm terminated without finding a valid bracket.r   ri  r)   r  r  c                 Z    SU S-  -  SU S-  -  -   SU S-  -  -
  SU S-  -  -   SU -  -
  S-   $ )	Nr  r   r      rd      r5   r)   r   r-   s    r/   r   r$  S  sE    19q1a4x'"q!t)3b1a4i?!a%G!KKr2   z8No valid bracket was found before the iteration limit...r   rc   r   rT  )	r   r
   r{   r   r  r+   r  r  r  )rt   r   re  s      r/   test_errors_and_status_false(TestBracket.test_errors_and_status_falseC  s    	; N]]<w7QA& 8]]<w7QBFF+ 8]]<w7NN1G, 8]]<w7OOAW- 8	L M]]<w7Qc26 87 87777777 87s;   D5'E!EE)E:5
E
E
E&)
E7:
Fr   )r  r  c                     S nSn[         R                  " USUS9nUR                  (       a   eX4R                  ;   d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  S:X  d   eg )Nc                 0    SU :  U S:  -  (       a  U S-  $ S$ r#  r   r-   s    r/   r   9TestBracket.test_minimize_scalar_success_false.<locals>.f]  r%  r2   r&  r  )r  r   rd   r   rO  )r   r  r   re  r   r  r   )rt   r   r   re  r   s        r/   "test_minimize_scalar_success_false.TestBracket.test_minimize_scalar_success_falseZ  so    	; N&&q'&I;;++%%%xx1}}ww!||ww#~~r2   r   N)r   r   r   r   r   r  r  r*  r  r/  r   r   r2   r/   r   r   A  sJ    [[ 897 :7, [[X':; <r2   r   c                  \    [        [        [        R                  [        R
                  SS9  g )Ng{Gzr  )rT   rU   r   r  r+   rJ   r   r2   r/   test_brent_negative_tolerancer2  j  s    *hnnbff$?r2   c                   ,    \ rS rSrS rS rS rS rSrg)TestNewtonCgin  c           	      T   [         R                  " SS/5      n[        R                  " [        R                  U[        R
                  [        R                  SSS9nUR                  (       d   UR                  5       e[        UR                  [         R                  " SS/5      SS9  g 	Nr  ra   r   rj  r   r   rC  r   r)   r  r   )r+   rP   r   r   r   r   r   r   re  r   r.   rt   rY   r   s      r/   test_rosenbrockTestNewtonCg.test_rosenbrocko  sx    XXtSk"$,$6$6%-%8%8$('2	4
 {{'CKK'{rxxA/d;r2   c           	      *   [         R                  " [        5      n[        R                  " [
        U[        [        SSS9nUR                  (       d   UR                  5       e[        UR                  [        SS9  [        UR                  [        SS9  g )Nrj  r=   )r   r   r   rC  r  r   r   )r+   rP   rX   r   r   
himmelblaurV   rW   r   re  r   r.   himmelblau_xoptr   himmelblau_minr8  s      r/   test_himmelblauTestNewtonCg.test_himmelblauy  sh    XXm$
 "$3%4'2$(* {{'CKK'{T:d;r2   c           	      8   [         R                  " SS/5      n[        R                  " [        R                  U[        R
                  SSSS9nUR                  (       d   UR                  5       e[        UR                  [         R                  " SS/5      SS	9  g )
Nr  ra   r!  r   rj  r7  r)   r  r   )
r+   rP   r   r   r   r   r   re  r   r.   r8  s      r/   test_finite_difference#TestNewtonCg.test_finite_difference  sr    XXtSk"$,$6$6%.$('2	4
 {{'CKK'{rxxA/d;r2   c           	      ^   [         R                  " SS/5      n[        R                  " [        R                  U[        R
                  [        R                  " 5       SSS9nUR                  (       d   UR                  5       e[        UR                  [         R                  " SS/5      SS9  g r6  )r+   rP   r   r   r   r   r   r   re  r   r.   r8  s      r/   test_hessian_update_strategy)TestNewtonCg.test_hessian_update_strategy  sx    XXtSk"$,$6$6%-]]_$('2	4
 {{'CKK'{rxxA/d;r2   r   N)	r   r   r   r   r9  r?  rB  rE  r   r   r2   r/   r4  r4  n  s    <
<<<r2   r4  c                     [         R                  R                  n [        R                  " / SQ5      n[        R                  " / SQ5      n[        R                  " / SQ5      n[        R                  " / SQ5      nU[        R                  " / SQ5      SS4U[        R                  " / SQ5      S	S
4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      S	S
4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS	4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS4U[        R                  " / SQ5      SS	4U[        R                  " / SQ5      SS44nU H%  u  pgpU " XgX5      u  p[        XSS9  [        XSS9  M'     [        R                  " [        R                  * S	[        R                  * S/5      n[        R                  " [        R                  S
S[        R                  /5      nU[        R                  " / SQ5      [        R                  * [        R                  4U[        R                  " / SQ5      S	S
4U[        R                  " / SQ5      [        R                  * S4U[        R                  " / SQ5      S[        R                  4U[        R                  " / SQ5      S	S
4U[        R                  " / SQ5      S[        R                  4U[        R                  " / SQ5      [        R                  * [        R                  4U[        R                  " / SQ5      SS	4U[        R                  " / SQ5      [        R                  * S4U[        R                  " / SQ5      S[        R                  4U[        R                  " / SQ5      SS	4U[        R                  " / SQ5      S[        R                  44nU H%  u  pgpU " XgX5      u  p[        XSS9  [        XSS9  M'     g )N)333333ri  r   r  )r   r)   ffffff@rd   re   r   r   r   )re   r5   r  r   ra   r   r   r   rH  r   re   r)   r   r   ri  r)   re   r   r)   r   r   rI  re   r   r   r)   r  rd   )ra   r)   r   r   )ra   r   ri  r5   r8   )r  r   ri  r5   gffffff?g333333@)ra   r   ri  r   r=   r   g333333)r   r  _line_for_searchr+   rP   r   r  )line_for_searchlower_boundupper_boundrY   x1	all_testsr.   alphalminlmaxmimas               r/   test_line_for_searchrZ    sL   
 ((99O ((/0K((+,K 
-	 B	.	!B 
RXXm$dC0	RXXm$b!,	RXXm$dC0	RXXm$b!,	RXXm$b!,	RXXn%tS1	RXXn%tT2	RXXm$dC0	RXXm$b"-	RXXm$c3/	RXXm$b!,	RXXm$b"-	RXXn%tT2I  !*$ ;Dt,t, !* ((RVVGR"&&"56K((BFFAsBFF34K 
RXXm$rvvgrvv6	RXXm$b!,	RXXm$rvvgs3	RXXm$b"&&1	RXXm$b!,	RXXn%tRVV4	RXXm$rvvgrvv6	RXXm$b"-	RXXm$rvvgs3	RXXm$b"&&1	RXXm$b"-	RXXn%tRVV4I !*$ ;Dt,t, !*r2   c                  |   [         R                  R                  n S n[        R                  " / SQ5      nU" U5      n[        R                  " [        R
                  * /S-  5      n[        R                  " [        R
                  /S-  5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S	4[        R                  " / S
Q5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S44nU Hw  u  pxU " XUUSS9u  pn[        X" X-  5      SS9  [        XU-  SS9  [        XU-  SS9  U " XUSUUUS9u  pn[        X" X-  5      SS9  [        XU-  SS9  [        XU-  SS9  My     g )Nc                 f    [         R                  " U [         R                  " / SQ5      -
  S-  5      $ N)r4  r  r8   皙ٿr5   r+   rE   rP   r-   s    r/   r   $test_linesearch_powell.<locals>.func  %    vvq288$:;;ABBr2   rJ  r   rK  ri  rL  r5   rM  r8   rN  r^  r4  r   r)   r         ?re   r   r)   r)   皙?r  r   ri  r)   r   )fvalrC  r=   r   rC  rQ  rR  rh  )r   r  _linesearch_powellr+   rP   r  r   linesearch_powellr   r  rh  rQ  rR  rT  xilr   r   r;   s               r/   test_linesearch_powellro    s    **==C	-	 B8D((RVVG9q=)K((BFF8a<(K 
-	 "%	-	 !$	-	 #&	-	 #&	.	!4(	-	 #&	.	!4(I +Db154Ai4<d3r6-	r65+Dbd8C8C157i 	4<d3r6-	r65 r2   c                  ~   [         R                  R                  n S n[        R                  " / SQ5      nU" U5      n[        R                  " S/S-  5      n[        R                  " S/S-  5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S	4[        R                  " / S
Q5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S44nU H?  u  pxU " XUSUUUS9u  pn[        X" X-  5      SS9  [        XU-  SS9  [        XU-  SS9  MA     [        R                  " S/S-  S/-   5      n[        R                  " S/S-  S/-   5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / S
Q5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S44nU H?  u  pxU " XUSUUUS9u  pn[        X" X-  5      SS9  [        XU-  SS9  [        XU-  SS9  MA     [        R                  " / SQ5      nU" U5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / S
Q5      S4[        R                  " / SQ5      S 44nU HD  u  pxU " XUSUUUS9u  pn[        X" X(U-  -   5      SS9  [        XX-  -   SS9  [        XU-  SS9  MF     [        R                  " / SQ5      nU" U5      n[        R                  " S[        R                  * [        R                  * S/5      n[        R                  " [        R                  S[        R                  S/5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / S
Q5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / SQ5      S44nU H?  u  pxU " XUSUUUS9u  pn[        X" X-  5      SS9  [        XU-  SS9  [        XU-  SS9  MA     [        R                  " / SQ5      nU" U5      n[        R                  " / SQ5      S4[        R                  " / SQ5      S4[        R                  " / S
Q5      S4[        R                  " / SQ5      S 44nU HD  u  pxU " XUSUUUS9u  pn[        X" X(U-  -   5      SS9  [        XX-  -   SS9  [        XU-  SS9  MF     g )!Nc                 f    [         R                  " U [         R                  " / SQ5      -
  S-  5      $ r]  r_  r-   s    r/   r   ,test_linesearch_powell_bounded.<locals>.func	  ra  r2   rJ  g       r   r  rK  ri  rL  r5   rM  r8   rN  r^  rb  rc  rd  re  rf  rg  r   ri  r=   r   g333333ӿrd   g?r  rb   g333333ÿ)r4  r   r   r5   r   g333333)r   r  rj  r+   rP   r   r  rk  s               r/   test_linesearch_powell_boundedrs    s    **==C	-	 B8D ((C57#K((B46"K 
-	 "%	-	 !$	-	 #&	-	 #&	.	!4(	-	 #&	.	!4(I +Dbd8C8C157i 	4<d3r6-	r65  ((C57bT>*K((C57bT>*K 
-	 #&	-	 #&	-	 #&	-	 #&	.	!2&	-	 #&	.	!4(I +Dbd8C8C157i 	4<d3r6-	r65  
.	!B8D 
-	 "%	-	 #&	-	 #&	-	 $'	I +Dbd8C8C157i 	4V,48;T2	r65  
-	 B8D ((C"&&266'267K((BFFC45K 
-	 #&	-	 #&	-	 #&	-	 #&	.	!2&	-	 #&	.	!4(I +Dbd8C8C157i 	4<d3r6-	r65  
.	!B8D 
-	 "%	-	 #&	-	 #&	-	 $'	I +Dbd8C8C157i 	4V,48;T2	r65 r2   c                     ^ [         R                  " SS/SS/5      mU4S jn [         R                  " U SS/STS9  [         R                  " S/S/S/S	9mS
 n[         R                  " US/STS9  g )Nr   333333?r=  c                    > U u  pU TR                   :  R                  5       (       a"  U TR                  :*  R                  5       (       d   eUS-  US-  -   $ r]  )lbrO   ub)r.   r  r  r<  s      r/   r   test_powell_limits.<locals>.fun	  sO    VYY##%%1		>*>*>*@*@@@AvQr2   r'  r  r)   T)rw  rx  keep_feasiblec                 J    U S:  a  U S::  d   e[         R                  " U 5      $ r2  r*   r-   s    r/   r    test_powell_limits.<locals>.func	  s#    Av!q&  vvayr2   rc   r  )r   rY   r   r<  )r   r   r   )r   r   r<  s     @r/   test_powell_limitsr}  |	  sq    __aVc2Y/F
 csBiH __!dWEF $C5&Ir2   c                      [         S S /n U  HB  n[        R                  " USS/SS9n[        R                  " UR
                  5      (       a  MB   e   g )Nc                 @    [         R                  " [        U 5      5      $ rC   r+   rP   r   r-   s    r/   r  $test_powell_output.<locals>.<lambda>	  s    RXXeAh/r2   c                 B    [         R                  " [        U 5      /5      $ rC   r  r-   s    r/   r  r  	  s    288U1XJ;Or2   ru  r=  r'  )rY   r   )r   r   r   r+   isscalarr   )funsr   r   s      r/   test_powell_outputr  	  sK    /1OPDb	(C{{377#### r2   c                       \ rS rSrS r\" SS/S9\R                  R                  S5      S 5       5       r	\" SS/S9\R                  R                  S5      S 5       5       r
S	rg
)	TestRoseni	  c                     UR                  / SQ5      n[        [        R                  " U5      UR                  S5      5        g )Nr`   re   )r  r$   r   r   rt   r?  r.   s      r/   
test_rosenTestRosen.test_rosen	  s.    JJy!q)

2	(r2   z	jax.numpyz)JAX arrays do not support item assignment)reasonsskip_xp_backendsc           	          UR                  / SQ5      n[        [        R                  " U5      UR	                  X!R                  S5      R
                  S95        g )N)r)   r)   r)   r)   ra   )r  )r  r$   r   r   
zeros_liker  r  s      r/   test_rosen_derTestRosen.test_rosen_der	  sD     JJ|$**1-azz"~/C/CD	Fr2   c                 2   UR                  S5      n[        U5      nUR                  / SQ5      nUR                  / SQ5      n[        R                  " XE5      nUR	                  XRR
                  5      n[        R                  " U5      U-  n[        Xg5        g )Nra   )rd   r   r   )r5   r5   r5   )r  r%   r   rosen_hess_prodr  r  r   r$   )rt   r?  onexp_testr.   r   hpdothps           r/   test_hess_prodTestRosen.test_hess_prod	  sv     jjn!#&JJy!JJy!%%a+NN1ii(##A&*"r2   r   N)r   r   r   r   r  r  r   r  usefixturesr  r  r   r   r2   r/   r  r  	  s    ( kJKM[[/0F 1MF
 kJKM[[/0	# 1M	#r2   r  c                 D    U u  pX-  U-   S-
  nXU-  -   S-
  nX3-  XD-  -   $ )zl
R^2 -> R^1 test function for optimization. The function has four local
minima where himmelblau(xopt) == 0.
r)  r   r   )r   r.   r  r  r  s        r/   r<  r<  	  s7    
 DA	a"A	aC!A39r2   c                     U u  p[         R                  " SUS-  -  SU-  U-  -   SU-  -
  SUS-  -  -   S-
  SUS-  -  SU-  U-  -   SUS-  -  -   SU-  -
  S-
  /5      $ )Nr   rd   *   r5         r|  r  r   r.   r  s      r/   rV   rV   	  s    DA88Qq!tVac!e^bd*Qq!tV3b8q!tVac!e^a1f,r!t3b8: ; ;r2   c                     U u  p[         R                  " SUS-  -  SU-  -   S-
  SU-  SU-  -   /SU-  SU-  -   SU-  SUS-  -  -   S-
  //5      $ )Nr(  r5   r   r  r  r  r  s      r/   rW   rW   	  sp    DA88bAg!mb(!A#!)4cAaCi1r!Q$w!346 7 7r2   gHzGѿgrd   r5   re   c                      S n S nS nSU S.SUS.SUS.4nS n[         R                  " U/ SQSUS	9n[        UR                  / S
QSS9  g )Nc                 f    [         R                  " SSU S   -  -
  SU S   -  -
  SU S   -  -
  /5      $ )N   rM   r   r  r)   r  r5   r  r-   s    r/   r   0test_minimize_multiple_constraints.<locals>.func	  s:    xxcAaDj31:5qtCDEEr2   c                 6    [         R                  " U S   /5      $ r(   r  r-   s    r/   func11test_minimize_multiple_constraints.<locals>.func1	      xx1r2   c                 6    [         R                  " U S   /5      $ r]  r  r-   s    r/   r@  1test_minimize_multiple_constraints.<locals>.func2	  r  r2   r  r  c                 *    SU S   U S   -   U S   -   -  $ )Nri  r   r)   r5   r   r-   s    r/   r   -test_minimize_multiple_constraints.<locals>.f	  s"    QqTAaD[1Q4'((r2   r  r  r  )}   r   r   r  r   re  )r   r  r@  r  r   r   s         r/   "test_minimize_multiple_constraintsr  	  s`    F   D)E*E*,D) 

Ayd
KCCEE;U3r2   c                   \    \ rS rSrS r\R                  R                  S5      S 5       rSr	g)TestOptimizeResultAttributesi	  c                     SS/U l         [        R                  U l        [        R                  U l        [        R                  U l        [        R                  U l	        SS/U l
        g )Nr   )re   r6  )rY   r   r   r   r   r   r   r   r  r   r<  rs   s    r/   ru   )TestOptimizeResultAttributes.setup_method	  sK    a&NN	%%''	--
 ),r2   r5   c                    / SQnSS/0n[          H  n[        5        nUR                  [        S5        [        R
                  " U R                  U R                  UU R                  U R                  U R                  S9nS S S 5        U H6  nX2;   a
  XbU   ;   a  M  [        WU5      (       d   eU[        U5      ;   a  M6   e   [        WR                  [        5      (       a  M   e   g ! , (       d  f       Np= f)N)r  r   r.   r   r   r   re  r  r  z7Method .+ does not use (gradient|Hessian.*) information)r   r   r   r   )r   r	   rN  r  r   r   r   rY   r   r   r   rz   dirr  re  str)rt   
attributesrL  r   rV  r   	attributes          r/   test_attributes_present4TestOptimizeResultAttributes.test_attributes_present	  s    !
5'"&F"$

>+- ''		4776,0HH499.2jj:	 % (	>i<&?sI.... CH,,, ( ckk3////! '$$s   A"C))
C7	)r<  r   r   r   r   rY   N)
r   r   r   r   ru   r   r  r  r  r   r   r2   r/   r  r  	  s*    - [[10 0r2   r  c                 f    U u  p#Uu  pEpgppppnXBS-  -  XR-  U-  -   XcS-  -  -   Xr-  -   X-  -   U	-   $ r]  r   r  r   r.   r  r  r  rx   rJ  r   r   r  rW  r  rT  r  rn  r/  s                    r/   f1r  
  sR    DA06-A!aA!1Hquqy 1!t8+ac1AC7!;<r2   c                 t    U u  p#Uu  pEpgppppnU
* [         R                  " X+-
  S-  X<-
  S-  -   * U-  5      -  $ r]  r*   r  s                    r/   f2r  
  L    DA06-A!aA!BrvvqAC!8+,u4556r2   c                 t    U u  p#Uu  pEpgppppnU* [         R                  " X.-
  S-  X?-
  S-  -   * U-  5      -  $ r]  r*   r  s                    r/   f3r  
  r  r2   c                 N    [        U /UQ76 [        U /UQ76 -   [        U /UQ76 -   $ rC   )r  r  r  )r  r   s     r/   
brute_funcr  
  s*    a>&>BqN6N*R^F^;;r2   c                       \ rS rSrS rS rS rS r\R                  R                  S5      S 5       r\R                  R                  S 5       rS	 rS
rg)	TestBrutei"
  c                     SU l         [        SSS5      [        SSS5      4U l        [        R                  " SS/5      U l        g )N)r5   rd   r   r   r   r   ,   ri  r5   r  r)   r  rc   r  r         ?g_}gi?)r   slicerrangesr+   rP   rl   rs   s    r/   ru   TestBrute.setup_method$
  s<    Db!T*E"a,>?+z!:;r2   c                     [        U/UQ76 $ rC   )r  )rt   r  r   s      r/   r  TestBrute.brute_func)
  s    !%f%%r2   c                    [         R                  " [        U R                  U R                  S[         R
                  S9n[        US   U R                  SS9  [        US   [        U R                  /U R                  Q76 SS9  [         R                  " [        U R                  U R                  S[         R                  S9n[        US   U R                  SS9  [        US   [        U R                  /U R                  Q76 SS9  [         R                  " U R                  U R                  U R                  S[         R                  S9n[        US   U R                  SS9  g )NTr   r   finishr   r	  r   r)   )	r   bruter  r  r   rG  r   rl   r   )rt   resbrutes     r/   
test_bruteTestBrute.test_brute-
  s
   >>*dll.28==JT]]>Z%L%L!	# >>*dll.2)1):):< 	T]]>Z%L%L!	#
 >>$//4<<'+{{)1):):< 	T]]>r2   c                 :    S n[         R                  " US/SS S9  g )Nc                 l    [        U R                  5      S:X  d   eU R                  S   S:X  d   eU S-  $ )Nr)   r   r5   )r  r  r-   s    r/   r   TestBrute.test_1D.<locals>.fG
  s5    qww<1$$$771:?"?6Mr2   r  rd   )Nsr  )r   r  )rt   r   s     r/   test_1DTestBrute.test_1DD
  s    	
 	q7)$7r2   r   c           	         [         R                  " [        U R                  U R                  SS S9n[         R                  " [        U R                  U R                  SS SS9n[        US   US   5        [        US   US   5        g )NTr  r5   )r   r   r  workersri  r   )r   r  r  r  r   r   )rt   r  	resbrute1s      r/   test_workersTestBrute.test_workersN
  sr     >>*dll.24A NN:t||$++/3D!M	 		"x|4	!hqk2r2   c                   ^ [         R                  R                  S5      mU4S jnSn[        R                  " [
        US9   [        R                  " X R                  U R                  SS9  S S S 5        g ! , (       d  f       g = f)Nr:   c                 ,   > TR                  S5      S-  $ r  r  )r  r   r?   s     r/   r   ,TestBrute.test_runtime_warning.<locals>.func^
  s    ::a=4''r2   zFfinal optimization did not succeed.*|Maximum number of function eval.*r   T)r   r   )
r+   r9   r  r   r  r  r   r  r  r   )rt   capsysr   r  r?   s       @r/   r  TestBrute.test_runtime_warningZ
  sV    ii##D)	( W\\.4NN4DKKdK 544s   +A66
Bc                 f    S n[         R                  " U[        SSS5      4SS9n[        US5        g )Nc                     XS   -  $ rq  r   )r.   r   s     r/   r   +TestBrute.test_coerce_args_param.<locals>.fg
  s    Q<r2   r  r   r  r5   r  r   )r   r  r  r   )rt   r   r  s      r/   test_coerce_args_param TestBrute.test_coerce_args_parame
  s1    	  >>!eB3&7%9B!$r2   )r   r  rl   N)r   r   r   r   ru   r  r  r  r   r  r  r  r  r  r  r   r   r2   r/   r  r  "
  s^    <
&?.8 [[2	3 	3 [[L L%r2   r  r=  c                  r  ^^^^	 SS K n SS Km	U	4S jmU	4S jmSmUU4S jnUU4S jnU R                  R                  5        n/ nUR	                  UR                  U5      5        UR	                  UR                  U5      5        U H  nUR                  5         M     S S S 5        g ! , (       d  f       g = f)Nr   c                 6   > TR                  S5        U S   S-  $ )Nr@   r   r5   sleepr.   times    r/   
objective1*test_cobyla_threadsafe.<locals>.objective1w
  s    

3tQwr2   c                 <   > TR                  S5        U S   S-
  S-  $ )Nr@   r   r)   r5   r  r  s    r/   
objective2*test_cobyla_threadsafe.<locals>.objective2{
  s     

3!Q{r2   COBYLAc                  2   > [         R                  " TS/T S9$ Nre   r   r  )
min_methodr  s   r/   
minimizer1*test_cobyla_threadsafe.<locals>.minimizer1
         '*e-79 	9r2   c                  2   > [         R                  " TS/T S9$ r  r  )r  r  s   r/   
minimizer2*test_cobyla_threadsafe.<locals>.minimizer2
  r  r2   )concurrent.futuresr  futuresThreadPoolExecutorr~   submitrl  )

concurrentr  r  pooltasksry   r  r  r  r  s
         @@@@r/   test_cobyla_threadsafer  n
  s      J9
9
 
			.	.	0DT[[,-T[[,-AHHJ 	 
1	0	0s   AB((
B6c                   n    \ rS rSrS rS r\R                  R                  S5      S 5       r	S r
S rSrg	)
TestIterationLimitsi
  c                 8    [         R                  " 5       U l        g rC   )rn   ro   r  rs   s    r/   ru    TestIterationLimits.setup_method
  s    !)r2   c                 ^   [        U R                  S5      (       d  SU R                  l        U R                  =R                  S-  sl        [        R                  " US   S-  US   S-  -   5      [        R
                  " US   US   5      p2[        R                  " US-  U-   5      US-  -   $ )Nrx   r   r)   r5   r=  rc   )rz   r  rx   r+   r  arctan2rD   )rt   rr  rZ   ry   s       r/   	slow_funcTestIterationLimits.slow_func
  s    t}}c**DMMO1wwqtQwqtQw'AaD!A$)?1vvadQh#%%r2   r   c                 (    U R                  SS5        g )Nr     check_limitsrs   s    r/   test_neldermead_limit)TestIterationLimits.test_neldermead_limit
  s    --r2   c                 (    U R                  SS5        g )Nr  rf   r  rs   s    r/   test_powell_limit%TestIterationLimits.test_powell_limit
  s    (D)r2   c           
         SS/SS/SS/4 GHF  nS Hx  nSU R                   l        [        R                  " U R                  UUSU0S9nU R                   R                  US   :X  d   eUS	   (       a  US   U:  d   eMm  US   U:  a  Mx   e   S HH  n[        R                  " U R                  UUS
U0S9nUS	   (       a  US   U::  d   eM=  US   U:  a  MH   e   SS/SS/S[
        R                  /4 H  u  pFSU R                   l        [        R                  " U R                  UUUUS.S9nU R                   R                  US   :X  d   eUS	   (       a  US   U:  a	  US   U::  d   eMy  US   U:  a  M  US   U:  a  M   e   [
        R                  S /S [
        R                  /4 H  u  pFSU R                   l        [        R                  " U R                  UUUUS.S9nU R                   R                  US   :X  d   eUS	   (       a#  Uc  US   US-  :  d   eMv  US   US-  ::  d   eM  US   US-  :  a  M  US   US-  :  a  M   e   GMI     g )Nr@   r)   r5   )rP  i    r   r  r
  r   r   rm   r  rP  r  )rm   r  )r  rx   r   r   r  r+   r  )rt   r   default_itersstart_vmfevr   mits          r/   r   TestIterationLimits.check_limits
  s   c
QFQF3G'"#''/51940@B }}#f+555y>v;---v;$... ( '''/51:C0@B y>u:,,,u:,,, '  "2httRVVnE	"#''/5<?;?1AB }}#f+555y>v;-#e*2CCC2Cv;$.#e*2CCC F  "vvtntRVVn=	"#''/5<?;?1AB }}#f+555y>|"6{]1_<<<"5z]1_<<<K=?:"5z]1_<> = >= 4r2   )r  N)r   r   r   r   ru   r  r   r  r  r  r  r  r   r   r2   r/   r	  r	  
  s9    *& [[2. .*->r2   r	  c            	      h   S n S nS n/ SQnU HJ  n[         R                  " U [        R                  " S/5      US9nUR                  R
                  S:X  a  MJ   e   / SQnU HK  n[         R                  " U [        R                  " S/5      XAUS	9nUR                  R
                  S:X  a  MK   e   g )
Nc                 
    X -  $ rC   r   r-   s    r/   r   2test_result_x_shape_when_len_x_is_one.<locals>.fun
  s	    ur2   c                     SU -  $ Nr  r   r-   s    r/   r   2test_result_x_shape_when_len_x_is_one.<locals>.jac
  s    Avr2   c                 2    [         R                  " S//5      $ r$  r  r-   s    r/   r   3test_result_x_shape_when_len_x_is_one.<locals>.hess
  s    xx"r2   )	r  r'  r   r   rj  r  r  COBYQAr  r@   r   r  )r*  r.  r+  r/  r,  rj  r-  )r   r   r+   rP   r.   r  )r   r   r   r%  r   r   s         r/   %test_result_x_shape_when_len_x_is_oner)  
  s     ,GRXXse_VDuu{{d""" 
,GRXXse_V%)+uu{{d""" r2   c                        \ rS rSrS rS rSrg)FunctionWithGradienti
  c                 8    [         R                  " 5       U l        g rC   )rn   ro   number_of_callsrs   s    r/   r[  FunctionWithGradient.__init__
  s    (0r2   c                     [        U R                  S5      (       d  SU R                  l        U R                  =R                  S-  sl        [        R                  " US-  5      SU-  4$ )Nrx   r   r)   r5   )rz   r-  rx   r+   rE   r^  s     r/   r_  FunctionWithGradient.__call__
  sU    t++S11%&D  "!#vvad|QU""r2   )r-  Nra  r   r2   r/   r+  r+  
  s    1#r2   r+  c                      [        5       $ rC   )r+  r   r2   r/   function_with_gradientr2  
  s    !!r2   c                    [        U 5      n[        R                  " SS/5      n[        U" U5      S5        U R                  R
                  S:X  d   e[        UR                  U5      SU-  5        U R                  R
                  S:X  d   S5       e[        U" SU-  5      SSS	9  U R                  R
                  S:X  d   S5       eg )
Nra   r  r  r)   r5   zHfunction is not recomputed if gradient is requested after function valueg      4@(different input triggers new computationr6  )r   r+   rP   r   r-  rx   
derivativer2  memoized_functionrY   s      r/   )test_memoize_jac_function_before_gradientr8    s    "#9:	3*	B%b)3/!1133q888%004a"f=!1133q8 8	888 !b&!4:< "1133q8 3238r2   c                    [        U 5      n[        R                  " SS/5      n[        UR	                  U5      SU-  5        U R
                  R                  S:X  d   e[        U" U5      S5        U R
                  R                  S:X  d   S5       e[        UR	                  SU-  5      SU-  SS	9  U R
                  R                  S:X  d   S5       eg )
Nra   r  r5   r)   r  zHfunction is not recomputed if function value is requested after gradientr   r4  r6  )r   r+   rP   r   r5  r-  rx   r6  s      r/   )test_memoize_jac_gradient_before_functionr:    s    "#9:	3*	B%004a"f=!1133q888%b)3/!1133q8 8	888 $$QV,a"f:< "1133q8 3238r2   c           	         [        U 5      nUR                  n[        R                  " 5       n[        R
                  " SS/5      n[        XSX#SS5      nU R                  R                  S:X  d   eUR                  US-   5        U R                  R                  S:X  d   eUR                  US-   5        U R                  R                  S	:X  d   eg)
zTests that using MemoizedJac in combination with ScalarFunction
and BFGS does not lead to repeated function evaluations.
Tests changes made in response to GH11868.
ra   rc   r   Nr)   r@   r5   rM   rd   )
r   r5  r   r   r+   rP   r   r-  rx   r   )r2  r7  r   r   rY   scalar_functions         r/   test_memoize_jac_with_bfgsr=  '  s    
 ##9:

&
&C==?D	3*	B$r3dD:O!1133q888S!!1133q888S!!1133q888r2   c                      [        5          [        R                  " S [        R                  * [        R                  SS9  S S S 5        g ! , (       d  f       g = f)Nc                 6    [         R                  " U S-  /5      $ r]  r  r-   s    r/   r  test_gh12696.<locals>.<lambda>@  s    bhh1v&r2   Fr  )r   r   r  r+   r>  r   r2   r/   test_gh12696rA  <  s6    		&E	C 
		s   6A


Ac                    ^^^^^ [         R                  R                  S5      n U R                  S5      n[         R                  " / SQ5      m[         R                  " / SQ5      nTU:H  mSUU4S jjmU4S jmU4S jmU4S	 jnU4S
 jnU4S jnU4S jnU4S jn[        U[         R                  * S5      n[        U[         R                  * SU5      n	[        U[         R                  * S5      n
[        U[         R                  * SU5      nSnTSS.TTS.UU4S jSS.4nS [        4nS/ / 4X4X4U	/U	/4U
/U/4X/X/4X/X/4X/X/44	nS U4nXUUUTX!TS.	nU$ )Nr   r   )r   r5   ri  r4  )rd   r5   r5   r4  Tc                 l   > U(       a  U R                   S:X  d   eU(       a  [        U T   TT   5        g g r  )r  r   )r.   
check_sizecheck_valuesi_ebrw  s      r/   check_x(setup_test_equal_bounds.<locals>.check_xM  s0    66Q;;AdGRX. r2   c                 @   > T" U 5        [         R                  " U 5      $ rC   r  r.   rG  s    r/   r   %setup_test_equal_bounds.<locals>.funcS  s    
~~a  r2   c                 @   > T" U 5        [         R                  " U 5      $ rC   )r   r   rJ  s    r/   r   %setup_test_equal_bounds.<locals>.gradW  s    
!!!$$r2   c                    > T" U 5        g rC   r   )r.   r   rG  s     r/   rd  )setup_test_equal_bounds.<locals>.callback[  s
    
r2   c                 "   > T" U SS9  U SS S-
  $ )NFrE  r   r)   r   rJ  s    r/   constraint1,setup_test_equal_bounds.<locals>.constraint1^  s    &1vzr2   c                 L   > T" U SS9  [         R                  " U 5      nSUS'   U$ )NFrQ  r)   r   r+   r  r.   dcrG  s     r/   	jacobian1*setup_test_equal_bounds.<locals>.jacobian1b  )    &]]11	r2   c                 "   > T" U SS9  U SS S-
  $ )NFrQ  r5   rd   rc   r   rJ  s    r/   constraint2,setup_test_equal_bounds.<locals>.constraint2h  s    &1v|r2   c                 L   > T" U SS9  [         R                  " U 5      nSUS'   U$ )NFrQ  r)   r5   rU  rV  s     r/   	jacobian2*setup_test_equal_bounds.<locals>.jacobian2l  rZ  r2   )rj  r  r  Fr  c                 $   > T" U 5      T" U 5      4$ rC   r   )r.   r   r   s    r/   r  )setup_test_equal_bounds.<locals>.<lambda>~  s    Qa1r2   c                 *    [        [        X5      5      $ rC   )listziprw  rx  s     r/   r  rb    s    $s2{"3r2   r  )	r%  kwdsbound_typesr  	callbacksrw  rx  rY   rF  )TT)r+   r9   rM  r  rP   r   r  r   )r?   rY   rx  rd  rR  rX  r\  r_  c1ac1bc2ac2br%  rg  rh  r  ri  datarG  r   r   rF  rw  s                     @@@@@r/   setup_test_equal_boundsro  E  s   
))


"C	!B	"	#B	/	"B"HD/ /!% kBFF7A
6C
kBFF7Ay
AC
kBFF7A
6C
kBFF7Ay
AC +G '&1D 4K  "b:zEC5>SEC5>J
+J
+J
+-K x I[&YB$8D Kr2   z0Failures due to floating point issues, not logicdicts)mode	Compilersfortrannamez
intel-llvmr1  r%  rg  
bound_typerh  r  rd  ri  c           	         [         R                  " 5       S:X  a'  U S:X  a!  US   SL a  Ub  [        R                  " S5        [        S   [        S   pe[        S	   [        S
   pUu  pU	(       a  U S:X  d  [        R                  " S5        X:g  nU" XV5      nUR                  XpUXS.5        [        R                  " S0 UD6n[        R                  " [        R                  Xp[        R                  UU
S9nUR                  (       d   e[        UR                  UR                  SS9  [        UR                  UR                  SS9  U(       d  US   SL a  [        R                  UR                   U'   UR                   R"                  S   S:X  d   e[        UR                   U   UR                   U   SS9  US   (       d  U	(       d  [%        U[&        5      (       dj  S n[        R                  " UUSS/   U USSS2   S9n[        UR                  UR                  5        [        UR                  SS/   UR                  SS9  gggg)z
Tests that minimizers still work if (bounds.lb == bounds.ub).any()
gh12502 - Divide by zero in Jacobian numerical differentiation when
equality bounds constraints are used
aarch64r  r   FNzTolerance violation on aarchrw  rx  rY   rF  r  z)Only SLSQP supports nonlinear constraints)rY   r   r<  r  rd  )r   r   r<  r  gTqs*>r   gMb@?r   r   r=   c                     [         R                  " [         R                  S[         R                  S/5      nXSS/'   [        R                  " U5      $ )Nr5   ri  r   )r+   rP   r	  r   r   )r.   new_xs     r/   r   test_equal_bounds.<locals>.fun  s;    HHbffa45E1a&M>>%((r2   r5   r	  g>r   )platformmachiner   rL  eb_datar  r   r   r   r   r   r   r   r.   r+   r	  r   r  r  r   )r   rg  ru  r  rd  rw  rx  rY   rF  test_constraintsreference_constraints	fd_neededr<  r   expectedr   fd_ress                    r/   test_equal_boundsr    s     	i'FeOUu$)=23T]GDMt}gfo.9+' 1?@ ":IFKKrv 0H I



#d
#C  %-%7%7-BDH
 ;;;CGGX\\7CEE8::D1DK5(VVT77==q   CGGDM8<<#5DAK+z&&/I/I	)
 ""3#%q!f:*0*01+7 	, 	q!fvxxd;% 0J+Kr2   c                    SS jnSS/nSn[         R                  " XX S9nUR                  (       d   e[        UR                  U" SS/5      5        UR
                  S:X  d   eUR                  S	:X  d   eS
n[         R                  " XX US9nUR                  (       d   e[        UR                  U" SS/S5      5        U R                  5       S:X  Ga4  S n[        U[        R                  * S5      n[         R                  " XX U/S9nUR                  SL d   e[        UR                  U" SS/5      5        UR
                  S:X  d   eSnUR                  R                  U5      (       d   e[        U[        R                  * S5      n[         R                  " XX U/S9nUR                  SL d   e[        UR                  U" SS/5      5        UR
                  S:X  d   eSnUR                  R                  U5      (       d   eg g )Nr)   c                 F    [         R                  R                  U 5      U-   $ rC   )r+   linalgnorm)r.   p1s     r/   r    test_all_bounds_equal.<locals>.f  s    yy~~a 2%%r2   r  )r5   r5   )ra   rd  rc  ra   r  z/All independent variables were fixed by bounds.)r5   r  r5   r  c                 .    [         R                  " U 5      $ rC   r^  r-   s    r/   con"test_all_bounds_equal.<locals>.con  s    66!9r2   re   )r<  r   r  Fz3All independent variables were fixed by bounds, butr   Tz8All independent variables were fixed by bounds at valuesr  )r   r   r   r   r   r   re  upperr   r+   r  r  )	r   r   r<  rY   r   r   r  nlcre  s	            r/   test_all_bounds_equalr    s   & fF	B


A&
@C;;;CGGQSz]+88q==;;KKKKD


A&d
KC;;;CGGQSz1-.||~ 	!#w4&cU
 {{e###C:/xx1}}G{{%%g....!#w2&cU
 {{d"""C:/xx1}}L{{%%g....+ !r2   c                      S n S nSUS./nS/S-  nSUS'   [         R                  " U / S	QS
UUS9  US   S   U:X  d   eg )Nc                 <    U S   S-  U S   S-  -   U S   U S   -  -   $ )Nr   rd   r)   r5   r   r-   s    r/   r   test_eb_constraints.<locals>.f  s.    tQw1q 1Q4!9,,r2   c                 6    U S   U S   -   U S   -   U S   -   S-
  $ )Nr   r)   r5   rd   (   r   r-   s    r/   cfun!test_eb_constraints.<locals>.cfun  s+    tad{QqT!AaD(2--r2   r  r  )r   r=  r   )r   r   r)   )r)   r5   rd   r   r  )rY   r   r<  r  r   r   r  )r   r  r  r<  s       r/   test_eb_constraintsr    se    -. #401KY]FF1I	 q>% D(((r2   c                     [         [        [        [        [        [
        S.n U R                  5        H  u  pU H  n[        X5        M     M     SSSS.nUR                  5        H  u  p[        [        [        X5        M     g )N)r   r  rootroot_scalarlinprogquadratic_assignmentekkir#  )r   maximizemaximize_scalar)
r   r   r   r   r   r   itemsr   rT   rU   )solver_methodssolverr%  r   unknown_solver_methods        r/   test_show_optionsr  '  sz    $2*" <N *//1F(  2 !
 0557j,? 8r2   c                      [         R                  " SS/SS/S9n [         R                  " [         R                  [        R
                  " SS/5      SU S9  g )Nr  r6  rf  r   r'  r  )r   r   r   r   r+   rP   r  s    r/   test_bounds_with_listr  ?  sB    __Rc3Z8F288QF+HVr2   c            	      <   S n S nS n/ SQn/ SQn[         R                  " S5      S-  n[         Hh  nS nS nXc;   a  UnXd;   a  Un[        R                  " XXgUS9n	[        U	R                  [         R                  " [         R                  " U5      5      S	S
9  Mj     g )Nc                     [         R                  " [         R                  " U 5      5      nX-  n X -  n [         R                  " U 5      $ rC   )r+   rS   r  rE   r  s     r/   fquad/test_x_overwritten_user_function.<locals>.fquadK  s4    IIbggaj!		vvayr2   c                 t    [         R                  " [         R                  " U 5      5      nU S-  n U SU-  -  n U $ r]  )r+   rS   r  r  s     r/   	fquad_jac3test_x_overwritten_user_function.<locals>.fquad_jacQ  s3    IIbggaj!	Q	QU
r2   c                 \    [         R                  " [         R                  " U 5      5      S-  $ r$  )r+   r   r  r-   s    r/   
fquad_hess4test_x_overwritten_user_function.<locals>.fquad_hessW  s    vvbggaj!C''r2   )rv  r.  r+  r/  r,  r*  )r.  r+  r/  r,  r*  r   r8   r-  g-C6*?r   )	r+   r}  r   r   r   r   r.   rS   r  )
r  r  r  meth_jac	meth_hessrY   methr   r   r   s
             r/    test_x_overwritten_user_functionr  G  s    (HI 
c	B CD$dKryy5DA !r2   c                       \ rS rSrS rSrg)TestGlobalOptimizationio  c                 &   S n[         R                  " USS9[         R                  " US/5      [         R                  " US/5      [         R                  " US/5      [         R
                  " US/5      /nU H  n[        U[         R                  5      (       d   e[        US5      (       d   e[        US5      (       d   e[        US5      (       d   e[        US5      (       d   e[        US	5      (       d   e[        US
5      (       a  M   e   g )Nc                     U S-  $ r]  r   r-   s    r/   r   DTestGlobalOptimization.test_optimize_result_attributes.<locals>.funcr  s    6Mr2   r)   )rY   )r  r   r.   r   re  r   r   r  )	r   basinhoppingdifferential_evolutionshgodual_annealingdirectr  r   rz   )rt   r   r  rl  s       r/   test_optimize_result_attributes6TestGlobalOptimization.test_optimize_result_attributesq  s    	 ((!4224'C==y1**4';??4'3	 Ffh&=&=>>>>63''''69----69----65))))66****65)))) r2   r   N)r   r   r   r   r  r   r   r2   r/   r  r  o  s    *r2   r  c                      [         R                  " [        [        5      n [	        U [        [        5      SS9  [         R                  " [        [
        5      n[	        U[        [        5      SS9  g )Nr*  r   )r   approx_fprimerX   r<  r   rV   rW   )r  rW  s     r/   test_approx_fprimer    sJ     	}j9AA}5DA}o>AA}5DAr2   c                  n   S n [        SS/SS/S9n[        R                  " U SSUS9n[        [        R                  " SS/5      [        R                  " SS/5      S9n[        R                  " U SSUS9n[        UR                  UR                  5        [        UR                  UR                  5        g )Nc                 *    U S   S-  U S   S-
  S-  -   $ r  r   r-   s    r/   r   test_gh12594.<locals>.f  s!    tQw!A$(Q&&r2   r  r   rf  r   r'  r  )r   r   r   r+   rP   r   r   r.   )r   r<  r   r  s       r/   test_gh12594r    s    
' Szr2h/F


A&&
ICrxxc
+"b0BCF


A&&
ICCGGSWW%CEE355!r2   rj  r*  sparse_typec                   ^ U4S jnSS/n[         R                  " [        X0[        US9n[         R                  " [        X0[        [        S9n[        UR                  UR                  5        [        UR                  UR                  5        UR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eg )Nc                 &   > T" [        U 5      5      $ rC   )r   )r.   r  s    r/   sparse_rosen_hess.test_sparse_hessian.<locals>.sparse_rosen_hess  s    :a=))r2   r  r-  )r   r   r   r   r   r   r   r.   r   r   nhev)r   r  r  rY   
res_sparse	res_denses    `    r/   test_sparse_hessianr    s    * bB""5"'07HJJ!!%&/jBI IMM:>>2IKK.>>Z__,,,>>Z__,,,>>Z__,,,r2   )r   r#  r{  rn   numpyr+   numpy.testingr   r   r   r   r   r   r	   r   r
   rT   scipyr   scipy.optimize._minimizer   r   r   r   r   scipy.optimize._linprogr   scipy.optimize._rootr   scipy.optimize._root_scalarr   scipy.optimize._qapr   (scipy.optimize._differentiable_functionsr   r   scipy.optimize._optimizer   r   r   scipy.optimizer   r   r   scipy.sparser   r   r   r    r!   r"   scipy.conftestr#   scipy._lib._array_api_no_0dr$   r%   r  r  r[   r]   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r2  r4  rZ  ro  rs  r}  r  r  r<  rV   rW   rX   r=  r>  r  r  r  r  r  r  r  r  r  r	  r)  r+  fixturer2  r8  r:  r=  rA  ro  r}  xfail_on_32bitr  show_configr  r  r  r  r  r  r  r  r  r  r   r2   r/   <module>r     s      A A A  *   @? ? 4 - ; < O M M 7 70 0 / H;;// 3l7' 7'tRA RAj-"0H8D$    > I: I:X'FT8 
 : 
 : 
"< 
QD QDh :-	-:= :=zjN jNZ	& &R@)< )<X<-~#6Lz6zJ*$ # # #<;7 a&4, 0  0F=77<I% I%X r    FB> B>J#2# # " "3&3&9*CQh "
# NO5$$'2;?	J6R L  N 79#561w}'=>(>?W[%9:;< ; @ ? 2 7N P;<| 79#56(/ 7(/V).@0%BP* *0B"" K#@AZ)2Iy)J K-K B-r2   