
    (ph[                         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   " S S5      r " S S	5      rg)
z#
Unit test for SLSQP optimization.
    )assert_assert_array_almost_equalassert_allcloseassert_equal)raisesN)
fmin_slsqpminimizeBoundsNonlinearConstraintc                   $    \ 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    R/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_slsqp.py__init__MyCallBack.__init__   s         c                 <    SU l         U =R                  S-  sl        g )NT   r   r   xs     r   __call__MyCallBack.__call__   s    qr   r   N)__name__
__module____qualname____firstlineno____doc__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: r9\0Rb                  Rt                  S; 5       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      r%   )r   dsignr   ys        r   funTestSLSQP.fun&   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   r0      )nparrayfloat)r   r1   r2   r   r3   dfdxdfdys          r   jacTestSLSQP.jac6   sY     aDaDRTAaCZ!^$QqS1Q3Yxxe,,r   c                 F    U R                  X5      U R                  X5      4$ N)r4   r>   )r   r1   r2   s      r   fun_and_jacTestSLSQP.fun_and_jacB   s    xx $((1"333r   c                 B    [         R                  " US   US   -
  /5      $ )Equality constraint r   r   r9   r:   r   r   r2   s      r   f_eqconTestSLSQP.f_eqconE   s    xx1!&&r   c                 4    [         R                  " SS//5      $ )z Equality constraint, derivative r   rF   rG   s      r   fprime_eqconTestSLSQP.fprime_eqconI       xx!R	""r   c                 *    U R                  X5      S   $ )zScalar equality constraint r   )rH   rG   s      r   f_eqcon_scalarTestSLSQP.f_eqcon_scalarM   s    ||A$Q''r   c                 F    U R                  X5      S   R                  5       $ )z'Scalar equality constraint, derivative r   )rL   tolistrG   s      r   fprime_eqcon_scalarTestSLSQP.fprime_eqcon_scalarQ   s!      )!,3355r   c                 H    [         R                  " US   US   -
  S-
  /5      $ )zInequality constraint r   r         ?rF   rG   s      r   f_ieqconTestSLSQP.f_ieqconU   s%    xx1!s*+,,r   c                 4    [         R                  " SS//5      $ )z"Inequality constraint, derivative r   rK   rF   rG   s      r   fprime_ieqconTestSLSQP.fprime_ieqconY   rN   r   c                 .    [         R                  " U5      $ )zVector inequality constraint )r9   asarrayr   s     r   	f_ieqcon2TestSLSQP.f_ieqcon2]   s    zz!}r   c                 H    [         R                  " UR                  S   5      $ )z)Vector inequality constraint, derivative r   )r9   identityshaper   s     r   fprime_ieqcon2TestSLSQP.fprime_ieqcon2a   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      rW   rh   SLSQPargsr>   methodoptionssuccessmessager0   r   )r	   r4   r,   r   r   r   r   jacsr>   ress       r   $test_minimize_unbounded_approximated.TestSLSQP.test_minimize_unbounded_approximatedf   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 )
Nrh   rW   ri   rj   rk   ro   rp   r0   r   )r	   r4   r>   r,   r   r   r   r   rs   s     r   test_minimize_unbounded_given'TestSLSQP.test_minimize_unbounded_givenp   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)Nrg   ignore)invalidrh   rW   ri   ))      @N)N      ?rj   )rl   r>   boundsrm   rn   ro   rp   r}   r~   r   r   )r9   errstater	   r4   r,   r   r   r   rq   s       r   "test_minimize_bounded_approximated,TestSLSQP.test_minimize_bounded_approximatedw   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 )Nrh   rW   ri   Trj   rk   ro   rp   r0   r   )r	   rB   r,   r   r   r   rw   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 )Nrg   rh   rW   ri   eqtyper4   rl   rj   )rl   r>   constraintsrm   rn   ro   rp   r   )r	   r4   rH   r,   r   r   r   rq   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 )Nrh   rW   rj   ri   r   r   r>   rm   rl   r   rn   ro   rp   r   )r	   r4   r>   rH   r,   r   r   r   rw   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 Nrh   rW   rj   ri   r   r   r4   rl   r>   rm   r>   rl   r   rn   ro   rp   r   	r	   r4   r>   rH   rL   r,   r   r   r   rw   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	   r4   r>   rP   rT   r,   r   r   r   rw   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 )Nrh   rW   rj   ri   ineqr   r   ro   rp   r0   r   MbP?atol)r	   r4   r>   rX   r,   r   r   r   rw   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 )Nrh   rW   rj   ri   r   )r   r4   r>   r   ro   rp   r0   r   )	r	   r4   r>   r_   rd   r,   r   r   r   rw   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~   r%   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   r0   r%   r   s    r   f5TestSLSQP.test_minimize_bounded_constraint.<locals>.f   s_    !>>7a74a1Q4n1n7a74n7a74aDAI:!	))r   r   g      ?g?r~   g        rW   rj   rm   r   r   )r   r9   r^   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 )Nrh   rW   rj   ri   皙rW   rK   皙?r   r   )rm   r>   rl   r   r   rn   ro   rp   r   r   r   r   r   r   rK   r   rw   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 )Nrh   rW   ri   r   r   )rl   iprintfull_outputr0   )r   r4   r   r   r   rs   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 )Nrh   rW   ri   r   r   )rl   fprimer   r   r0   )r   r4   r>   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 )Nrh   rW   ri   r   r   )rl   eqconsr   r   )r   r4   rH   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 )Nrh   rW   ri   r   r   )r   rl   r   r   r   )r   r4   r>   rH   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 )Nrh   rW   ri   r   r   )r   rl   f_eqconsfprime_eqconsr   r   r   r4   r>   rH   rL   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 )
Nrh   rW   ri   r   r   )r   rl   ieqconsr   r   r0      decimal)r   r4   r>   rX   r   r   r   s          r   test_inequality_givenTestSLSQP.test_inequality_given'  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 )Nrh   rW   ri   r   r   r   r   )r   rl   r   r   r   r   r   r   r   r   r   rK   r   r   s          r   test_bound_equality_given2$TestSLSQP.test_bound_equality_given21  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-  $ Nr0   r%   zs    r   <lambda>3TestSLSQP.test_scalar_constraints.<locals>.<lambda>A      Ar   g      @c                     U S   S-
  $ Nr   r   r%   r   s    r   r   r   B  s    !A$(r   r   )r   r   rW   c                     U S-  $ r   r%   r   s    r   r   r   F  r   r   c                     U S   S-
  /$ r   r%   r   s    r   r   r   G  s    AaD1H:r   )	f_ieqconsr   )r   r   r   s     r   test_scalar_constraints!TestSLSQP.test_scalar_constraints?  sM    ~t 23! 	"!bT*~t!5! 	"!bT*r   c                 &    [        S S/SS//SS9  g )Nc                     U S-  S-
  $ Nr0   r   r%   r   s    r   r   /TestSLSQP.test_integer_bounds.<locals>.<lambda>M  s    QTAXr   r   r   r   r   r   r   s    r   test_integer_boundsTestSLSQP.test_integer_boundsK  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 )Nr0   r   c                 :    [         R                  " U S-  S-
  5      $ r   )r9   sumr   s    r   r   -TestSLSQP.test_array_bounds.<locals>.<lambda>T  s    1q!1r   r}   r   r   )r9   infr:   r   r   )r   r   r   s      r   test_array_boundsTestSLSQP.test_array_boundsO  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   r%   r   s    r   r   7TestSLSQP.test_obj_must_return_scalar.<locals>.<lambda>\  s    !Qr   r   r0   r   )assert_raises
ValueErrorr   r   s    r   test_obj_must_return_scalar%TestSLSQP.test_obj_must_return_scalarX  s#     :&'3 '&&s   )
7c                      [        S / SQSS9  g )Nc                     S/$ Nr   r%   r   s    r   r   ;TestSLSQP.test_obj_returns_scalar_in_list.<locals>.<lambda>b  s    aSr   r  r   )r   r   r   s    r   test_obj_returns_scalar_in_list)TestSLSQP.test_obj_returns_scalar_in_list^  s     	=)A6r   c           	          [        5       n[        U R                  SS/SSXR                  S9n[	        US   US   5        [	        UR
                  5        [        UR                  US   5        g )	Nrh   rW   ri   rj   )rl   rm   callbackrn   ro   rp   nit)r   r	   r4   r,   r   r   r   r   )r   r  rs   s      r   test_callbackTestSLSQP.test_callbackd  s]    <txx$8%))MII/$$%X__c%j1r   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   r%   r   s    r   f15TestSLSQP.test_inconsistent_linearization.<locals>.f1x      Q4!A$;?"r   c                     U S   S-  S-
  $ Nr   r0   r   r%   r   s    r   f25TestSLSQP.test_inconsistent_linearization.<locals>.f2z  s    Q419q= r   c                 $    U S   S-  U S   S-  -   $ r  r%   r   s    r   r   ;TestSLSQP.test_inconsistent_linearization.<locals>.<lambda>}      adAg!a'r   r   r   r4   r   r   Nr  rj   r   r   rm   g:0yE>r   g:0yE)r	   r   r   r   ro   )r   r   r  r  sols        r   test_inconsistent_linearization)TestSLSQP.test_inconsistent_linearizationm  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   r0   c                 $    U S   S-  U S   S-  -   $ r  r%   r   s    r   r   0TestSLSQP.test_regression_5743.<locals>.<lambda>  r  r   r   c                     U S   U S   -   S-
  $ r   r%   r   s    r   r   r&    s    qtAaDy{r   r  r   c                     U S   S-
  $ )Nr   r0   r%   r   s    r   r   r&    s    1ar   r  rj   r   )r	   r   ro   )r   r   r!  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   r0   r~   r%   r   s    r   func$TestSLSQP.test_gh_6676.<locals>.func  s?    aD1Hq=1adQh]?2S!A$(Q5FFFr   r   r   r   rj   rm   )r   )r	   r   r>   rc   )r   r-  r!  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   r0   r0   r   )r5  r4  )r5  r5  r   r   )r   r   rh   rW   rj   )r   rm   )r9   r   r  r  r	   r4   )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   r%   r   s    r   r   )TestSLSQP.test_bounds_clipping.<locals>.f  s    aD1Hq= r   
   slsqpr  rm   r   r   绽|=r   )r0   Nr0         )rK   r   r	   r   ro   r   r   )r   r   r!  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   r%   r   s    r   r   ,TestSLSQP.test_infeasible_initial.<locals>.f  s    BA319q= r   r   c                     SU -
  $ r  r%   r   s    r   r   3TestSLSQP.test_infeasible_initial.<locals>.<lambda>      AEr   r  c                     U S-
  $ r   r%   r   s    r   r   rI    rJ  r   c                     SU -
  $ r  r%   r   s    r   r   rI        QUr   c                     U S-   $ Nr   r%   r   s    r   r   rI    rM  r   r<  r=  )rm   r   r   r?  r   r@  r0   rA  rB  )r   r   cons_ucons_lcons_ulr!  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   -  -   $ )NrK   r   r8   r   r%   r   s    r   cost6TestSLSQP.test_inconsistent_inequalities.<locals>.cost  s    !9q1Q4x''r   c                     U S   U S   -
  S-
  $ )Nr   r   r%   r   s    r   	ineqcons1;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons1  r  r   c                     U S   U S   -
  $ r   r%   r   s    r   	ineqcons2;TestSLSQP.test_inconsistent_inequalities.<locals>.ineqcons2  s    Q4!A$;r   )r      )re  rf  r   r  rj   r   )dictr	   r   ro   )r   r]  r`  rc  r   r   consrs   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  r%   r   s    r   r   )TestSLSQP.test_new_bounds_type.<locals>.f	  s    Q419qtqy((r   r   r   r=  r>  )r
   r9   r   r	   r   ro   r   r   )r   r   r   r!  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>.NestedProblemi  c                     SU l         g r  F_outer_countr   s    r   r   BTestSLSQP.test_nested_minimization.<locals>.NestedProblem.__init__  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   r8   rj   r0  r   r0   )rv  	Exceptionr	   F_innerr   ro   r   r   )r   r   	inner_ress      r   F_outerATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_outer  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   r%   r   s     r   rz  ATestSLSQP.test_nested_minimization.<locals>.NestedProblem.F_inner   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)re  re  re  rj   r0  r/  )r	   r|  r   ro   r   r   )r   	outer_ress     r   solve?TestSLSQP.test_nested_minimization.<locals>.NestedProblem.solve#  s0    $T\\9WM		))*	Y7r   ru  N)	r   r    r!   r"   r   r|  rz  r  r$   r%   r   r   NestedProblemrs    s    '358r   r  )r  )r   r  problems      r   test_nested_minimization"TestSLSQP.test_nested_minimization  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      $ rO  )r9   sqrtr   s    r   r4   "TestSLSQP.test_gh1758.<locals>.fun/  s    771Q4= r   c                 $    U S   SU S   -  S-  -
  $ )rE   r   r0   r   r   r%   r   s    r   rH   &TestSLSQP.test_gh1758.<locals>.f_eqcon2  s    Q41qt8/))r   c                 &    U S   U S   * S-   S-  -
  $ )rE   r   r   r   r%   r   s    r   f_eqcon2'TestSLSQP.test_gh1758.<locals>.f_eqcon26  s     Q4AaD519***r   r   r     g      ?rj   )rA  r   )r   r  )rm   r   r   g8r](k?gQUU?gc@?)r	   r9   testingr   r4   r   ro   )r   r4   rH   r  c1c2rs   s          r   test_gh1758TestSLSQP.test_gh1758+  s    	!	*	+ 7+8,sQIg$&8Y4GI 	

""377O<


""355:y*AB{{{r   c           
          [         R                  R                  S5        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<  r   c                      U S   * U S   -
  S-
  $ )Nr   r   r   r%   r   s    r   r   'TestSLSQP.test_gh9640.<locals>.<lambda>F  s    1Q4%!A$,2Br   r  c                     U S   U S   -   S-
  $ )Nr   r0   r%   r   s    r   r   r  G  s    !A$1+/r   )r7   r0   r  r  c                     grO  r%   r   s    r   target%TestSLSQP.test_gh9640.<locals>.targetJ  s    r   )g51gУX{gP(rj   Fi'  )r*   maxiter)rm   r   r   rn   )r9   randomseedr	   ro   )r   ri  bndsr  r   rs   s         r   test_gh9640TestSLSQP.test_gh9640D  sd    
		r(BC(ABD*	Kv'$',>@ ;;;r   c                 >  ^ [         R                  R                  S5        [        [         R                  " S/5      [         R                  " S/5      5      m[        TR                  5      n[         R                  " TR                  TR                  TR                  -
  [         R                  R                  U5      -  -   5      nU4S jn[        R                  " [        SS9   [        X2STS9nUR                  (       d   e S S S 5        g ! , (       d  f       g = f)	Nr   g?rW   c                    > U TR                   :  R                  5       (       d   e[        R                  R	                  U 5      $ rA   )lballr9   linalgnorm)r   r   s    r   r   7TestSLSQP.test_parameters_stay_within_bounds.<locals>.f_  s3    N''))))99>>!$$r   zx were outside bounds)matchrj   r>  )r9   r  r  r
   r:   lenr  ubpytestwarnsRuntimeWarningr	   ro   )r   n_inputsr   r   rs   r   s        @r   "test_parameters_stay_within_bounds,TestSLSQP.test_parameters_stay_within_boundsS  s     			q#3%9vyy>XXfii699vyy#8ii&&x0#1 1 2	% \\.0GH1@C;;; IHHs   %D
Dr+   N)rW   )=r   r    r!   r"   r#   r-   r4   r>   rB   rH   rL   rP   rT   rX   r[   r_   rd   rt   rx   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)  r1  r7  rC  rS  r  markxfailscipyshow_configrj  ro  r  r  r  thread_unsafer  r$   r%   r   r   r'   r'      se   $2 
-4'#(6-#'
+'%'+'''	2
'E$'"----
-8#
+G-472"8&'O.>!.F [[u((g6{CINvV&'W  Y!Y!0'62 [[ r   r'   )r#   numpy.testingr   r   r   r   r  r   r  numpyr9   r  scipy.optimizer   r	   r
   r   r   r'   r%   r   r   <module>r     s<   : : *    L L I	 I	r   