
    doi>d                         S r SSKJrJrJrJr  SSKJ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   " S S5      r " S S	5      rS
 rg)z#
Unit test for SLSQP optimization.
    )assert_assert_array_almost_equalassert_allcloseassert_equal)raisesN)
fmin_slsqpminimizeBoundsNonlinearConstraintOptimizeResultc                   0    \ rS rSrSrS rS rS rS rSr	g)	
MyCallBack   zBpass a custom callback function

This makes sure it's being used.
c                      SU l         SU l        g )NFr   been_calledncallsselfs    [/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_slsqp.py__init__MyCallBack.__init__   s         c                 j    [        U[        5      (       a   eSU l        U =R                  S-  sl        g NT   
isinstancer   r   r   r   xs     r   __call__MyCallBack.__call__   s+    a0000qr   c                 j    [        U[        5      (       d   eSU l        U =R                  S-  sl        g r   r   r   intermediate_results     r   	callback2MyCallBack.callback2   s,    -~>>>>qr   c                 <    [        U[        5      (       d   e[        eN)r   r   StopIterationr$   s     r   	callback3MyCallBack.callback3"   s    -~>>>>r   r   N)
__name__
__module____qualname____firstlineno____doc__r   r!   r&   r+   __static_attributes__ r   r   r   r      s    

r   r   c                      \ rS rSrSrS rS>S jrS>S jrS>S jrS>S jr	S>S jr
S>S	 jrS>S
 jrS>S jrS>S j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"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/\0Rb                  Re                  \3Rh                  " S.S/9S0   S1   S2   S3:H  S4S59S6 5       r5S7 r6S8 r7S9 r8S: r9S; r:S<r;g=)?	TestSLSQP'   z
Test SLSQP algorithm using Example 14.4 from Numerical Methods for
Engineers by Steven Chapra and Raymond Canale.
This example maximizes the function f(x) = 2*x*y + 2*x - x**2 - 2*y**2,
which has a maximum at x=2, y=1.
c                     SS0U l         g )NdispFoptsr   s    r   setup_methodTestSLSQP.setup_method.   s    UO	r   c                 V    US   nUS   nUSU-  U-  SU-  -   US-  -
  SUS-  -  -
  -  $ )a^  
Arguments:
d     - A list of two elements, where d[0] represents x and d[1] represents y
         in the following equation.
sign - A multiplier for f. Since we want to optimize it, and the SciPy
       optimizers can only minimize functions, we need to multiply it by
       -1 to achieve the desired solution
Returns:
2*x*y + 2*x - x**2 - 2*y**2

r   r      r3   )r   dsignr    ys        r   funTestSLSQP.fun1   sG     aDaDQqSUQqS[1a4'!AqD&011r   c                     US   nUS   nUSU-  SU-  -   S-   -  nUSU-  SU-  -
  -  n[         R                  " XV/[        5      $ )zW
This is the derivative of fun, returning a NumPy array
representing df/dx and df/dy.

r   r   r>      )nparrayfloat)r   r?   r@   r    rA   dfdxdfdys          r   jacTestSLSQP.jacA   sY     aDaDRTAaCZ!^$QqS1Q3Yxxe,,r   c                 F    U R                  X5      U R                  X5      4$ r)   )rB   rL   )r   r?   r@   s      r   fun_and_jacTestSLSQP.fun_and_jacM   s    xx $((1"333r   c                 B    [         R                  " US   US   -
  /5      $ )Equality constraint r   r   rG   rH   r   r    r@   s      r   f_eqconTestSLSQP.f_eqconP   s    xx1!&&r   c                 4    [         R                  " SS//5      $ )z Equality constraint, derivative r   rS   rT   s      r   fprime_eqconTestSLSQP.fprime_eqconT       xx!R	""r   c                 *    U R                  X5      S   $ )zScalar equality constraint r   )rU   rT   s      r   f_eqcon_scalarTestSLSQP.f_eqcon_scalarX   s    ||A$Q''r   c                 F    U R                  X5      S   R                  5       $ )z'Scalar equality constraint, derivative r   )rY   tolistrT   s      r   fprime_eqcon_scalarTestSLSQP.fprime_eqcon_scalar\   s!      )!,3355r   c                 H    [         R                  " US   US   -
  S-
  /5      $ )zInequality constraint r   r         ?rS   rT   s      r   f_ieqconTestSLSQP.f_ieqcon`   s%    xx1!s*+,,r   c                 4    [         R                  " SS//5      $ )z"Inequality constraint, derivative r   rX   rS   rT   s      r   fprime_ieqconTestSLSQP.fprime_ieqcond   r[   r   c                 .    [         R                  " U5      $ )zVector inequality constraint )rG   asarrayr   s     r   	f_ieqcon2TestSLSQP.f_ieqcon2h   s    zz!}r   c                 H    [         R                  " UR                  S   5      $ )z)Vector inequality constraint, derivative r   )rG   identityshaper   s     r   fprime_ieqcon2TestSLSQP.fprime_ieqcon2l   s    {{1771:&&r   c           
          / SQnU HQ  n[        U R                  SS/SUSU R                  S9n[        US   US   5        [	        UR
                  S	S
/5        MS     g )NNFz2-pointz3-point      rd   ru   SLSQPargsrL   methodoptionssuccessmessager>   r   )r	   rB   r:   r   r   r    r   jacsrL   ress       r   $test_minimize_unbounded_approximated.TestSLSQP.test_minimize_unbounded_approximatedq   s[    2C488dC[x"7#'99.C C	NC	N3CEEAq6* r   c           	          [        U R                  SS/SU R                  SU R                  S9n[	        US   US   5        [        UR                  SS	/5        g )
Nru   rd   rv   rw   rx   r|   r}   r>   r   )r	   rB   rL   r:   r   r   r    r   r   s     r   test_minimize_unbounded_given'TestSLSQP.test_minimize_unbounded_given{   sN    txx$888GTYYHII/1v&r   c                    / SQnU H  n[         R                  " SS9   [        U R                  SS/SUSSU R                  S	9nS S S 5        [        WS
   US   5        [        UR                  SS/5        [        SUR                  S   :*  5        [        UR                  S   S:*  5        M     g ! , (       d  f       Ns= f)Nrt   ignore)invalidru   rd   rv   ))      @N)N      ?rw   )ry   rL   boundsrz   r{   r|   r}   r   r   r   r   )rG   errstater	   rB   r:   r   r   r    r~   s       r   "test_minimize_bounded_approximated,TestSLSQP.test_minimize_bounded_approximated   s    2CX.txx$8#&&@&-tyyB /
 C	NC	N3CEEC:.C3558O$CEE!HO$ ..s   &B11
B?	c           	          [        U R                  SS/SSSU R                  S9n[        US   US   5        [	        UR
                  S	S
/5        g )Nru   rd   rv   Trw   rx   r|   r}   r>   r   )r	   rO   r:   r   r   r    r   s     r    test_minimize_unbounded_combined*TestSLSQP.test_minimize_unbounded_combined   sL    t''$8DII/1v&r   c                     / SQnU H`  n[        U R                  SS/SUSU R                  SS.SU R                  S9n[	        US	   US
   5        [        UR                  SS/5        Mb     g )Nrt   ru   rd   rv   eqtyperB   ry   rw   )ry   rL   constraintsrz   r{   r|   r}   r   )r	   rB   rU   r:   r   r   r    r~   s       r   #test_minimize_equality_approximated-TestSLSQP.test_minimize_equality_approximated   so    2C488dC[x"04/3||08(: #*499>C C	NC	N3CEEAq6* r   c                     [        U R                  SS/U R                  SSSU R                  SS.U R                  S9n[        US   US	   5        [        UR                  S
S
/5        g )Nru   rd   rw   rv   r   r   rL   rz   ry   r   r{   r|   r}   r   )r	   rB   rL   rU   r:   r   r   r    r   s     r   test_minimize_equality_given&TestSLSQP.test_minimize_equality_given   sa    txx$$((%G,0,4$6#yy	*
 	II/1v&r   c                     [        U R                  SS/SU R                  SSU R                  SU R                  S.U R
                  S9n[        US   US	   5        [        UR                  S
S
/5        g Nru   rd   rw   rv   r   r   rB   ry   rL   rz   rL   ry   r   r{   r|   r}   r   	r	   rB   rL   rU   rY   r:   r   r   r    r   s     r   test_minimize_equality_given2'TestSLSQP.test_minimize_equality_given2   so     txx$W88',0+/<<,4+/+<+<$>  $yy* 	II/1v&r   c                     [        U R                  SS/SU R                  SSU R                  SU R                  S.U R
                  S9n[        US   US	   5        [        UR                  S
S
/5        g r   )	r	   rB   rL   r]   ra   r:   r   r   r    r   s     r   (test_minimize_equality_given_cons_scalar2TestSLSQP.test_minimize_equality_given_cons_scalar   sr     txx$W88',0+/+>+>,4+/+C+C$E  $yy* 	II/1v&r   c                     [        U R                  SS/SU R                  SSU R                  SS.U R                  S9n[        US   US	   5        [        UR                  S
S/SS9  g )Nru   rd   rw   rv   ineqr   r   r|   r}   r>   r   MbP?atol)r	   rB   rL   re   r:   r   r   r    r   s     r   test_minimize_inequality_given(TestSLSQP.test_minimize_inequality_given   sf    txx$W88(,2+/==,4$6  $yy* 	II/1vD1r   c                     [        U R                  SS/U R                  SSSU R                  U R                  S.U R
                  S9n[        US   US	   5        [        UR                  S
S/5        g )Nru   rd   rw   rv   r   )r   rB   rL   r   r|   r}   r>   r   )	r	   rB   rL   rl   rq   r:   r   r   r    r   s     r   1test_minimize_inequality_given_vector_constraints;TestSLSQP.test_minimize_inequality_given_vector_constraints   sm     txx$$((%G,2+/>>+/+>+>$@  $yy* 	II/1v&r   c                     S nS n[        USS5      /n[        R                  " SS/5      n[        SS/SS/5      n[	        X$S	XSS
9  g )Nc                     SU S   s=::  a  S::  a!  O   U 5       eSU S   s=::  a  S::  d   U 5       e   U 5       eU S   S-  U S   -   $ )Nr   r   r   r3   r    s    r   c5TestSLSQP.test_minimize_bounded_constraint.<locals>.c   sY    !>>7a74a1Q4n1n7a74n7a74Q43;1%%r   c                     SU S   s=::  a  S::  a!  O   U 5       eSU S   s=::  a  S::  d   U 5       e   U 5       eU S   S-  * U S   S-  -   $ Nr   r   r>   r3   r   s    r   f5TestSLSQP.test_minimize_bounded_constraint.<locals>.f   s_    !>>7a74a1Q4n1n7a74n7a74aDAI:!	))r   r   g      ??r   g        rd   rw   rz   r   r   )r   rG   rk   r
   r	   )r   r   r   cnsx0bnds         r    test_minimize_bounded_constraint*TestSLSQP.test_minimize_bounded_constraint   sQ    
	&	* #1a-.ZZc
#b"XSz*wsDr   c                    [        U R                  SS/SU R                  SSS/SU R                  SU R                  S.U R
                  S	9n[        US
   US   5        [        UR                  SS/SS9  [        SUR                  S   s=:*  =(       a    S:*  Os  5        [        SUR                  S   s=:*  =(       a
    S:*  5        g s  5        g )Nru   rd   rw   rv   皙rd   rX   皙?r   r   )rz   rL   ry   r   r   r{   r|   r}   r   r   r   r   r   r   rX   r   r   s     r   #test_minimize_bound_equality_given2-TestSLSQP.test_minimize_bound_equality_given2   s     txx$W88()95,0+/<<,4+/+<+<$>  $yy* 	II/Sz5a%%A%&ceeAh%%#%&%&r   c                 |    [        U R                  SS/SSSS9nUu  p#pEn[        US:H  U5        [        USS/5        g )Nru   rd   rv   r   r   )ry   iprintfull_outputr>   )r   rB   r   r   r   r   r    fxitsimodesmodes          r   test_unbounded_approximated%TestSLSQP.test_unbounded_approximated  sG    D#;X"#16#& s5
E"!!aV,r   c           	          [        U R                  SS/SU R                  SSS9nUu  p#pEn[        US:H  U5        [	        USS/5        g )Nru   rd   rv   r   r   )ry   fprimer   r   r>   )r   rB   rL   r   r   r   s          r   test_unbounded_givenTestSLSQP.test_unbounded_given
  sP    D#;X"&((Q'(* $' s5
E"!!aV,r   c           	          [        U R                  SS/SU R                  /SSS9nUu  p#pEn[        US:H  U5        [	        USS/5        g )Nru   rd   rv   r   r   )ry   eqconsr   r   )r   rB   rU   r   r   r   s          r   test_equality_approximated$TestSLSQP.test_equality_approximated  sR    4*7#'<<."#16 $' s5
E"!!aV,r   c           
          [        U R                  SS/U R                  SU R                  /SSS9nUu  p#pEn[	        US:H  U5        [        USS/5        g )Nru   rd   rv   r   r   )r   ry   r   r   r   )r   rB   rL   rU   r   r   r   s          r   test_equality_givenTestSLSQP.test_equality_given  sY    D#; $w#'<<.1'(* $' s5
E"!!aV,r   c                     [        U R                  SS/U R                  SU R                  U R                  SSS9nUu  p#pEn[        US:H  U5        [        USS/5        g )Nru   rd   rv   r   r   )r   ry   f_eqconsfprime_eqconsr   r   r   rB   rL   rU   rY   r   r   r   s          r   test_equality_given2TestSLSQP.test_equality_given2&  sa    D#; $w$(LL)-):):"#'(* $' s5
E"!!aV,r   c           
          [        U R                  SS/U R                  SU R                  /SSS9nUu  p#pEn[	        US:H  U5        [        USS/SS	9  g )
Nru   rd   rv   r   r   )r   ry   ieqconsr   r   r>      decimal)r   rB   rL   re   r   r   r   s          r   test_inequality_givenTestSLSQP.test_inequality_given2  s[    D#; $x$(MM?"#16 $' s5
E"!!aVQ7r   c                 P   [        U R                  SS/U R                  SSS/U R                  U R                  SSS9	nUu  p#pEn[        US:H  U5        [        US	S	/S
S9  [        SUS   s=:*  =(       a    S:*  Os  5        [        SUS   s=:*  =(       a
    S	:*  5        g s  5        g )Nru   rd   rv   r   r   r   r   )r   ry   r   r   r   r   r   r   r   r   r   rX   r   r   s          r   test_bound_equality_given2$TestSLSQP.test_bound_equality_given2<  s    D#; $x#-y"9$(LL)-):):"#16 $' s5
E"!!c3Z;!!!!"ad!!c!"!"r   c                 v    [        S S/S /SS9n[        US/5        [        S S/S SS	9n[        US/5        g )
Nc                     U S-  $ Nr>   r3   zs    r   <lambda>3TestSLSQP.test_scalar_constraints.<locals>.<lambda>L      Ar   g      @c                     U S   S-
  $ Nr   r   r3   r   s    r   r   r   M  s    !A$(r   r   )r   r   rd   c                     U S-  $ r   r3   r   s    r   r   r   Q  r   r   c                     U S   S-
  /$ r   r3   r   s    r   r   r   R  s    AaD1H:r   )	f_ieqconsr   )r   r   r   s     r   test_scalar_constraints!TestSLSQP.test_scalar_constraintsJ  sM    ~t 23! 	"!bT*~t!5! 	"!bT*r   c                 &    [        S S/SS//SS9  g )Nc                     U S-  S-
  $ Nr>   r   r3   r   s    r   r   /TestSLSQP.test_integer_bounds.<locals>.<lambda>X  s    QTAXr   r   r   r   r   r   r   s    r   test_integer_boundsTestSLSQP.test_integer_boundsV  s    %sQF8AFr   c                     [         R                  * [         R                  4[         R                  " S/5      [         R                  " S/5      4/n[        S SS/USS9n[	        USS/5        g )Nr>   r   c                 :    [         R                  " U S-  S-
  5      $ r   rG   sumr   s    r   r   -TestSLSQP.test_array_bounds.<locals>.<lambda>_  s    1q!1r   r   r   r  )rG   infrH   r   r   )r   r   r    s      r   test_array_boundsTestSLSQP.test_array_boundsZ  s\     FF7BFF#bhhsmRXXqc]%CD1C:f!!!aV,r   c                 t    [        [        5         [        S / SQ5        S S S 5        g ! , (       d  f       g = f)Nc                 
    SS/$ r   r3   r   s    r   r   7TestSLSQP.test_obj_must_return_scalar.<locals>.<lambda>g  s    !Qr   r   r>   r   )assert_raises
ValueErrorr   r   s    r   test_obj_must_return_scalar%TestSLSQP.test_obj_must_return_scalarc  s#     :&'3 '&&s   )
7c                      [        S / SQSS9  g )Nc                     S/$ Nr   r3   r   s    r   r   ;TestSLSQP.test_obj_returns_scalar_in_list.<locals>.<lambda>m  s    aSr   r  r   )r   r  r   s    r   test_obj_returns_scalar_in_list)TestSLSQP.test_obj_returns_scalar_in_listi  s     	=)A6r   c           	      p   [        5       n[        U R                  SS/SSXR                  S9nUR                  (       d   eUR
                  (       d   eUR                  (       d   e[        UR                  US   5        [        U R                  SS/SSUR                  U R                  S9nUR                  (       d   eUR                  (       d   e[        U R                  SS/SSUR                  U R                  S9nUR                  (       a   eUR
                  R                  S5      (       d   eg )Nru   rd   rv   rw   )ry   rz   callbackr{   nitz!`callback` raised `StopIteration`)r   r	   rB   r:   r|   r}   r   r   r   r&   r+   
startswith)r   r  r   s      r   test_callbackTestSLSQP.test_callbacko  s   <txx$8%))M{{{{{{####X__c%j1HH3K''II
 {{{####HH3K''II
 ;;{{%%&IJJJJr   c                     SS/nS nS n[        S USUS.SUS.4S	S
S9nUR                  n[        U" U5      SSS9  [        U" U5      S:  5        [        UR                  U5        g )Nr   r   c                     U S   U S   -   S-
  $ r   r3   r   s    r   f15TestSLSQP.test_inconsistent_linearization.<locals>.f1      Q4!A$;?"r   c                     U S   S-  S-
  $ Nr   r>   r   r3   r   s    r   f25TestSLSQP.test_inconsistent_linearization.<locals>.f2  s    Q419q= r   c                 $    U S   S-  U S   S-  -   $ r'  r3   r   s    r   r   ;TestSLSQP.test_inconsistent_linearization.<locals>.<lambda>      adAg!a'r   r   r   rB   r   r   Nr/  rw   r   r   rz   g:0yE>r   g:0yE)r	   r    r   r   r|   )r   r    r#  r(  sols        r   test_inconsistent_linearization)TestSLSQP.test_inconsistent_linearization  s{     F	#	!'!%R0!'r24' EE1qt,1S!r   c                 r    SS/n[        S USS S.SS S.4S	S
S9n[        UR                  (       + U5        g )Nr   r>   c                 $    U S   S-  U S   S-  -   $ r'  r3   r   s    r   r   0TestSLSQP.test_regression_5743.<locals>.<lambda>  r,  r   r   c                     U S   U S   -   S-
  $ r   r3   r   s    r   r   r6    s    qtAaDy{r   r-  r   c                     U S   S-
  $ )Nr   r>   r3   r   s    r   r   r6    s    1ar   r.  rw   r0  )r	   r   r|   )r   r    r1  s      r   test_regression_5743TestSLSQP.test_regression_5743  sM     F'!%-BC!'/?@B' 	CKK%r   c                 h    S n[        U/ SQSS9n[        UR                  R                  S:H  5        g )Nc                 T    U S   S-
  S-  SU S   S-
  S-  -  -   SU S   S-
  S-  -  -   $ )Nr   r   r>   r   r3   r   s    r   func$TestSLSQP.test_gh_6676.<locals>.func  s?    aD1Hq=1adQh]?2S!A$(Q5FFFr   r   r   r   rw   rz   )r   )r	   r   rL   rp   )r   r=  r1  s      r   test_gh_6676TestSLSQP.test_gh_6676  s-    	G tYw7%&r   c           	         SSS[         R                  S4[         R                  S44S[         R                  * 4S4/nU H3  n[        [        5         [	        U R
                  SS/US	S
9  S S S 5        M5     g ! , (       d  f       MG  = f)N)r   r>   r>   r   )rE  rD  )rE  rE  r   r   )r   r   ru   rd   rw   )r   rz   )rG   r
  r  r  r	   rB   )r   bounds_listr   s      r   test_invalid_boundsTestSLSQP.test_invalid_bounds  sw     ffa[2661+&"&&\6"
 "Fz*D#;vgN +* "**s   A77
B	c                    S n[        US/SS/S9n[        UR                  5        [        UR                  SSS9  [        US	/SS
/S9n[        UR                  5        [        UR                  SSS9  [        US	/SS/S9n[        UR                  5        [        UR                  SSS9  [        US/SS
/S9n[        UR                  5        [        UR                  SSS9  [        US/SS/S9n[        UR                  5        [        UR                  SSS9  [        US/SS/S9n[        UR                  5        [        UR                  SSS9  g )Nc                     U S   S-
  S-  $ r   r3   r   s    r   r   )TestSLSQP.test_bounds_clipping.<locals>.f  s    aD1Hq= r   
   slsqpr  rz   r   r   绽|=r   )r>   Nr>         )rX   r   r	   r   r|   r   r    )r   r   r1  s      r   test_bounds_clippingTestSLSQP.test_bounds_clipping  s)   	! q2$w	{Cqu-q3%Dqu-q3%Dqu-q2$w	{Cqu-q4&'Cqu-q2$wyAqu-r   c                    S nSS S./nSS S./nSS S.SS S./n[        US/S	US
9n[        UR                  5        [        UR                  SSS9  [        US/S	US
9n[        UR                  5        [        UR                  SSS9  [        US/S	US
9n[        UR                  5        [        UR                  SSS9  [        US/S	US
9n[        UR                  5        [        UR                  SSS9  [        US/S	US
9n[        UR                  5        [        UR                  SSS9  [        US/S	US
9n[        UR                  5        [        UR                  SSS9  g )Nc                 $    U u  n X -  SU -  -
  S-   $ r   r3   r   s    r   r   ,TestSLSQP.test_infeasible_initial.<locals>.f  s    BA319q= r   r   c                     SU -
  $ r  r3   r   s    r   r   3TestSLSQP.test_infeasible_initial.<locals>.<lambda>      AEr   r-  c                     U S-
  $ r   r3   r   s    r   r   rY    rZ  r   c                     SU -
  $ r  r3   r   s    r   r   rY        QUr   c                     U S-   $ Nr   r3   r   s    r   r   rY    r]  r   rL  rM  )rz   r   r   rO  r   rP  r>   rQ  rR  )r   r   cons_ucons_lcons_ulr1  s         r   test_infeasible_initial!TestSLSQP.test_infeasible_initial  sP   	! "/:;!/:;"?;"?;= q2$wFCqu-q3%VDqu-q3%VDqu-q2$wFCqu-q4&gFqu-q2$wGDqu-r   dicts)mode	Compilersfortrannamez
intel-llvmz7Runtime warning due to floating point issues, not logic)reasonc                     S nS nS nSnSn[        SUS9[        SUS94n[        XSXVS	9n[        UR                  (       + 5        g )
Nc                 $    SU S   -  SU S   -  -   $ )NrX   r   rF   r   r3   r   s    r   cost6TestSLSQP.test_inconsistent_inequalities.<locals>.cost  s    !9q1Q4x''r   c                     U S   U S   -
  S-
  $ Nr   r   r3   r   s    r   	ineqcons1;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons1  r%  r   c                     U S   U S   -
  $ r   r3   r   s    r   	ineqcons2;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons2  s    Q4!A$;r   )r      )rv  rw  r   r-  rw   r   )dictr	   r   r|   )r   rm  rq  rt  r   r   consr   s           r   test_inconsistent_inequalities(TestSLSQP.test_inconsistent_inequalities  sQ    	(	#	 #&i0$F	2RStQCKK r   c                     S n[        SS/[        R                  [        R                  /5      n[        USS/SUS9n[	        UR
                  5        [        UR                  SS/5        g )Nc                 $    U S   S-  U S   S-  -   $ r'  r3   r   s    r   r   )TestSLSQP.test_new_bounds_type.<locals>.f+  s    Q419qtqy((r   r   r   rM  rN  )r
   rG   r
  r	   r   r|   r   r    )r   r   r   r1  s       r   test_new_bounds_typeTestSLSQP.test_new_bounds_type*  sV    	)A 01q1a&@1v&r   c                 F     " S S5      nU" 5       nUR                  5         g )Nc                   ,    \ rS rSrS rS rS rS rSrg)9TestSLSQP.test_nested_minimization.<locals>.NestedProblemi4  c                     SU l         g r  F_outer_countr   s    r   r   BTestSLSQP.test_nested_minimization.<locals>.NestedProblem.__init__6  s
    %&"r   c                    U =R                   S-  sl         U R                   S:  a  [        S5      e[        U R                  SSS9n[	        UR
                  5        [        UR                  SS/5        US   S-  US   S-  -   US   S-  -   $ )	Nr   i  z(Nested minimization failed to terminate.)r   rF   rw   r@  r   r>   )r  	Exceptionr	   F_innerr   r|   r   r    )r   r    	inner_ress      r   F_outerATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_outer9  s    ""a'"%%,#$NOO$T\\6'J		))*	aV4tQw1q(1Q4722r   c                 0    US   S-
  S-  US   S-
  S-  -   $ r   r3   r   s     r   r  ATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_innerB  s%    !q1}!q1}44r   c                     [        U R                  SSS9n[        UR                  5        [	        UR
                  / SQ5        g )N)rv  rv  rv  rw   r@  r?  )r	   r  r   r|   r   r    )r   	outer_ress     r   solve?TestSLSQP.test_nested_minimization.<locals>.NestedProblem.solveE  s0    $T\\9WM		))*	Y7r   r  N)	r-   r.   r/   r0   r   r  r  r  r2   r3   r   r   NestedProblemr  4  s    '358r   r  )r  )r   r  problems      r   test_nested_minimization"TestSLSQP.test_nested_minimization2  s    	8 	8,  /r   c                     S nS nS nSUS.nSUS.n[        USS/SXE/S	S
/S9n[        R                  R                  UR                  S5        [        R                  R                  UR
                  SS/5        UR                  (       d   eg )Nc                 4    [         R                  " U S   5      $ r_  )rG   sqrtr   s    r   rB   "TestSLSQP.test_gh1758.<locals>.funQ  s    771Q4= r   c                 $    U S   SU S   -  S-  -
  $ )rR   r   r>   r   r   r3   r   s    r   rU   &TestSLSQP.test_gh1758.<locals>.f_eqconT  s    Q41qt8/))r   c                 &    U S   U S   * S-   S-  -
  $ )rR   r   r   r   r3   r   s    r   f_eqcon2'TestSLSQP.test_gh1758.<locals>.f_eqcon2X  s     Q4AaD519***r   r   r-     g      ?rw   )rQ  r   )r   r  )rz   r   r   g8r](k?gQUU?gc@?)r	   rG   testingr   rB   r    r|   )r   rB   rU   r  c1c2r   s          r   test_gh1758TestSLSQP.test_gh1758M  s    	!	*	+ 7+8,sQIg$&8Y4GI 	

""377O<


""355:y*AB{{{r   c           
      r    SS S.SS S.4nSnS n/ SQn[        X4SX!S	S
S.S9nUR                  (       a   eg )Nr   c                      U S   * U S   -
  S-
  $ )Nr   r   r   r3   r   s    r   r   'TestSLSQP.test_gh9640.<locals>.<lambda>g  s    1Q4%!A$,2Br   r-  c                     U S   U S   -   S-
  $ )Nr   r>   r3   r   s    r   r   r  h  s    !A$1+/r   )rE   r>   r  r  c                     gr_  r3   r   s    r   target%TestSLSQP.test_gh9640.<locals>.targetk  s    r   )g51gУX{gP(rw   Fi'  )r8   maxiter)rz   r   r   r{   )r	   r|   )r   rz  bndsr  r   r   s         r   test_gh9640TestSLSQP.test_gh9640f  sT    (BC(ABD*	Kv'$',>@ ;;;r   c                 4  ^ [        [        R                  " S/5      [        R                  " S/5      5      m[        R                  " TR                  TR                  TR                  -
  S-  -   5      nU4S jn[        X!STS9nUR                  (       d   eg )Ng?rd   g<}?c                    > U TR                   :  R                  5       (       d   e[        R                  R	                  U 5      $ r)   )lballrG   linalgnorm)r    r   s    r   r   7TestSLSQP.test_parameters_stay_within_bounds.<locals>.f  s3    N''))))99>>!$$r   rw   rN  )r
   rG   rH   r  ubr	   r|   )r   r   r   r   r   s       @r   "test_parameters_stay_within_bounds,TestSLSQP.test_parameters_stay_within_boundst  sv     #3%9XXfii699vyy#8'#( ( )	%
 qWV<{{{r   r9   N)rd   )<r-   r.   r/   r0   r1   r;   rB   rL   rO   rU   rY   r]   ra   re   rh   rl   rq   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  r9  rA  rG  rS  rc  pytestmarkxfailscipyshow_configr{  r  r  r  r  r  r2   r3   r   r   r5   r5   '   sN   $2 
-4'#(6-#'
+'%'+'''	2
'E$'"----
-8#
+G-47K@"8&'O.>!.F [[u((g6{CINvV&'W  Y!Y!0'62r   r5   c                     ^ [         R                  R                  S5      n U R                  SS/S9n[         R                  " SSS5      nS mU4S	 jnU" X5        g )
Nl   _x
&C1    im  )sizer   g      @2   c                     SS/SS//$ r   r3   )vweightss     r   metric?test_slsqp_segfault_wrong_workspace_computation.<locals>.metric  s    A1vr   c                    >^ ^^ UU 4S jmU4S jnSUU4S jS.SS S.4n[         R                  " [        T 5      S[        T 5      -  /-  /5      S   n[        UUT 4S	US
9nU$ )Nc                 "   > T" TU 5      S   S   $ rp  r3   )r  r  r  s    r   metric_a[test_slsqp_segfault_wrong_workspace_computation.<locals>.efficient_metric.<locals>.metric_a  s    !W%a(++r   c                     > T" X5      S   S   $ r  r3   )r  r  r  s     r   metric_b[test_slsqp_segfault_wrong_workspace_computation.<locals>.efficient_metric.<locals>.metric_b  s    !%a(++r   r   c                    > T" U 5      T-
  $ r)   r3   )r    r  r  s    r   r   [test_slsqp_segfault_wrong_workspace_computation.<locals>.efficient_metric.<locals>.<lambda>  s    x{V7Kr   r-  c                 4    [         R                  " U 5      S-
  $ r_  r  r   s    r   r   r    s    rvvay1}r   rd   r   rw   )ry   rz   r   )rG   rH   lenr	   )r  r  r  r   r  resultr  r  s   ``    @r   efficient_metricItest_slsqp_segfault_wrong_workspace_computation.<locals>.efficient_metric  ss    	,	, !%-KL $-DEG((CFBs1vI;./03(! !t!(&1	3
 r   )rG   randomdefault_rnguniformlinspace)rngr    r  r  r  s       @r   /test_slsqp_segfault_wrong_workspace_computationr    sT    
 ))

 0
1C"S"A[[c2&F" Qr   )r1   numpy.testingr   r   r   r   r  r   r  numpyrG   r  scipy.optimizer   r	   r
   r   r   r   r5   r  r3   r   r   <module>r     sF   : : *   , , 0_	 _	D r   