
    -il                         S SK r S SKrS SKrS SKJr  S SKJrJr  \R                  \R                  /r\R                  \R                  /r\\-   rS rS r " S S5      rg)    N)assert_allclose)linalgsparsec                    UR                  U 5      n[        R                  " U[        R                  5      (       a  X2R                  U 5      S-  -   nUR	                  U5      $ )Ny              ?)randomnp
issubdtypecomplexfloatingastype)shapedtyperngAs       P/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_batch.py
get_randomr      sK    

5A	}}UB..//

5!B&&88E?    c                     UR                  U 5      R                  U5      n[        R                  " UR	                  SS5      5      nUR                  UR                  S9R                  U5      U-  nXE-   U-   $ )Nsize)r   r   r   conjswapaxesstandard_normalr   )r   r   atolr   r   Atnoises          r   get_nearly_hermitianr      si     	

5  'A	B#	$BQWW-44U;dBE6E>r   c                      \ rS rSrSSSSSSS.S jr\R                  R                  S\5      S	 5       r	\R                  R                  S\5      S
 5       r
\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\R                  \R                  \R                   \R"                  \R$                  \R&                  \R(                  \R*                  \R&                  \R,                  \R.                  \R0                  /5      \R                  R                  S\5      S 5       5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      S 5       r \R                  R                  S\RB                  S4\RD                  S4\RF                  S4/5      \R                  R                  S\5      S 5       5       r$\R                  R                  SSS/5      \R                  R                  S\5      S 5       5       r%\R                  R                  S\RL                  \RN                  \RP                  /5      \R                  R                  S\5      S 5       5       r)\R                  R                  S/ SQ5      \R                  R                  S\5      S 5       5       r*\R                  R                  S S!S"/S#S$//5      \R                  R                  S\5      S% 5       5       r+\R                  R                  S&S!S'/5      \R                  R                  S(S)S*/5      \R                  R                  S\5      S+ 5       5       5       r,\R                  R                  S(S)S*/5      \R                  R                  S\5      S, 5       5       r-\R                  R                  S\R\                  \R^                  /5      \R                  R                  S\5      S- 5       5       r0\R                  R                  S.SS/5      \R                  R                  S\5      S/ 5       5       r1\R                  R                  S0SS/5      \R                  R                  S\5      S1 5       5       r2\R                  R                  S\5      S2 5       r3\R                  R                  S3SS/5      \R                  R                  S4\Rh                  S4\Rh                  S4\Rj                  S4\Rl                  S4/5      \R                  R                  S\5      S5 5       5       5       r7\R                  R                  S6SS/5      \R                  R                  S\5      S7 5       5       r8\R                  R                  S\5      S8 5       r9\R                  R                  S\Rt                  /5      \R                  R                  S\5      S9 5       5       r;\R                  R                  S\Rx                  S4\Rz                  S4\R|                  S4\R~                  S4\R                  S:4\R                  S;4/5      \R                  R                  S\5      S< 5       5       rB\R                  R                  S\5      S= 5       rC\R                  R                  S\5      S> 5       rD\R                  R                  S\R                  \R                  /5      \R                  R                  S\5      S? 5       5       rG\R                  R                  S\5      S@ 5       rH\R                  R                  S\5      SA 5       rI\R                  R                  S\5      SB 5       rJ\R                  R                  S\R                  S4\R                  S4/5      \R                  R                  S\M5      SC 5       5       rN\R                  R                  SD/ SQ5      \R                  R                  S\5      SE 5       5       rO\R                  R                  SD/ SQ5      \R                  R                  S\5      SF 5       5       rP\R                  R                  SGSH/ SIQ/ SJQ4/5      \R                  R                  SD/ SQ5      \R                  R                  S\5      SK 5       5       5       rQ\R                  R                  SD/ SQ5      \R                  R                  S\5      SL 5       5       rR\R                  R                  SMSS/5      \R                  R                  SD/ SQ5      \R                  R                  S\5      SN 5       5       5       rS\R                  R                  SD/ SQ5      \R                  R                  S\5      SO 5       5       rT\R                  R                  SD/ SQ5      \R                  R                  S\5      SP 5       5       rU\R                  R                  SD/ SQQ5      \R                  R                  S\5      SR 5       5       rV\R                  R                  S\5      SS 5       rWST rXS)rYg)U	TestBatch         NT)core_dimn_outkwargsr   	broadcastcheck_kwargsc          
        ^^ Uc  0 OUn[        [        R                  " U5      R                  R	                  5       5      n	[        U[        5      (       d  U4OUnU" U0 UD6n
U(       aO  U" S0 [        [        X5      5      DUD6n[        X5       H$  u  p[        R                  R                  X5        M&     US:X  a  U
4OU
nU(       a  [        R                  " U6 nUS   R                  S U*  n[        US   5       H  m[        US   5       H  mUU4S jU 5       nU" U0 UD6nUS:X  a  [        R                  " U5      4O[        S U 5       5      n[        U5       HK  n[!        UU   TT4   UU   5        [        R                  " UU   TT4   5      UU   R                  :X  a  MK   e   M     M     [        [#        W5      5       H,  nUc  UU   R$                  OUnUU   R$                  U:X  a  M,   e   U
$ )Nr#   r   c              3   0   >#    U  H  oTT4   v   M     g 7fN ).0arrayijs     r   	<genexpr>'TestBatch.batch_test.<locals>.<genexpr>?   s     =fU1a4[fs   c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr+   )r   asarray)r-   refks     r   r1   r2   B   s     >#$RZZ--#s   #%r,   )listinspect	signature
parameterskeys
isinstancetupledictzipr   testingassert_equalbroadcast_arraysr   ranger4   r   lenr   )selffunarraysr$   r%   r&   r   r'   r(   r9   res2res1out1out2resbatch_shape	arrays_ijrefk	out_dtyper/   r0   s                       @@r   
batch_testTestBatch.batch_test    s    ~6'++C0;;@@BC
",VU";";& F%f%Ac*56A&AD!$o


''3 . !tg ((&1FQioojy1{1~&A;q>*=f=	9//-2aZ

3)>#>> uA#CF1a4L#a&988CF1a4L1SV\\AAA & + ' s3xA(-A5Iq6<<9,,, ! r   r   c                     [         R                  R                  S5      nUR                  S5      R                  U5      nU R	                  [
        R                  U5        g )N   TAH4fC         rX   )r   r   default_rngr   rQ   r   	expm_condrD   r   r   r   s       r   test_expm_condTestBatch.test_expm_condM   sD    ii##$:;JJ|$++E2((!,r   c                    [         R                  R                  S5      n[        SUSU5      nU R	                  [
        R                  U[        SS9S9n[         R                  " U5      (       a   e[         R                  " U5      (       d   eg NrT   rU   ga2U0*3?gMbP?r   r&   )
r   r   rY   r   rQ   r   issymmetricr=   allanyrD   r   r   r   rK   s        r   test_issymmetricTestBatch.test_issymmetricS   i    ii##$:; udC@oof00!DdOoL66#;;vvc{{{r   c                    [         R                  R                  S5      n[        SUSU5      nU R	                  [
        R                  U[        SS9S9n[         R                  " U5      (       a   e[         R                  " U5      (       d   eg r_   )
r   r   rY   r   rQ   r   ishermitianr=   rc   rd   re   s        r   test_ishermitianTestBatch.test_ishermitian[   rh   r   c           	      @   [         R                  R                  S5      nUR                  S5      R                  U5      nU R	                  [
        R                  U[        SSS9SS9n[
        R                  " USS5      n[         R                  R                  XE5        g )NrT   )rV   rW   rX      rX   )MNr#   )r&   r$   )
r   r   rY   r   rQ   r   diagsvdr=   r?   r@   rD   r   r   r   rH   rG   s         r   test_diagsvdTestBatch.test_diagsvdc   su    ii##$:;JJy!((/v~~qQRST~~aA&


+r   rE   c                     [         R                  R                  S5      n[        SX#S9nU[        R
                  :X  a  US[         R                  " SUS9-  -   nU R                  X5        g )NrT   rU   r   r   rW   rX   r   )r   r   rY   r   r   sqrtmeyerQ   rD   rE   r   r   r   s        r   test_matmatTestBatch.test_matmatl   sY     ii##$:;|5: &,,AbffQe,,,Ar   c                     [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  U5        g )NrT   rV   rW   rX   rn   rv   )r   r   rY   r   rQ   r   
null_spacer[   s       r   test_null_spaceTestBatch.test_null_space|   s7    ii##$:;|5:))1-r   c                     [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  U[        [         R                  S9S9  g )NrT   r"   rX   rW   rW   rv   )funcra   )	r   r   rY   r   rQ   r   funmr=   sinr[   s       r   	test_funmTestBatch.test_funm   sB    ii##$:;|5:Qt/@Ar   c                    [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  USS0S9n[
        R                  " US5      n[         R                  R                  XE5        g )NrT   r   rv   tg      ?ra   )	r   r   rY   r   rQ   r   fractional_matrix_powerr?   r@   rr   s         r   test_fractional_matrix_power&TestBatch.test_fractional_matrix_power   se    ii##$:;|5:v==q#cS--a5


+r   c                 `   [         R                  R                  S5      n[        SXS9nUS[         R                  " S5      -  -   nU R                  [        R                  U5      n[        R                  " U5      n[        XE5       H$  u  pg[         R                  R                  Xg5        M&     g )Nl	   8*k"XtlTC rU   rv   rW   rX   )r   r   rY   r   ry   rQ   r   logmr>   r?   r@   )rD   r   r   r   rH   rG   res1ires2is           r   	test_logmTestBatch.test_logm   s}     ii##$JK|5:"&&)Ov{{A.{{1~OLEJJ##E1 ,r   c           	          [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  US[        SS9S9  g )NrT   rU   rv   r"   T)return_rankr%   r&   )r   r   rY   r   rQ   r   pinvr=   r[   s       r   	test_pinvTestBatch.test_pinv   s@    ii##$:;|5:Qa8NOr   c                     [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  USS9  U R	                  [
        R                  USSS0S9  g )	NrT   rU   rv   r"   r%   separateTr   )r   r   rY   r   rQ   r   matrix_balancer[   s       r   test_matrix_balanceTestBatch.test_matrix_balance   sZ    ii##$:;|5:--q:--q:dBSTr   c           	      F   [         R                  R                  S5      n[        SXS9n[         R                  " [        SS5       Vs/ s H  n[         R                  " X45      PM     sn5      R                  S5      nU R                  [        R                  USS9  g s  snf )	NrT   )rX   rX   rv   rW   r"   rW   rX   rX   r"   r   )r   r   rY   r   r4   rB   triureshaperQ   r   	bandwidth)rD   r   r   r   rO   s        r   test_bandwidthTestBatch.test_bandwidth   sv    ii##$:;vU4JJuR|<|!|<=EElS((!15 =s    B	fun_n_outrW   c                     [         R                  R                  S5      nUu  pE[        SUSU5      nUS[         R                  " SUS9-  -   nU R                  XFUS9  g )NrT   rU   r   rX   rw   r   )r   r   rY   r   ry   rQ   )rD   r   r   r   rE   r%   r   s          r   test_ldl_choleskyTestBatch.test_ldl_cholesky   sZ     ii##$:;
 ua="&&%(((e,r   
compute_uvFc           	          [         R                  R                  S5      n[        SX#S9nU(       a  SOSnU R	                  [
        R                  XE[        US9S9  g )NrT   rV   rW   r"   rX   rv   rW   r#   )r   r   )r   r   rY   r   rQ   r   svdr=   )rD   r   r   r   r   r%   s         r   test_svdTestBatch.test_svd   sI     ii##$:;|5:Q

A4:;VWr   c                 v    [         R                  R                  S5      n[        SX#S9nU R	                  XSS9  g )NrT   r   rv   r"   r   r   r   rY   r   rQ   rz   s        r   test_polar_qr_rqTestBatch.test_polar_qr_rq   5     ii##$:;|5:a(r   cdim)rV   )rV   rX   )r"   rW   rV   rX   c                 P   [         R                  R                  S5      n[        SX#S9n[        XUS9n[        R
                  " XESS9n[        R                  " U5      u  pxXu-  n	U[         R                  [         R                  1;   a  SOSn
[        US   XS	9  [        US
   XS	9  g )NrT   r"   rW   rV   rV   rv   left)modeư>g-q=r   r`   r#   )
r   r   rY   r   r   qr_multiplyqrfloat32	complex64r   )rD   r   r   r   r   crK   qrrN   r   s              r   test_qr_multiplyTestBatch.test_qr_multiply   s     ii##$:;|5:tc2  F3yy|eR\\ ::tA/A-r   uvdimr   )rW   )rX   rV   r"   )rX   rW   r"   c                    [         R                  R                  S5      nUu  pE[        SX#S9n[        XBUS9n[        XRUS9n[        R
                  " U5      u  p[        R                  " XXx5      n[        S5       Hj  nX   X   pUR                  S:X  a  Xx4OX|   X   4u  nn[        R                  " XUU5      n[        US   U   US   5        [        US   U   US   5        Ml     g )NrT   rX   rV   rW   rv   rX   r#   r   )
r   r   rY   r   r   r   	qr_updaterB   ndimr   )rD   r   r   r   udimvdimr   uvr   r   rK   r/   qiriuiviref_is                     r   test_qr_updateTestBatch.test_qr_update   s     ii##$:;
y7tc2tc2yy|qQ*qAT14 vv{aVqtFB$$RR4ECF1IuQx0CF1IuQx0 r   r   )rX   rW   rV   kdimr,   rX   c                    [         R                  R                  S5      n[        SX4S9n[        XUS9nUR	                  SSUS9n[
        R                  " U5      u  p[
        R                  " XXg5      n
[        S5       Hw  nX   X   pUR                  S:X  a  UOX{   nUR                  S:X  a  UOXk   n[
        R                  " XX5      n[        U
S   U   US   5        [        U
S   U   US   5        My     g )	NrT   rX   rV   rV   rv   r   rV   r   rX   r#   )r   r   rY   r   integersr   r   	qr_insertrB   r   r   )rD   r   r   r   r   r   r   rO   r   r   rK   r/   r   r   kir   r   s                    r   test_qr_insertTestBatch.test_qr_insert   s     ii##$:;y7tc2LLADL)yy|qQ*qAT14ffkqtBffkqtB$$RR4ECF1IuQx0CF1IuQx0 r   c                    [         R                  R                  S5      n[        SX#S9nUR	                  SSUS9n[
        R                  " U5      u  pg[
        R                  " XgU5      n[        S5       Ha  n	Xi   Xy   pUR                  S:X  a  UOXY   n[
        R                  " XU5      n[        US   U	   US   5        [        US   U	   US   5        Mc     g )NrT   r   rv   r   rX   r   r#   )r   r   rY   r   r   r   r   	qr_deleterB   r   r   )rD   r   r   r   r   rO   r   r   rK   r/   r   r   r   r   s                 r   test_qr_deleteTestBatch.test_qr_delete   s     ii##$:;y7LLADL)yy|qQ'qAT14ffkqtB$$RR0ECF1IuQx0CF1IuQx0 r   c                 v    [         R                  R                  S5      n[        SX#S9nU R	                  XSS9  g )NrT   rU   rv   r"   r   r   rz   s        r   test_schur_luTestBatch.test_schur_lu	  r   r   calc_qc           	          [         R                  R                  S5      n[        SX#S9nU(       a  SOSnU R	                  [
        R                  XE[        US9S9  g )NrT   rU   rv   r"   r#   )r   r   )r   r   rY   r   rQ   r   
hessenbergr=   )rD   r   r   r   r   r%   s         r   test_hessenbergTestBatch.test_hessenberg  sK     ii##$:;|5:))1$fBUVr   eigvals_onlyc           	          [         R                  R                  S5      n[        SX#S9nU(       a  SOSnU R	                  [
        R                  XE[        US9S9  g )NrT   rU   rv   r#   r"   r   r   )r   r   rY   r   rQ   r   
eig_bandedr=   )rD   r   r   r   r   r%   s         r   test_eig_bandedTestBatch.test_eig_banded  sR     ii##$:;|5:!q))1#> 	 	@r   c                     [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  U5        g )NrT   rU   rv   )r   r   rY   r   rQ   r   eigvals_bandedr[   s       r   test_eigvals_bandedTestBatch.test_eigvals_banded!  s7    ii##$:;|5:--q1r   two_in
fun_n_noutc                 \   [         R                  R                  S5      nUu  pV[        SUSU5      n[        SUSU5      nUS[         R                  " S5      R                  U5      -  -   nU(       a  Xx4OU4n	US:X  a  U[        R                  :X  a	  [        SS9O0 n
U R                  XYXjS	9  g )
NrT   r#   rW   rX   rX   r   r"   r#   rX   rX   rX   r#   Tr   r   )
r   r   rY   r   ry   r   r   eighr=   rQ   )rD   r   r   r   r   rE   r%   r   Bargsr&   s              r   	test_eighTestBatch.test_eigh'  s    
 ii##$:;
 ua= ua="&&)""5)))vaT-2aZC<L4(SU>r   compute_expmc           	          [         R                  R                  S5      n[        SX#S9n[        SX#S9nU(       a  SOSnU R	                  [
        R                  XE4U[        US9S9  g )	NrT   r   rv   r   r"   r#   )r   r   )r   r   rY   r   rQ   r   expm_frechetr=   )rD   r   r   r   r   Er%   s          r   test_expm_frechetTestBatch.test_expm_frechet5  sb     ii##$:;|5:|5:!q++aV5#> 	 	@r   c                 N   [         R                  R                  S5      n[        SXS9n[        SXS9nU R	                  [
        R                  X445        Su  pVn[        SSXV4XS9n[        SSXW4XS9n[
        R                  " X45      R                  SS[        Xg5      4:X  d   eg )	NrT   )r#   rW   rX   rW   rv   )r"   r#   rX   rW   r   r#   rW   r"   )	r   r   rY   r   rQ   r   subspace_anglesr   min)rD   r   r   r   r   ro   rp   Ks           r   test_subspace_anglesTestBatch.test_subspace_angles?  s    ii##$:;|5:|5:..7a1a|5:1a|5:%%a+11aCI5FFFFr   c                 x    [         R                  R                  S5      n[        SX#S9nU R	                  X5        g )NrT   r"   rW   rX   rV   rv   r   rz   s        r   test_svdvalsTestBatch.test_svdvalsK  s1     ii##$:;|5:r   rX   rn   c                     [         R                  R                  S5      nUu  pE[        SX#S9n[        SX#S9nU R	                  XFU4US9  g )NrT   r   rv   r   r   )rD   r   r   r   rE   r%   r   r   s           r   test_two_generic_matrix_inputs(TestBatch.test_two_generic_matrix_inputsR  sL     ii##$:;
|5:|5:V51r   c                 v   [         R                  R                  S5      nSu  p4[        SXS9nUSS U2S U24   USS U2US 24   USUS 2S U24   USUS 2US 24   4u  pgp[        R
                  " XSU5      n
[        R
                  " XgX45      n[        X5       H$  u  p[         R                  R                  X5        M&     [        S5       Hj  n[        S5       HX  n[        R
                  " X^U4   X45      n[        U
U5       H*  u  nn[         R                  R                  XU4   U5        M,     MZ     Ml     g )NrT   )rW   rX   )r"   rW   
   r  rv   .r"   rW   )
r   r   rY   r   r   cossinr>   r?   r@   rB   )rD   r   r   pr   Xx11x12x21x22rK   rN   res_ir   r0   rO   ref_jkref_ijks                     r   test_cossinTestBatch.test_cossin`  s(   ii##$:;~U<RaR!naRaRnQR!naQRn>#mmA!$mmSs01MLEJJ##E1 * qA1XqAw5&)#v&6NE7JJ++EQ$KA '7  r   c                     [         R                  R                  S5      n[        SXS9n[        SXS9n[        SXS9nU R	                  [
        R                  X4U45        g )NrT   r   rv   )r   r   rY   r   rQ   r   solve_sylvester)rD   r   r   r   r   Cs         r   test_sylvesterTestBatch.test_sylvesterr  sS    ii##$:;|5:|5:|5:..q	:r   c           	         [         R                  R                  S5      n[        SX#S9n[        SX#S9n[	        SUSUS9n[	        SUSUS9nUS[         R
                  " S5      -  -   nUS[         R
                  " S5      -  -   nUS[         R
                  " S5      -  -   nUS[         R
                  " S5      -  -   n[         R
                  " S5      n[         R                  " S5      n	U R                  XXVU45        U R                  XXVXx45        U R                  XXVXxU	45        U" XEXg5      n
U" XEXgU	S9n[         R                  R                  X5        g )	NrT   r   rv   r   r   r   r   rV   )rV   rV   )s)
r   r   rY   r   r   ry   zerosrQ   r?   r   )rD   rE   r   r   abr   r   er(  rK   rN   s               r   test_areTestBatch.test_arez  s$    ii##$:;|5:|5: UL UL"&&)O"&&)O"&&)O"&&)OFF1IHHVq\*q_-qQ/0!o!"


""3,r   c                     [         R                  R                  S5      n[        SXS9n[        R
                  " U5      u  pEU R                  [        R                  XE4SS9  g )NrT   r   rv   r"   r   )r   r   rY   r   r   schurrQ   rsf2csf)rD   r   r   r   TZs         r   test_rsf2csTestBatch.test_rsf2cs  sJ    ii##$:;|5:||Aa8r   c                     [         R                  R                  S5      n[        SXS9nSUSSS S 24'   U R	                  [
        R                  U5        g )NrT   )rV   rX   rW   rn   rv   r  .r   )r   r   rY   r   rQ   r   cholesky_banded)rD   r   r   abs       r   test_cholesky_bandedTestBatch.test_cholesky_banded  sF    ii##$:;E;3A:..3r   c                    [         R                  R                  S5      n[        SXS9n[        SXS9n[        SXS9n[         R                  " US5      n[         R                  " US5      n[         R                  " US5      nU R                  [        R                  XgU4S	S	S
9n	[        R                  " X4U5      n
[        X5        g )NrT   )r#   rW   r#   rW   rv   )r"   r#   rW   rn   )r#   r#   rW   r"   )r"   rW   r#   rW   )r"   rW   rW   rn   )r"   rW   rW   r"   F)r(   r'   )	r   r   rY   r   broadcast_torQ   r   
block_diagr   )rD   r   r   r*  r+  r   a2b2c2rN   rK   s              r   test_block_diagTestBatch.test_block_diag  s    ii##$:;|5:|5:|5: __Q-__Q-__Q-oof//""+0E  C a(!r   c                     [         R                  R                  S5      nUu  pE[        SX#S9n[        SX#S9nU R	                  XFU4SUSS9  g )NrT   )rW   rX   rV   rv   )rW   rX   rX   r#   F)r$   r%   r'   r   )rD   r   r   r   rE   r%   dr,  s           r   test_eigh_tridiagonalTestBatch.test_eigh_tridiagonal  sP    
 ii##$:;
y7y7VauNr   bdimc                 x   [         R                  R                  S5      n[        SX#S9n[        XUS9n[        R
                  " XE5      n[        U5      S:X  a*  US[         R                  4   nUS[         R                  4   n[        XF-  U-
  SSS9  [        U[         R                  R                  XE5      S	S9  g 
NrT   r   rv   r#   .r   gTqs*>r`   gTqs*>)	r   r   rY   r   r   solverC   newaxisr   )rD   rG  r   r   r   r+  xs          r   
test_solveTestBatch.test_solve  s     ii##$:;|5:tc2LLt9>#rzz/"A#rzz/"A	162299??10t<r   c                    [         R                  R                  S5      n[        SX#S9n[        XUS9n[        R
                  " U5      n[        R                  " Xe5      n[        U5      S:X  a*  US[         R                  4   nUS[         R                  4   n[        XG-  U-
  SSS9  [        U[         R                  R                  XE5      S	S9  g rI  )r   r   rY   r   r   	lu_factorlu_solverC   rK  r   rJ  )rD   rG  r   r   r   r+  
lu_and_pivrL  s           r   test_lu_solveTestBatch.test_lu_solve  s     ii##$:;|5:tc2%%a(
OOJ*t9>#rzz/"A#rzz/"A	162299??10t<r   l_and_u)r#   r#   )r"   r#   r   )r   r#   r"   c                    [         R                  R                  S5      nUu  pV[        SX4S9n[        X#US9n[        R
                  " XV4Xx5      n	[        S5       H  n
[        S5       H  n[        U5      S::  a  UOXU4   n[         R                  " U5      S:X  a  UOX[   n[         R                  " U5      S:X  a  UOXk   n[        R
                  " X4XzU4   U5      n[        XU4   U5        M     M     g )NrT   r"   rW   rW   rV   rv   r"   rW   r   )
r   r   rY   r   r   solve_bandedrB   rC   r   r   )rD   rU  rG  r   r   lr   r8  r+  rL  r/   r0   bijljujxijs                   r   test_solve_bandedTestBatch.test_solve_banded  s     ii##$:;E;tc2.qA1Xt9>aqAw''!*/Qqt''!*/Qqt))2(B!tHcBQ$-  r   c                    [         R                  R                  S5      n[        SUSUS9nUS[         R                  " S5      -  -   n[
        R                  " U5      n[        XUS9n[
        R                  " XV5      n[        U5      S:X  a*  US[         R                  4   nUS[         R                  4   n[        XG-  U-
  SS	S
9  [        U[         R
                  R                  XF5      SS
9  g )NrT   r   r   r'  rV   rv   r#   .r   r`   >)r   r   rY   r   ry   r   
cho_factorr   	cho_solverC   rK  r   rJ  )rD   rG  r   r   r   c_and_lowerr+  rL  s           r   test_cho_solveTestBatch.test_cho_solve  s     ii##$:; UL"&&)O''*tc2[,t9>#rzz/"A#rzz/"A	140299??10t<r   lowerc                    [         R                  R                  S5      n[        SX4S9nU(       a  SOSnSUS S 2S S 2U4'   [        R
                  " XQS9n[        X#US9n[        R                  " Xq4U5      n	[        S5       HY  n
[        S	5       HG  n[        U5      S::  a  UOXU4   n[        R                  " XzU4   U4U5      n[        XU4   U5        MI     M[     g )
NrT   rW  rv   r   r   r  rg  r"   rW   )
r   r   rY   r   r   r7  cho_solve_bandedrB   rC   r   )rD   rg  rG  r   r   r   row_diagcbr+  rL  r/   r0   rZ  r]  s                 r   test_cho_solve_bandedTestBatch.test_cho_solve_banded
  s     ii##$:;|5:12!Q.##A3tc2##RK3qA1Xt9>aqAw--rQ$x.?EQ$-  r   c                 z   [         R                  R                  S5      n[        SX#S9nSUS S 2S S 2S4'   [        XUS9n[        R
                  " XE5      n[        S5       HW  n[        S5       HE  n[        U5      S::  a  UOXWU4   n	[        R
                  " XGU4   U	5      n
[        XgU4   U
5        MG     MY     g )NrT   rW  rv   r  r   r"   rW   )	r   r   rY   r   r   solveh_bandedrB   rC   r   )rD   rG  r   r   r   r+  rL  r/   r0   rZ  r]  s              r   test_solveh_bandedTestBatch.test_solveh_banded  s     ii##$:;|5:!Q(tc2  &qA1Xt9>aqAw**1T7C8Q$-  r   c                    [         R                  R                  S5      n[        SX#S9n[         R                  " U5      n[        XUS9n[
        R                  " XESS9n[        U5      S:X  a*  US[         R                  4   nUS[         R                  4   nU[         R                  [         R                  4;   a  SOS	n[        XF-  U-
  S
US9  [        U[         R
                  R                  XE5      SU-  S9  g )NrT   r   rv   Tri  r#   .g|=g-C6*?r   r`   rV   )r   r   rY   r   trilr   solve_triangularrC   rK  
complex128float64r   rJ  )rD   rG  r   r   r   r+  rL  r   s           r   test_solve_triangularTestBatch.test_solve_triangular)  s     ii##$:;|5:GGAJtc2##A5t9>#rzz/"A#rzz/"A"--!<<u$	140299??10qv>r   )r   )rX   rW   )r"   rW   rX   rW   c                 T   [         R                  R                  S5      n[        SX#S9n[        XUS9n[        R
                  " XE5      nUS   n[        U5      S:X  a*  US[         R                  4   nUS[         R                  4   n[        XG-  U-
  SSS9  [        U5      S	:X  d   eg )
NrT   r  rv   r   r#   .ra  r`   rX   )	r   r   rY   r   r   lstsqrC   rK  r   )rD   rG  r   r   r   r+  rK   rL  s           r   
test_lstsqTestBatch.test_lstsq8  s     ii##$:;|5:tc2ll1 Ft9>#rzz/"A#rzz/"A	1403x1}}r   c           	          [         R                  R                  S5      n[        SXS9nU R	                  [
        R                  U[        SSS9S9  g )NrT   r~   rv   rW   i sketch_sizer   ra   )r   r   rY   r   rQ   r   clarkson_woodruff_transformr=   r[   s       r    test_clarkson_woodruff_transform*TestBatch.test_clarkson_woodruff_transformF  sI    ii##$:;|5:::A#v> 	 	@r   c                 6   [         R                  R                  S5      n[        S[         R                  US9n[
        R                  " U5      nSn[        R                  " [        US9   [        R                  " USUS9  S S S 5        g ! , (       d  f       g = f)NrT   r~   rv   z1Batch support for sparse arrays is not available.)matchrW   r  )r   r   rY   r   rw  r   	coo_arraypytestraisesNotImplementedErrorr   r  )rD   r   r   messages       r   'test_clarkson_woodruff_transform_sparse1TestBatch.test_clarkson_woodruff_transform_sparseM  sk    ii##$:;|2::3?QE]].g>..qaSI ?>>s   *B


B)Z__name__
__module____qualname____firstlineno__rQ   r  markparametrizefloatingr\   rf   rk   rs   r   invrx   signmsinmcosmtanhmsinhmcoshmr   pinvhorthr{   r   r   r   r   r   r   r   choleskyldlrb  r   r   polarr   rqr   r   r   r   r   r0  rP  r   r   r   r   r   eigvalsheigvalsr   r  r
  svdvalsr  orthogonal_procrustes
khatri_raosolve_continuous_lyapunovsolve_discrete_lyapunovqzordqzr  r  r$  solve_continuous_aresolve_discrete_arer-  r4  r9  rA  eigh_tridiagonaleigvalsh_tridiagonalreal_floatingrE  rM  rS  r^  re  rm  rq  rx  r|  r  r  __static_attributes__r,   r   r   r    r       s*    341TQU!+Z [[Wh/- 0-
 [[Wh/ 0 [[Wh/ 0 [[Wh/, 0, [[UVZZv||%+[[&++v||%+\\6<<%+[[&,,%M N [[Wh/	  0	N
	  [[Wh/. 0.
 [[Wh/B 0B
 [[Wh/, 0, [[Wh/	2 0	2 [[Wh/P 0P
 [[Wh/U 0U [[Wh/6 06 [[[FOOQ+?&**a,2,=,=q+A+C D[[Wh/- 0D- [[\E4=9[[Wh/X 0 :X [[UV\\699fii$HI[[Wh/) 0 J)
 [[V%AB[[Wh/	. 0 C	. [[Wd|i5K&LM[[Wh/1 0 N1 [[VdI%67[[Vb$Z0[[Wh/1 0 1 81 [[Vb$Z0[[Wh/1 0 11 [[UV\\63C3C$DE[[Wh/) 0 F)
 [[Xt}5[[Wh/W 0 6W [[^eT];[[Wh/@ 0 <@ [[Wh/2 02
 [[Xt}5[[\V[[!,<v{{A>N-3__a,@6>>STBU,W X[[Wh/? 0X 6? [[^eT];[[Wh/@ 0 <@ [[Wh/	G 0	G [[UV^^$45[[Wh/  0 6 
 [[[F,H,H!+L,2,=,=q+A,2,L,La+P,2,J,JA+N,2IIq>,2LL!+<+> ? [[Wh/2 0?2 [[Wh/B 0B" [[Wh/; 0; [[UV%@%@%+%>%>%@ A[[Wh/- 0A-( [[Wh/9 09 [[Wh/4 04 [[Wh/" 0"$ [[[F,C,CQ+G,2,G,G+K+M N[[Wm4O 5NO [[V%AB[[Wh/	= 0 C	= [[V%AB[[Wh/
= 0 C
= [[Y)Z1H(IJ[[V%AB[[Wh/. 0 C K.@ [[V%AB[[Wh/= 0 C= [[Wudm4[[V%AB[[Wh/. 0 C 5. [[V%AB[[Wh/
. 0 C
. [[V%AB[[Wh/? 0 C? [[V%AB[[Wh/
 0 C
 [[Wh/@ 0@Jr   r    )r7   r  numpyr   numpy.testingr   scipyr   r   r   rw  r  r   rv  complex_floatingr  r   r   r    r,   r   r   <module>r     s^       )   RZZ(LL"--0 ++vJ vJr   