
    (ph*                     0   S SK r S SKrS SKJr  S SKJrJrJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJr  \R$                  " SS	/S
S/SS//5      r\R$                  " / SQ5      r " S S5      r " S S5      r " S S\\5      r " S S\5      r " S S5      rg)    N)lstsq)assert_allcloseassert_equalassert_)rand
coo_matrix)aslinearoperator)
lsq_linear)BoundsgS?gv/gJ+gX9vϿgsh|?ſgS㥫?)gl?gMbX9?gPnؿc                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
 5       rS rSrg)	BaseMixin   c                 L    [         R                  R                  S5      U l        g )Nr   )nprandomRandomStaternd)selfs    W/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_lsq_linear.pysetup_methodBaseMixin.setup_method   s    99((+    c           
          U R                    Hn  n[        [        [        U R                  US9n[        UR                  [        [        [        SS9S   5        [        UR                  UR                  S   5        Mp     g )Nmethod
lsq_solverrcondr   )	lsq_solversr
   Abr   r   xr   unbounded_sol)r   r   ress      r   test_dense_no_boundsBaseMixin.test_dense_no_bounds   s[    **JQ$++*MCCEE5AR#8#;<CEE3#4#4Q#78 +r   c           
         [         R                  " SS/5      n[         R                  " SS/5      n[        [        [        SS9S   nU R
                   Hf  n[        [        [        X4U R                  US9n[        UR                  [        [        [        SS9S   5        [        UR                  S   U5        Mh     [         R                  " S[         R                  * /5      nU R
                   Hv  n[        [        [        U[         R                  4U R                  US9n[        UR                  [         R                  " SS/5      S	S
9  [        UR                  S   U5        Mx     [         R                  " SS/5      nU R
                   Hv  n[        [        [        U[         R                  4U R                  US9n[        UR                  [         R                  " SS/5      SS
9  [        UR                  S   U5        Mx     [         R                  " [         R                  S/5      nU R
                   Hx  n[        [        [        [         R                  * U4U R                  US9n[        UR                  [         R                  " SS/5      5        [        UR                  S   U5        Mz     [         R                  " S[         R                  /5      nU R
                   Hx  n[        [        [        [         R                  * U4U R                  US9n[        UR                  [         R                  " SS/5      5        [        UR                  S   U5        Mz     [         R                  " SS/5      n[         R                  " SS/5      nU R
                   Hh  n[        [        [        X4U R                  US9n[        UR                  [         R                  " SS/5      5        [        UR                  S   U5        Mj     g )Nr   i   r   r   r           g1Vư>atolgԡw?gV瞯<ggUw-r 
su?)r   arrayr   r!   r"   r    r
   r   r   r#   r$   inf)r   lbubr$   r   r%   s         r   test_dense_boundsBaseMixin.test_dense_bounds   s   XXr3i XXq!fa"-a0**JQB8DKK(24CCEE5AR#8#;<C--a0-@	 + XXsRVVGn%**JQB<(24CCEE288S2D,E#F!%'C--a0-@ + XXr1g**JQB<(24CCEE288->,B#C!&(C--a0-@ + XXrvvrl#**JQRVVGR=(24CCEE288-?,D#EFC--a0-@	 + XXr266l#**JQRVVGR=(24CCEE288R1C,D#EFC--a0-@	 + XXq"gXXq!f**JQB8DKK(24CCEE288->,C#DEC--a0-@	 +r   c                    [         R                  " SS/5      nU R                  R                  SS9nX!-  n[         R                  " SS/5      n[         R                  " SS/5      nXE4n[	        XE5      n[        X#U5      n[        X#U5      n	[         R                  " U	R                  U	R                  S   5      (       a   e[        UR                  U	R                  5        g )Nr)      )   r9   sizer9   r   )
r   r1   r   uniformr   r
   allcloser#   r$   r   )
r   r#   r!   r"   r3   r4   
bounds_old
bounds_newres_oldres_news
             r   test_bounds_variantsBaseMixin.test_bounds_variantsP   s    HHaVHH&)CXXq!fXXq!fX
B^
Q:.Q:.;;wyy'*?*?*BCCCC		799-r   c                    [         R                  R                  5        nUR                  [        5        [         R
                  " / SQ/ SQ/5      nS S S 5        [         R                  " SS/5      n[        WU5        g ! , (       d  f       N3= f)N)   r/   r   r9   r8   )
   r)   r   r   rE      )r   testingsuppress_warningsfilterPendingDeprecationWarningmatrixr1   r
   )r   supr!   ks       r   test_np_matrixBaseMixin.test_np_matrix]   sb    ZZ))+sJJ01		,.@ABA , HHb"X1a	 ,+s   2A>>
Bc           
         [         R                  " SS//5      n[         R                  " S/5      nSS/nSS/nU R                   HV  n[        XX44U R                  US9n[        UR                  SS/5        [        UR                  S   [        XSS	9S   5        MX     [         R                  " S
S/SS/SS//5      n[         R                  " / SQ5      nSS/nSS/nU R                   HS  n[        XX44U R                  US9n[        UR                  SSS9  [        UR                  S   [        XSS	9S   5        MU     g )NgSӿgZd;Oǿg#~j?皙g?r   r   r   r   gK7A`?gK7A`?gPngPng~jt?g~jt?)g`"gHzG?gJ+?r)   g      gdy=r,   )
r   r1   r    r
   r   r   r#   r$   r   
optimality)r   r!   r"   r3   r4   r   r%   s          r   test_dense_rank_deficient#BaseMixin.test_dense_rank_deficiente   s>   HHvv&'(HHeWD\3Z**JQB8DKK(24CCEED$<0C--a0%B2G2JK	 + HHENVEN
 
 HH+,WY**JQB8DKK(24CCNNAE:C--a0%B2G2JK	 +r   c           	      T   [         R                  " SS/5      n[         R                  " SS/5      n[        [        [        X4U R
                  S9n[        UR                  SS/5        [        UR                  S   [        [        [        SS9S   5        [        R                  UR                  5      [        -
  n[        UR                  S[         R                  " XD5      -  5        [        UR                  U5        [        UR                  S	S
S9  [        UR                  SS/5        [!        UR"                  S:  5        [!        UR$                  S:H  =(       d    UR$                  S:H  5        [!        ['        UR(                  [*        5      5        [!        UR,                  5        g )Nr   r/   r)   r   r0   r   r   g      ?r*   g-q=r,   rH   r8   )r   r1   r
   r!   r"   r   r   r#   r$   r   dotcostfunrT   r   active_maskr   nitstatus
isinstancemessagestrsuccess)r   r3   r4   r%   rs        r   test_full_resultBaseMixin.test_full_result~   s    XXq"gXXq!fAx< 1267))!,eAq.CA.FGEE#%%L1#q"45#%8S__q"g."

a23::?3
3;;,-r   c                     [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[        XU R                  S9n[	        UR
                  S:  5        g )N)gSQcU?gn-(8?g(8?)gڌ?g,?gk,?)g\s`?gAʨY?g Y?)gt\O?v?g"He?gFH{?rX   gg5_PG>)r   r1   r
   r   r   rZ   )r   r!   r"   results       r   test_almost_singularBaseMixin.test_almost_singular   sW    HHIIIKL
 HHHJ A5f$%r   c           	      &   [         R                  R                  S5        [         R                  " [         R                  R	                  SSSS95      u  pUS-  nS[         R                  R	                  SSX!/S9-  nS[         R                  R	                  SSU/S9-  nS[         R                  " [         R                  R	                  SSSU4S9SS9-  nUS	S S 24==   S-  ss'   [         R                  R                  X5      nUS S 2U4   n[        X4US
S9R                  n[        X4USS9R                  n[         R                  " X7-  U-
  S-  5      n	[         R                  " X8-  U-
  S-  5      n
[        [        X-
  5      U
S-  :  5        g )Nr   r9     r:         ?ic   )axisr)   bvlsboundsr   trf绽|=)r   r   seedsortrandintchoicer
   r#   sumr   abs)r   nmr!   r"   rq   wx_bvlsx_trf	cost_bvlscost_trfs              r   test_large_rank_deficient#BaseMixin.test_large_rank_deficient   s\   
		qwwryy((Dq(9:	Q"))##C1&#99"))##C1##66rwwryy00b1v0FQOOq!t IIQ"adGA?AA1u=??FFAJNQ./	6619q=1,-I()HUN:;r   c                    [         R                  " / SQ/ SQ/ SQ/5      n[         R                  " / SQ5      n[         R                  " / SQ/ SQ/5      n[        XUSS9R                  n[        XUS	S9R                  n[         R                  " X-  U-
  S
-  5      n[         R                  " X-  U-
  S
-  5      n[        [        Xg-
  5      US-  :  5        g )N)g     H@g     D@      @)g      3r   g       )g      *g      $@g     @Q@)g     Dg     Vg     G@)g      ?@g      Fg      :@)g      K@r   g      <@ro   rp   rr   r9   rs   )r   r1   r
   r#   rx   r   ry   )r   r!   r"   rq   r}   r~   r   r   s           r   test_convergence_small_matrix'BaseMixin.test_convergence_small_matrix   s    HH)*)+ , HH)*..0 1 A?AA1u=??FFAJNQ./	6619q=1,-I()HUN:;r   )r   N)__name__
__module____qualname____firstlineno__r   r&   r5   rB   rP   rU   rd   rh   pytestmarkxslowr   r   __static_attributes__ r   r   r   r      sP    ,9/Ab.L2(
& [[< <*<r   r   c                   b    \ rS rSrS r\R                  R                  S5      S 5       rS r	Sr
g)SparseMixin   c                    SnSn[         R                  R                  S5      n[        XUS9nUR	                  U5      n[        XE5      n[        UR                  SSS9  [        U5      n[        XE5      n[        UR                  SSS9  g )N  rk   r   random_stater+   r,   )	r   r   r   r   randnr
   r   rT   r	   )r   r{   rz   rngr!   r"   r%   s          r   test_sparse_and_LinearOperator*SparseMixin.test_sparse_and_LinearOperator   sw    ii##A&C(IIaL5Q5r   rF   c                 v   SnSn[         R                  R                  S5      n[        XUS9nUR	                  U5      nUR	                  U5      nUS-   n[        XEXg45      n[        UR                  SSS9  [        XEXg4S	S
S9n[        UR                  SSS9  [        XEXg4SS9n[        UR                  SSS9  g )Nr   rk   r   r   r)   r*   r+   r,   gvIh%<=i  )lsmr_tollsmr_maxiterauto)r   )r   r   r   r   r   r
   r   rT   )	r   r{   rz   r   r!   r"   r3   r4   r%   s	            r   test_sparse_boundsSparseMixin.test_sparse_bounds   s    ii##A&C(IIaLYYq\!Vx($7x%&*,$7x&9$7r   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XU44SS9n[        UR	                  5       [
        SS9n[        U[
        SS9n[        R                  " [        S	S
9   [        UR                  UR                  5        S S S 5        [        U[
        SSS9n[        UR                  UR                  5        g ! , (       d  f       N?= f)N)rl   rl   rl   gzo ?rl   )r   r   r)   r9   r9   )r   r9   r)   r   r9   )r8   r8   )shapeexact)r   lsmr matchrF   r   r   )r   r1   r   r
   toarrayr"   r   raisesAssertionErrorr   r#   )r   datarowcolr!   	exact_soldefault_lsmr_sol	conv_lsmrs           r   test_sparse_ill_conditioned'SparseMixin.test_sparse_ill_conditioned   s    xx34hh'hh'Cj)8 qyy{A'B	 &av>]]>4IKK)9););< 5 q!RH		Y[[1 54s   !C55
Dr   N)r   r   r   r   r   r   r   	fail_slowr   r   r   r   r   r   r   r      s/    6 [[28 8$2r   r   c                        \ rS rSrSrSS/rSrg)TestTRF   rr   r   r   r   Nr   r   r   r   r   r    r   r   r   r   r   r      s    FF#Kr   r   c                       \ rS rSrSrS/rSrg)TestBVLS   ro   r   r   Nr   r   r   r   r   r      s    F)Kr   r   c                        \ rS rSrS rS rSrg)TestErrorCheckingi  c                 *   [        [        [        SSS9n[        [        [        SSS9n[        [        [        SS S9nSn[        R                  " [
        US9   [        [        [        SSS9nS S S 5        [        R                  " [
        US9   [        [        [        SSS9nS S S 5        [        R                  " [
        US9   [        [        [        SS	S9nS S S 5        g ! , (       d  f       N{= f! , (       d  f       NV= f! , (       d  f       g = f)
Nr   g{Gz?)r   r   r   z3`lsmr_tol` must be None, 'auto', or positive float.r   rS   foor)   r
   r!   r"   r   r   
ValueErrorr   _err_messages      r   test_option_lsmr_tol&TestErrorChecking.test_option_lsmr_tol  s    q!>q!@q!> L]]:[91aFTBA :]]:[91aFUCA :]]:[91aFQ?A :9	 :99999s$   C"C3D"
C03
D
Dc                 t   [        [        [        SSS9n[        [        [        SS S9nSn[        R                  " [
        US9   [        [        [        SSS9nS S S 5        [        R                  " [
        US9   [        [        [        SSS9nS S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)Nr   r)   r   z0`lsmr_maxiter` must be None or positive integer.r   r   r   r   r   s      r   test_option_lsmr_maxiter*TestErrorChecking.test_option_lsmr_maxiter  s    q!Q?q!TB I]]:[91aFCA :]]:[91aFDA :9 :999s   B:B)
B&)
B7r   N)r   r   r   r   r   r   r   r   r   r   r   r     s    @ 
Er   r   )r   numpyr   numpy.linalgr   numpy.testingr   r   r   scipy.sparser   r   scipy.sparse.linalgr	   scipy.optimizer
   scipy.optimize._minimizer   r1   r!   r"   r   r   r   r   r   r   r   r   <module>r      s       @ @ ) 0 % + HH
FOVUO 
 HH#$m< m<`22 22j$i $
y 
E Er   