
    (ph$                         S SK r S SKrS SKJrJr  S SKJr  S SK	J
r
JrJrJrJrJrJr   " S S\5      rS rS rS rS	 r " S
 S5      r " S S5      rg)    N)TestCaseassert_array_equal)BoundsLinearConstraintNonlinearConstraintPreparedConstraintnew_bounds_to_oldold_bound_to_newstrict_boundsc                   ,    \ rS rSrS rS rS rS rSrg)TestStrictBounds
   c                 v   SnSnSnSn[        X#UU5      u  pV[        U[        R                  * [        R                  * [        R                  * /5        [        U[        R                  [        R                  [        R                  /5        Sn[        X#UU5      u  pV[        U/ SQ5        [        U/ SQ5        g )N         FT)r   r   r   )r   r   r   r   r   npinfselfmlbubenforce_feasibility	strict_lb	strict_ubs          X/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_constraints.py+test_scalarvalue_unique_enforce_feasibility<TestStrictBounds.test_scalarvalue_unique_enforce_feasibility   s    #,R-@-. 0	 	9w"&&&AB9rvvrvvrvv&>?",R-@-. 0	 	9i09i0    c                 ~   Sn/ SQn/ SQnSn[        X#UU5      u  pV[        U[        R                  * [        R                  * [        R                  * /5        [        U[        R                  [        R                  [        R                  /5        Sn[        X#UU5      u  pV[        U/ SQ5        [        U/ SQ5        g )Nr      r   r   )r         FTr   r   s          r   +test_vectorvalue_unique_enforce_feasibility<TestStrictBounds.test_vectorvalue_unique_enforce_feasibility   s    #,R.A./ 1	 	9w"&&&AB9rvvrvvrvv&>?",R.A./ 1	 	9i09i0r!   c                     SnSnSn/ SQn[        X#UU5      u  pV[        U[        R                  * S[        R                  * /5        [        U[        R                  S[        R                  /5        g )Nr   r   r   )FTFr   r   s          r   +test_scalarvalue_vector_enforce_feasibility<TestStrictBounds.test_scalarvalue_vector_enforce_feasibility/   sd    2,R-@-. 0	 	9wBFF7&;<9rvvq"&&&9:r!   c                     Sn/ SQnSS[         R                  /n/ SQn[        X#UU5      u  pV[        US[         R                  * S/5        [        US[         R                  [         R                  /5        g )Nr   r#   r   r&   )TFTr$   )r   r   r   r   r   s          r   +test_vectorvalue_vector_enforce_feasibility<TestStrictBounds.test_vectorvalue_vector_enforce_feasibility:   sg    BFF^1,R-@-. 0	 	9q266'1o69q"&&"&&&9:r!    N)	__name__
__module____qualname____firstlineno__r   r'   r*   r-   __static_attributes__r/   r!   r   r   r   
   s    1$1$	;	;r!   r   c                    ^ [         R                  " / SQ5      n [         R                  " S[         R                  S/5      n[         R                  " / SQ5      n[         R                  " / SQ[        S9n[	        XU5      n[
        R                  " [        [        XB5        [        [	        X5      / SQ5      nUR                  / SQ5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   e[         R                  " / S	Q5      n[         R                  " / S	Q/ S
Q/ SQ/5      m[         R                  " / SQ[        S9n[        T[         R                  * SU5      n[
        R                  " [        [        Xb5        [        [        T[         R                  * S5      / S	Q5      nUR                  / S	Q5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   eU4S jnU4S jnS n	[        U[         R                  * SXU5      n
[
        R                  " [        [        X5        [        U
/ SQ5      nUR                  / S	Q5      S:  R                  5       (       d   eUR                  / SQ5      S:H  R                  5       (       d   eg )N)r               ?F   r#   )FTT)dtyper   )g      ?      )r$   r   r   r   )r%   r   r   r&   )   r      r   )TTT)r   r?   r   c                 &   > TR                  U 5      $ N)dotxAs    r   fun2test_prepare_constraint_infeasible_x0.<locals>.fun]   s    uuQxr!   c                    > T$ rA   r/   rC   s    r   jac2test_prepare_constraint_infeasible_x0.<locals>.jac`   s    r!   c                 .    [         R                  " S5      $ )N)r   r   )sps
csr_matrix)rD   vs     r   hess3test_prepare_constraint_infeasible_x0.<locals>.hessc   s    ~~f%%r!   )r   arrayr   boolr   pytestraises
ValueErrorr   	violationanyallr   r   )r   r   x0r   boundspclinearrF   rI   rO   	nonlinearrE   s              @r   %test_prepare_constraint_infeasible_x0r^   F   s   	+	B	3#	$B	)	B((#6dCB/0F
MM*0&=	F2NI	6BLL#a',,....LL(A-224444	,	B
,l;<A((#5TBa"&&!-@AF
MM*0&=	,Q;(
*BLL&*//1111LL)*a/446666& $C"&&!S$79I
MM*0)@	I'7	8BLL&*//1111LL)*a/446666r!   c                     S n [        U SS/SS/5      n[        USS/5      n[        UR                  SS/5      SS/5        [        R
                  R                  UR                  SS/5      SS	/5        [        R
                  R                  UR                  SS/5      S
S/5        [        R
                  R                  UR                  S	S/5      SS/5        [        R
                  R                  UR                  S	S/5      SS/5        g )Nc                 b    [         R                  " U S   S-  U S   -   U S   S-  U S   -
  /5      $ )Nr   r   r$   )r   rQ   )rD   s    r   cons_ftest_violation.<locals>.cons_fp   s8    xx1QqT)1Q419qt+;<==r!   g333333r   r8   r$           g333333?g?g{Gz?r   g333333gRQ?g{Gz?g=
ףp=?)r   r   r   rV   r   testingassert_almost_equal)ra   nlcr[   s      r   test_violationrh   o   s    > fr7maV
<C	C#q	*Br||S!H-Bx8JJ""2<<c
#;b#YGJJ""2<<c
#;dAYGJJ""2<<d#<tQiHJJ""2<<a#9D$<Hr!   c                     [         R                  " [         R                  * SS/5      n [         R                  " S[         R                  S/5      n/ SQn[        [	        XS5      U5        / SQn[        [	        SUS5      U5        / SQn[        [	        [         R                  * US5      U5        / SQn[        [	        U S	S5      U5        / S
Qn[        [	        U [         R                  S5      U5        / SQn[        [	        SSS5      U5        / SQn[        [	        [         R                  * [         R                  S5      U5        g )Nr   r   r   )Nr   r   N)r   r   ))rc   r   rc   N)rc   r   rc   )rj   NN)Nr   ))Nr6   )r   r6   )r   r6   r6   )rm   rk   )r   N)r$   r   rn   rn   r$   )rm   rm   rm   )r   rQ   r   r   r	   )	r   r   rZ   bounds_single_lbbounds_no_lbbounds_single_ubbounds_no_ubbounds_single_bothbounds_no_boths	            r   test_new_bounds_to_oldru      s    	BFF7Aq/	"B	1bffb/	"B,F(3V<6(R35EF8L("&&"a8,G5(R35EF7L(RVVQ7F1(Aq13EF?N("&&"&&!<nMr!   c                      SS/SS4n [         R                  " S[         R                  * S/5      n[         R                  " SS[         R                  /5      n[        U 5      u  p4[	        X15        [	        XB5        [         R                  * [         R                  4[         R                  " S/5      [         R                  " S/5      4/n [        U 5      u  p4[	        U[         R                  * S/5        [	        U[         R                  S/5        g )Nr$   r   rj   rl   rc   r   )r   rQ   r   r
   r   )rZ   lb_trueub_truer   r   s        r   test_old_bounds_to_newry      s    !fi,FhhBFF7B'(Ghh1bff~&Gf%FBr#r#w"((A3-1#!?@Ff%FBrRVVGQ<(rBFFA;'r!   c                   2    \ rS rSrS rS rS rS rS rSr	g)	
TestBounds   c           	         SSK JnJn  SS[        R                  S4[        R                  " S[        R                  * /5      [        R                  " S[        R                  /5      4[        R                  " S[        R                  * /5      [        R                  " S[        R                  /5      [        R                  " SS/5      44 H  n[	        U6 n[        [        [	        U6 5      5      n[        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        M     g )	Nr   )rQ   r   )      g      @r~   T      ?g       @F)numpyrQ   r   r   r   evalreprr   r   r   keep_feasible)r   rQ   r   argsrZ   bounds2s         r   	test_reprTestBounds.test_repr   s    $2664 XXsRVVGn%rxxbff'>?XXsRVVGn%rxxbff'>XXtUm$&	
D T]F4./Gvyy'**5vyy'**5v33W5J5JK
r!   c                     [        SS/SS/S9n[        UR                  [        R                  5      (       d   e[        UR
                  [        R                  5      (       d   eg )Nrd   r   )r   r   )r   
isinstancer   r   ndarrayr   )r   bs     r   
test_arrayTestBounds.test_array   sL    sCjc3Z0!$$

++++!$$

++++r!   c                 *   [        5       n[        [        R                  " [        R                  * 5      [        R                  " [        R                  5      5      nUR                  UR                  :X  d   eUR
                  UR
                  :X  d   eg rA   )r   r   asarrayr   r   r   )r   b1b2s      r   test_defaultsTestBounds.test_defaults   sY    XBJJw'BFF);<uu~~uu~~r!   c           	         Sn[         R                  " [        US9   [        [        R
                  " SS/5      SS/5        S S S 5        [         R                  " [        US9   [        SS/[        R
                  " SS/5      5        S S S 5        Sn[         R                  " [        US9   [        SS/SS/[        R
                  " SS/5      S9  S S S 5        Sn[         R                  " [        US9   [        SS// S	Q5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ne= f! , (       d  f       g = f)
Nz,Lower and upper bounds must be dense arrays.matchr$   r   z&`keep_feasible` must be a dense array.Tr   z6`lb`, `ub`, and `keep_feasible` must be broadcastable.r#   )rS   rT   rU   r   rL   	coo_array)r   messages     r   test_input_validation TestBounds.test_input_validation   s    @]]:W53==!Q(1a&1 6]]:W5Aq63==!Q01 6 ;]]:W5Aq6Aq6d|1LM 6 K]]:W5Aq69% 65 6555 65 65s/   %D"%D*&D/3E 
D
D,/
D= 
Ec                     [        SS5      nSS/n[        R                  R                  UR	                  U5      SS/SS/45        g )Nr   rc   r   r$   r%   )r   r   re   assert_allcloseresidual)r   rZ   rY   s      r   test_residualTestBounds.test_residual   s@    A!W


""6??2#6!Q!Q8HIr!   r/   N)
r0   r1   r2   r3   r   r   r   r   r   r4   r/   r!   r   r{   r{      s    L ,&Jr!   r{   c                   &    \ rS rSrS rS rS rSrg)TestLinearConstraint   c                    [         R                  " S5      n[        U5      n[        U[         R                  * [         R                  5      n[	        UR
                  UR
                  5        [	        UR                  UR                  5        g )Nr   )r   eyer   r   r   r   r   )r   rE   lclc2s       r   r   "TestLinearConstraint.test_defaults   sU    FF1Ia q266'2662255#&&)255#&&)r!   c           	         [         R                  " S5      nSn[        R                  " [        US9   [        USS// SQ5        S S S 5        Sn[        R                  " [        US9   [        U[        R                  " SS/5      SS/5        S S S 5        [        R                  " [        US9   [        USS/[        R                  " SS/5      5        S S S 5        S	n[        R                  " [        US9   [        R                  " S
S
/5      n[        USS/SS/US9  S S S 5        [         R                  " S5      nSn[        R                  " [        US9   [        U5        S S S 5        g ! , (       d  f       GN1= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   z5`lb`, `ub`, and `keep_feasible` must be broadcastabler   r$   r   r#   z&Constraint limits must be dense arraysr   z%`keep_feasible` must be a dense arrayTr   )r   r   r%   z%`A` must have exactly two dimensions.)	r   r   rS   rT   rU   r   rL   r   empty)r   rE   r   r   s       r   r   *TestLinearConstraint.test_input_validation   s>   FF1II]]:W5QA	2 6 ;]]:W5Qq!f 51v> 6]]:W5QAq!f(=> 6 :]]:W5MM4,7MQAAmL 6 HHY9]]:W5Q 65! 65 6555 65 65s;   E.'&F .&F7)F"F3.
E= 
F
F"
F03
Gc                     [         R                  " S5      n[        USS5      nSS/n[         R                  R	                  UR                  U5      SS/SS/45        g )Nr   r   r   rc   r$   r%   )r   r   r   re   r   r   )r   rE   r   rY   s       r   r   "TestLinearConstraint.test_residual   sO    FF1IaQ'!W


""2;;r?aVaV4DEr!   r/   N)r0   r1   r2   r3   r   r   r   r4   r/   r!   r   r   r      s    * ,Fr!   r   )rS   r   r   numpy.testingr   r   scipy.sparsesparserL   scipy.optimize._constraintsr   r   r   r   r	   r
   r   r   r^   rh   ru   ry   r{   r   r/   r!   r   <module>r      s]      6 8 8 8
9;x 9;x&7RI$N4( /J /Jd"F "Fr!   