
    (phU1                         S SK r S SK Jr  S SKrS SKJrJrJrJ	r	J
r
  S SKJrJrJr  \R                  \R                   /r\R$                  \R&                  /r\\-   r " S S5      r " S S5      r " S	 S
5      rg)    N)raises)lu	lu_factorlu_solveget_lapack_funcssolve)assert_allcloseassert_array_equalassert_equalc                      \ rS rSrS rS r\R                  R                  SSS/SS/SS/SS/SS/SS// SQ/ S	Q/ S
Q/	5      S 5       r	\R                  R                  SSS/SS/SS/SS/SS/SS//5      S 5       r
S rS rSrg)TestLU   c                 L    [         R                  R                  S5      U l        g N   n
@h/ nprandomdefault_rngrngselfs    T/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_decomp_lu.pysetup_methodTestLU.setup_method       99(()9:    c           
      r   [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#n[         R                  " / SQ/ SQ/ SQ/5      n[        U[         R                  " [         R
                  " S5      5      5        [        U[         R                  " USS9[         R
                  " S5      -   5        [        U[         R                  " U5      5        [         R                  " / SQ/ SQ/ S	Q/5      n[        U5      u  p#n[         R                  " / S
Q/ SQ/ SQ/5      n[        U[         R                  " [         R
                  " S5      5      5        [        U[         R                  " USS9[         R
                  " S5      -   5        [        U[         R                  " U5      5        [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#n[        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ SQ/5      SSS9  [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#n[        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ SQ/5      S-  SSS9  [         R                  " / SQ/ SQ/ SQ/5      n[        U5      u  p#n[        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ S Q/5      5        [        U[         R                  " / SQ/ S!Q/ S"Q/5      SSS9  [         R                  " / SQ/ SQ/ SQ/5      S-  n	[        U	5      u  p#n[        U[         R                  " / SQ/ SQ/ SQ/5      5        [        U[         R                  " / SQ/ SQ/ S Q/5      5        [        U[         R                  " / SQ/ S!Q/ S"Q/5      S-  SSS9  [         R                  " / SQ/ SQ/ SQ/ S#Q/5      n
[        U
5      u  p#n[        U[         R
                  " S$5      / S%QS&S&24   5        [        U[         R                  " / S'Q/ S(Q/ S)Q/ S*Q/5      5        [        U[         R                  " / S#Q/ S+Q/ S,Q/5      5        [         R                  " / SQ/ SQ/ SQ/ S#Q/5      S-  n[        U5      u  p#n[        U[         R
                  " S$5      / S%QS&S&24   5        [        U[         R                  " / S'Q/ S(Q/ S)Q/ S*Q/5      5        [        U[         R                  " / S#Q/ S+Q/ S,Q/5      S-  5        g&)-z*Tests from old fortran based lu test suite         r!         )       @g      @      @)      ?              )r(         ?r*   r"   )kr!                 @r%   )r&   r/   r'   )r(   y       @      r*      r$   r%         	   )r   r    r   )r   r   r    r    r   r   )g$I$I?r    r   )g$I$I?r(   r    )r   g۶m۶m?g۶m۶m?r   r   r   r*   g+=)rtolatol              ?y               @y              @y              @r/   y              @y              @y               @y              "@r;   r    r!   r"   r1   r$   r%   r3   r4   r5   
      rB   )gqq?r    r   )grq?r(   r    )r   gqq?g?gUUUUUU@)r   r   r)   r   rA   rB   rB   r1   )r    r"   r!   r   N)r+   r   r   )g?r    r   )gffffff?r)   r    )g?g      ?r(   )r   g?g?)r   r   g      ?)r   arrayr   r	   rot90eyetriltriu)r   aplu	result_lubcbhrectchrectvrectcvrects               r   test_old_lu_smoke_testsTestLU.test_old_lu_smoke_tests   s0   HHiI67Q%aHHlO]KL	288BFF1I./27793BFF1I=>2779-.HHiJ78Q%aHHm->NO	288BFF1I./27793BFF1I=>2779-.HHiI67Q%a288Y	9$EFG288Y]$KLM288Y	$JKe	- XXlCDR&a288Y	9$EFG288Y]$KLM288Y	$JKBNe	- ,oFGU)a288Y	9$EFG288Y]$KLM288_6L%4%6 7=?e	M <GHLV*a288Y	9$EFG288Y]$KLM288_6L%4%6 779:@B	P )Y	<HIU)a266!9\1_56288Zn%5%7 8 	9288\%2%1%3 4 	5 9iLIJ2MV*a266!9\1_56288Z%0%3%5%7 8 	9 	288\%2%1%3 4467 	8r   shaper!   r1      )r"   r!   r5   r5   )r!   r!      r$   )r!   r!      r3   c                 V   U R                   R                  SSUS9n[        U5      u  p4n[        X#U-  U-  5        [        USS9u  pe[        X&U-  5        U R                   R                  SSUS9S-  nXpR                   R                  SSUS9-  n[        USS9u  pe[        XvU-  5        g )	N      $      $@sizeT	permute_lr;   irA   r   uniformr   r	   )r   rV   rI   rJ   rK   rL   plrN   s           r   "test_simple_lu_shapes_real_complex)TestLU.test_simple_lu_shapes_real_complexS   s     HHT3U3Q%aq519%1%6"HHT3U3B6	XXc2E221%6"r   c                 ~    U R                   R                  SSUS9n[        USS9u  p4n[        X$US S 24   U-  5        g )Nr[   r\   r]   T	p_indicesra   )r   rV   rI   rJ   rK   rL   s         r   -test_simple_lu_shapes_real_complex_2d_indices4TestLU.test_simple_lu_shapes_real_complex_2d_indicesb   sC     HHT3U3Q$'aQT7Q;'r   c                 R   U R                   R                  / SQ[        R                  S9n[	        USS9u  p#n[        U[        R                  " S[        S95        [        U[        R                  " S[        R                  S95        [        XA5        U R                   R                  / SQ[        R                  S9n[	        U5      u  p#n[        U[        R                  " S[        R                  S95        [        U[        R                  " S[        R                  S95        [        XA5        [	        USS9u  pT[        U[        R                  " S[        R                  S95        [        XA5        U R                   R                  / SQ[        R                  S9[        R                  " S5      -  n[	        U5      u  p#n[        U[        R                  " S[        R                  S95        [        U[        R                  " S[        R                  S95        [        XA5        g )	N)r1   r$   r    r    dtypeTrg   )r1   r$   r    rV   rm   r_   r;   )
r   r   r   float32r   r	   zerosintones	complex64r   rI   rJ   rK   rL   rc   s         r   test_1by1_input_outputTestLU.test_1by1_input_outputi   sa   HHOOL

O;Q$'a288)3?@277RZZHIHHOOL

O;Q%a277RZZHI277RZZHI1%BGG,bjjIJHHOOL

O;BLL<MMQ%a277R\\JK277R\\JKr   c                 (   [         R                  " SS/5      n[        U5      u  p#n[        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [         R                  " SS/[         R
                  S9n[        U5      u  p#n[        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [         R                  " SS/[         R                  S9n[        U5      u  p#n[        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        USS	9u  p#n[        U[         R                  " S
[        S95        [        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        USS9u  pT[        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [         R                  " / SQ[         R                  S9n[        U5      u  p#n[        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [        U[         R                  " S[         R                  S95        [         R                  " / SQ5      n[        U5      u  p#n[        U[         R                  " SS95        [        U[         R                  " SS95        [        U[         R                  " SS95        [        [        SS9   [        [         R                  " / 5      5        S S S 5        [         R                  " / /5      n[        U5      u  p#n[        U[         R                  " SS95        [        U[         R                  " SS95        [        U[         R                  " SS95        [         R                  " / //5      n[        U5      u  p#n[        U[         R                  " SS95        [        U[         R                  " SS95        [        U[         R                  " SS95        g ! , (       d  f       GN= f)Nr   r   r   rn   r"   rl   )r   r"   )r"   r   Trg   r   r_   )r"   r   r   )r   r   r"   r7   )rV   zat least two-dimensional)match)r    r   r6   )r    r    r   )r   emptyr   r	   float64float16ro   rs   rq   assert_raises
ValueErrorrD   rt   s         r   test_empty_edge_casesTestLU.test_empty_edge_cases   s}   HHaVQ%a288&

CD288&

CD288&

CDHHaV2::.Q%a288&

CD288&

CD288&

CDHHaV2<<0Q%a288&

CD288&EF288&EFQ$'a288$c:;288&EF288&EF1%BHH6FG288&EFHHYbll3Q%a288)2::FG288)2<<HI288)2<<HIHHYQ%a288)45288)45288)45:-GHrxx| I HHbTNQ%a288&12288&12288&12HHrdVQ%a288)45288)45288)45 IHs    V
Vr   N)__name__
__module____qualname____firstlineno__r   rT   pytestmarkparametrizerd   ri   ru   r   __static_attributes__ r   r   r   r      s    ;?8B [[W1v1v1vBx(*AwB'4m'E F
#F
# [[W1v1v1vBx(*AwB'9 :(:(
.36r   r   c                   `   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS r\R                  R!                  S/ SQ5      \R                  R!                  S/ SQ5      \R                  R!                  S\5      S 5       5       5       r\R                  R!                  S/ SQ5      S 5       rSrg)TestLUFactor   c                 b   [         R                  R                  S5      U l        [         R                  " / SQ/ SQ/ SQ/5      U l        [         R                  " / SQ/ SQ/ SQ/5      U l        [         R                  " / SQ/ SQ/ SQ/5      U l        [         R                  " / SQ/ SQ/ S	Q/5      U l        [         R                  " / S
Q/ SQ/ SQ/5      U l	        [         R                  " / S
Q/ SQ/ SQ/5      S-  U l
        [         R                  " / SQ/ SQ/ SQ/ SQ/5      U l        S[         R                  " / SQ/ SQ/ SQ/ SQ/5      -  U l        U R                  R                  S5      U l        U R                  R                  S5      SU R                  R                  S5      -  -   U l        g )Nr   r   r#   r.   r0   r2   r:   r<   r=   r>   r?   r@   r;   rC   )   (   )r   r   r   r   rD   rI   carN   rO   rP   rQ   rR   rS   medcmedr   s    r   r   TestLUFactor.setup_method   s7   99(()9:9i;<((Iy*=> 9i;<((L,EF XX|\?KL
hhl / 1 2478 XXy)YMN
BHHi&/&/&2&4 5 5 88??8,HHOOH-DHHOOH4M0MM	r   c                 |    [        U5      u  p#[        SU45      u  nU" USS9u  pVn[        X%5        [        X65        g )N)getrfF)overwrite_a)r   r   r	   )r   datal_and_u1piv1r   l_and_u2piv2_s           r   _test_common_lu_factor#TestLUFactor._test_common_lu_factor   s>    "4#J8!$E:+#r   c                 :    U R                  U R                  5        g N)r   rP   r   s    r   test_hrectangularTestLUFactor.test_hrectangular       ##DJJ/r   c                 :    U R                  U R                  5        g r   )r   rR   r   s    r   test_vrectangularTestLUFactor.test_vrectangular   r   r   c                 :    U R                  U R                  5        g r   )r   rQ   r   s    r   test_hrectangular_complex&TestLUFactor.test_hrectangular_complex       ##DKK0r   c                 :    U R                  U R                  5        g r   )r   rS   r   s    r   test_vrectangular_complex&TestLUFactor.test_vrectangular_complex   r   r   c                 :    U R                  U R                  5        gz:Check lu decomposition on medium size, rectangular matrix.N)r   r   r   s    r   test_medium1TestLUFactor.test_medium1   s    ##DHH-r   c                 :    U R                  U R                  5        gr   )r   r   r   s    r   test_medium1_complex!TestLUFactor.test_medium1_complex   s    ##DII.r   c                 h    [        U R                  SS9u  pn[        X-  U-  U R                  5        g )NFcheck_finite)r   rI   r	   )r   rJ   rK   rL   s       r   test_check_finiteTestLUFactor.test_check_finite   s*    TVV%0a	466*r   c           	          S Hs  n[         R                  " SS/SS//US9n[        U5      u  p4[        U[         R                  " SS/SS//5      5        [	        U[         R                  " SS/5      5        Mu     g )NCFr!   r    r   r+   order)r   rD   r   r	   r
   )r   r   ALUPs        r   test_simple_knownTestLUFactor.test_simple_known   sk    E1a&1b'*%8AaLEBB1a&1a&)9 :;q"((Aq6"23	  r   m)r   r    r!   nrm   c                 .   [        X5      n[        R                  " XUS9n[        U5      u  pg[	        UR
                  X45        [	        UR                  U5        [	        UR
                  U45        [	        UR                  [        R                  5        g )Nrl   )minr   rF   r   r   rV   rm   int32)r   r   r   rm   r-   rI   r   rJ   s           r   test_shape_dtypeTestLUFactor.test_shape_dtype   sh     IFF1u%!RXXv&RXXu%QWWqd#QWWbhh'r   )r   r   )rx   )r   r!   )r!   r   c                     [         R                  " X45      n[        U5      u  pE[        U[         R                  " X45      5        [        U[         R
                  " S5      5        g )Nr   )r   rp   r   r	   r{   arange)r   r   r   rI   r   rJ   s         r   
test_emptyTestLUFactor.test_empty  sD    HHaV!BHHaV,-299Q<(r   )rI   rN   r   rO   rQ   r   rS   rP   r   r   rR   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   DTYPESr   r   r   r   r   r   r   r      s    N2$0011./+4 [[S),[[S),[[Wf-( . - -( [[Z)AB) C)r   r   c            	          \ rS rSrS rS rS r\R                  R                  S\
\\R                  \\R                  /5      \R                  R                  S\
\\R                  \\R                  /5      S 5       5       rSrg	)
TestLUSolvei  c                 L    [         R                  R                  S5      U l        g r   r   r   s    r   r   TestLUSolve.setup_method  r   r   c                    U R                   R                  S5      nU R                   R                  S5      nS HC  n[        R                  " XS9n[	        XB5      n[        U5      n[        Xb5      n[        XW5        ME     g )NrA   rA   rA   r   r   )r   r   r   rD   r   r   r   r	   )r   a0rN   r   rI   x1lu_ax2s           r   test_luTestLUSolve.test_lu  sb    XX__X&HHOOE"E)AqBQ<D$"BB#  r   c                     U R                   R                  S5      nU R                   R                  S5      n[        X5      n[        USS9n[	        XBSS9n[        X55        g )Nr   r   Fr   )r   r   r   r   r   r	   )r   rI   rN   r   r   r   s         r   r   TestLUSolve.test_check_finite  sO    HHOOH%HHOOE"1[/dE2r   dtdt_bc                    [         R                  " SUS9[         R                  " / 5      4n[         R                  " / US9n[	        X45      nUR
                  S:X  d   e[	        [         R                  " SUS9SS/4[         R                  " SUS95      nUR                  UR                  :X  d   e[         R                  " SUS9n[	        X45      nUR
                  S:X  d   eUR                  UR                  :X  d   eg )Nrx   rl   ry   r!   r   r    )	r   r{   rD   asarrayr   rV   rF   rr   rm   )r   r   r   
lu_and_pivrN   xr   s          r   r   TestLUSolve.test_empty&  s     hhvR0"((2,?
JJr&Z#ww$bffQb)Aq62BGGAT4JKww!''!!!HHV4(Z#ww&   ww!''!!!r   r   N)r   r   r   r   r   r   r   r   r   r   rq   floatr   ro   complexrs   r   r   r   r   r   r   r     sw    ;	$  [[TC

GR\\#RS[[Vc5"**gr||%TU" V T"r   r   )r   r   r~   numpyr   scipy.linalgr   r   r   r   r   numpy.testingr	   r
   r   ro   r|   REAL_DTYPESrs   
complex128COMPLEX_DTYPESr   r   r   r   r   r   r   <module>r      sn     *  I I K K zz2::&,,.	~	%e6 e6PV) V)r%" %"r   