
    Џkhl                         d dl Z d dlZd dlZd dlmZ d dlmZmZ ej                  ej                  gZej                  ej                  gZeez   Zd Zd Z G d d      Zy)    N)assert_allclose)linalgsparsec                    |j                  |       }t        j                  |t        j                        r||j                  |       dz  z   }|j	                  |      S )Ny              ?)randomnp
issubdtypecomplexfloatingastype)shapedtyperngAs       Y/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_batch.py
get_randomr      sJ    

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

5!B&&88E?    c                     |j                  |       j                  |      }t        j                  |j	                  dd            }|j                  |j                        j                  |      |z  }||z   |z   S )Nsize)r   r   r   conjswapaxesstandard_normalr   )r   r   atolr   r   Atnoises          r   get_nearly_hermitianr      sk     	

5  'A	B#	$BQWW-44U;dBEr6E>r   c                      e Zd ZddddddddZej
                  j                  de      d        Zej
                  j                  de      d	        Z	ej
                  j                  de      d
        Z
ej
                  j                  de      d        Zej
                  j                  dej                  ej                  ej                  ej                   ej"                  ej$                  ej&                  ej(                  ej$                  ej*                  ej,                  ej.                  g      ej
                  j                  de      d               Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  de      d        Zej
                  j                  dej@                  dfejB                  dfejD                  dfg      ej
                  j                  de      d               Z#ej
                  j                  dddg      ej
                  j                  de      d               Z$ej
                  j                  dejJ                  ejL                  ejN                  g      ej
                  j                  de      d               Z(ej
                  j                  dg d      ej
                  j                  de      d               Z)ej
                  j                  dd d!gd"d#gg      ej
                  j                  de      d$               Z*ej
                  j                  d%d d&g      ej
                  j                  d'd(d)g      ej
                  j                  de      d*                      Z+ej
                  j                  d'd(d)g      ej
                  j                  de      d+               Z,ej
                  j                  dejZ                  ej\                  g      ej
                  j                  de      d,               Z/ej
                  j                  d-ddg      ej
                  j                  de      d.               Z0ej
                  j                  d/ddg      ej
                  j                  de      d0               Z1ej
                  j                  de      d1        Z2ej
                  j                  d2ddg      ej
                  j                  d3ejf                  dfejf                  dfejh                  dfejj                  dfg      ej
                  j                  de      d4                      Z6ej
                  j                  d5ddg      ej
                  j                  de      d6               Z7ej
                  j                  de      d7        Z8ej
                  j                  dejr                  g      ej
                  j                  de      d8               Z:ej
                  j                  dejv                  dfejx                  dfejz                  dfej|                  dfej~                  d9fej                  d:fg      ej
                  j                  de      d;               ZAej
                  j                  de      d<        ZBej
                  j                  de      d=        ZCej
                  j                  dej                  ej                  g      ej
                  j                  de      d>               ZFej
                  j                  de      d?        ZGej
                  j                  de      d@        ZHej
                  j                  de      dA        ZIej
                  j                  dej                  dfej                  dfg      ej
                  j                  deL      dB               ZMej
                  j                  dCg d      ej
                  j                  de      dD               ZNej
                  j                  dCg d      ej
                  j                  de      dE               ZOej
                  j                  dFdGg dHg dIfg      ej
                  j                  dCg d      ej
                  j                  de      dJ                      ZPej
                  j                  dCg d      ej
                  j                  de      dK               ZQej
                  j                  dLddg      ej
                  j                  dCg d      ej
                  j                  de      dM                      ZRej
                  j                  dCg d      ej
                  j                  de      dN               ZSej
                  j                  dCg d      ej
                  j                  de      dO               ZTej
                  j                  dCg dP      ej
                  j                  de      dQ               ZUej
                  j                  de      dR        ZVdS ZWy)T	TestBatch      NT)core_dimn_outkwargsr   	broadcastcheck_kwargsc          
         |i n|}t        t        j                  |      j                  j	                               }	t        |t              s|fn|} ||i |}
|rQ |di t        t        |	|            |}t        ||
      D ]%  \  }}t        j                  j                  ||       ' |dk(  r|
fn|
}|rt        j                  | }|d   j                  d |  }t        |d         D ]  t        |d         D ]  fd|D        } ||i |}|dk(  rt        j                  |      fnt        d |D              }t        |      D ]H  }t!        ||   f   ||          t        j                  ||   f         ||   j                  k(  rHJ    t        t#                    D ])  }|||   j$                  n|}||   j$                  |k(  r)J  |
S )Nr"   r   c              3   ,   K   | ]  }|f     y wN ).0arrayijs     r   	<genexpr>z'TestBatch.batch_test.<locals>.<genexpr>?   s     =UU1a4[=s   c              3   F   K   | ]  }t        j                  |        y wr*   )r   asarray)r,   refks     r   r0   z'TestBatch.batch_test.<locals>.<genexpr>B   s     >$RZZ->s   !r+   )listinspect	signature
parameterskeys
isinstancetupledictzipr   testingassert_equalbroadcast_arraysr   ranger2   r   lenr   )selffunarraysr#   r$   r%   r   r&   r'   r7   res2res1out1out2resbatch_shape	arrays_ijrefk	out_dtyper.   r/   s                       @@r   
batch_testzTestBatch.batch_test    s    ~6'++C0;;@@BC
",VU";& F%f%Ac*f56A&AD!$o 4
d

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

3)>#>> u BA#CF1a4L#a&988CF1a4L1SV\\AAABB	B s3x 	-A(-A5Iq6<<9,,,	- r   r   c                     t         j                  j                  d      }|j                  d      j                  |      }| j	                  t
        j                  |       y )N   TAH4fC         rU   )r   r   default_rngr   rO   r   	expm_condrB   r   r   r   s       r   test_expm_condzTestBatch.test_expm_condM   sD    ii##$:;JJ|$++E2((!,r   c                    t         j                  j                  d      }t        d|d|      }| j	                  t
        j                  |t        d            }t        j                  |      rJ t        j                  |      sJ y NrQ   rR   ga2U0*3?gMbP?r   r%   )
r   r   rV   r   rO   r   issymmetricr;   allanyrB   r   r   r   rI   s        r   test_issymmetriczTestBatch.test_issymmetricS   e    ii##$:; udC@oof00!DdOoL66#;vvc{{r   c                    t         j                  j                  d      }t        d|d|      }| j	                  t
        j                  |t        d            }t        j                  |      rJ t        j                  |      sJ y r[   )
r   r   rV   r   rO   r   ishermitianr;   r_   r`   ra   s        r   test_ishermitianzTestBatch.test_ishermitian[   rc   r   c                 L   t         j                  j                  d      }|j                  d      j                  |      }| j	                  t
        j                  |t        dd      d      }t        j                  |dd      }t         j                  j                  ||       y )NrQ   )rS   rT   rU      rU   )MNr"   )r%   r#   )
r   r   rV   r   rO   r   diagsvdr;   r=   r>   rB   r   r   r   rF   rE   s         r   test_diagsvdzTestBatch.test_diagsvdc   sw    ii##$:;JJy!((/v~~qQRST~~aA&


d+r   rC   c                     t         j                  j                  d      }t        d||      }|t        j
                  k(  r|dt        j                  d|      z  z   }| j                  ||       y )NrQ   rR   r   r   rT   rU   r   )r   r   rV   r   r   sqrtmeyerO   rB   rC   r   r   r   s        r   test_matmatzTestBatch.test_matmatl   s]     ii##$:;|5c: &,,AbffQe,,,AQr   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |       y )NrQ   rS   rT   rU   rh   ro   )r   r   rV   r   rO   r   
null_spacerX   s       r   test_null_spacezTestBatch.test_null_space|   s9    ii##$:;|5c:))1-r   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |t        t         j                               y )NrQ   r!   rU   rT   rT   ro   )funcr]   )	r   r   rV   r   rO   r   funmr;   sinrX   s       r   	test_funmzTestBatch.test_funm   sD    ii##$:;|5c:Qt/@Ar   c                    t         j                  j                  d      }t        d||      }| j	                  t
        j                  |ddi      }t        j                  |d      }t         j                  j                  ||       y )NrQ   rz   ro   tg      ?r]   )	r   r   rV   r   rO   r   fractional_matrix_powerr=   r>   rl   s         r   test_fractional_matrix_powerz&TestBatch.test_fractional_matrix_power   si    ii##$:;|5c:v==q#cS--a5


d+r   c                 f   t         j                  j                  d      }t        d||      }|dt        j                  d      z  z   }| j                  t        j                  |      }t        j                  |      }t        ||      D ]%  \  }}t         j                  j                  ||       ' y )Nl	   8*k"XtlTC rR   ro   rT   rU   )r   r   rV   r   rr   rO   r   logmr<   r=   r>   )rB   r   r   r   rF   rE   res1ires2is           r   	test_logmzTestBatch.test_logm   s     ii##$JK|5c:"&&)Ov{{A.{{1~dO 	2LE5JJ##E51	2r   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |dt        d             y )NrQ   rR   ro   r!   T)return_rankr$   r%   )r   r   rV   r   rO   r   pinvr;   rX   s       r   	test_pinvzTestBatch.test_pinv   sB    ii##$:;|5c:Qa8NOr   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |d       | j	                  t
        j                  |dddi       y )	NrQ   rR   ro   r!   r$   separateTr   )r   r   rV   r   rO   r   matrix_balancerX   s       r   test_matrix_balancezTestBatch.test_matrix_balance   s\    ii##$:;|5c:--q:--q:dBSTr   c           	      L   t         j                  j                  d      }t        d||      }t        j                  t        dd      D cg c]  }t        j                  ||       c}      j                  d      }| j                  t        j                  |d       y c c}w )	NrQ   )rU   rU   ro   rT   r!   rT   rU   rU   r!   r   )r   r   rV   r   r2   r@   triureshaperO   r   	bandwidth)rB   r   r   r   rM   s        r   test_bandwidthzTestBatch.test_bandwidth   sv    ii##$:;vU4JJuR|<!1<=EElS((!15 =s   B!	fun_n_outrT   c                     t         j                  j                  d      }|\  }}t        d|d|      }|dt        j                  d|      z  z   }| j                  |||       y )NrQ   rR   r   rU   rp   r   )r   r   rV   r   rr   rO   )rB   r   r   r   rC   r$   r   s          r   test_ldl_choleskyzTestBatch.test_ldl_cholesky   s^     ii##$:;
U ua="&&%(((Qe,r   
compute_uvFc                     t         j                  j                  d      }t        d||      }|rdnd}| j	                  t
        j                  ||t        |             y )NrQ   rS   rT   r!   rU   ro   rT   r"   )r   r   )r   r   rV   r   rO   r   svdr;   )rB   r   r   r   r   r$   s         r   test_svdzTestBatch.test_svd   sM     ii##$:;|5c:Q

AU4:;VWr   c                     t         j                  j                  d      }t        d||      }| j	                  ||d       y )NrQ   r   ro   r!   r   r   r   rV   r   rO   rs   s        r   test_polar_qr_rqzTestBatch.test_polar_qr_rq   9     ii##$:;|5c:Qa(r   cdim)rS   )rS   rU   )r!   rT   rS   rU   c                 t   t         j                  j                  d      }t        d||      }t        |||      }t	        j
                  ||d      }t	        j                  |      \  }}||z  }	|t         j                  t         j                  hv rdnd}
t        |d   |	|
	       t        |d
   ||
	       y )NrQ   r!   rT   rS   rS   ro   left)modeư>g-q=r   r\   r"   )
r   r   rV   r   r   qr_multiplyqrfloat32	complex64r   )rB   r   r   r   r   crI   qrrL   r   s              r   test_qr_multiplyzTestBatch.test_qr_multiply   s     ii##$:;|5c:t5c2  AF3yy|1!eR\\ ::tA$/A-r   uvdimr   )rT   )rU   rS   r!   )rU   rT   r!   c                    t         j                  j                  d      }|\  }}t        d||      }t        |||      }t        |||      }t	        j
                  |      \  }	}
t	        j                  |	|
||      }t        d      D ]n  }|	|   |
|   }}|j                  dk(  r||fn	||   ||   f\  }}t	        j                  ||||      }t        |d   |   |d          t        |d   |   |d          p y )NrQ   rU   rS   rT   ro   rU   r"   r   )
r   r   rV   r   r   r   	qr_updater@   ndimr   )rB   r   r   r   udimvdimr   uvr   r   rI   r.   qiriuiviref_is                     r   test_qr_updatezTestBatch.test_qr_update   s     ii##$:;
dy37t5c2t5c2yy|1q!Q*q 	1AqT1Q4B vv{aV1qtFB$$RR4ECF1IuQx0CF1IuQx0	1r   r   )rU   rT   rS   kdimr+   rU   c                    t         j                  j                  d      }t        d||      }t        |||      }|j	                  dd|      }t        j                  |      \  }}	t        j                  ||	||      }
t        d      D ]z  }||   |	|   }}|j                  dk(  r|n||   }|j                  dk(  r|n||   }t        j                  ||||      }t        |
d   |   |d          t        |
d   |   |d          | y )	NrQ   rU   rS   rS   ro   r   rS   r   rU   r"   )r   r   rV   r   integersr   r   	qr_insertr@   r   r   )rB   r   r   r   r   r   r   rM   r   r   rI   r.   r   r   kir   r   s                    r   test_qr_insertzTestBatch.test_qr_insert   s     ii##$:;y37t5c2LLADL)yy|1q!Q*q 	1AqT1Q4BffkqtBffkqtB$$RR4ECF1IuQx0CF1IuQx0	1r   c                    t         j                  j                  d      }t        d||      }|j	                  dd|      }t        j                  |      \  }}t        j                  |||      }t        d      D ]c  }	||	   ||	   }}
|j                  dk(  r|n||	   }t        j                  |
||      }t        |d   |	   |d          t        |d   |	   |d          e y )NrQ   r   ro   r   rU   r   r"   )r   r   rV   r   r   r   r   	qr_deleter@   r   r   )rB   r   r   r   r   rM   r   r   rI   r.   r   r   r   r   s                 r   test_qr_deletezTestBatch.test_qr_delete   s     ii##$:;y37LLADL)yy|1q!Q'q 	1AqT1Q4BffkqtB$$RR0ECF1IuQx0CF1IuQx0	1r   c                     t         j                  j                  d      }t        d||      }| j	                  ||d       y )NrQ   rR   ro   r!   r   r   rs   s        r   test_schur_luzTestBatch.test_schur_lu	  r   r   calc_qc                     t         j                  j                  d      }t        d||      }|rdnd}| j	                  t
        j                  ||t        |             y )NrQ   rR   ro   r!   r"   )r   r   )r   r   rV   r   rO   r   
hessenbergr;   )rB   r   r   r   r   r$   s         r   test_hessenbergzTestBatch.test_hessenberg  sO     ii##$:;|5c:))1E$fBUVr   eigvals_onlyc                     t         j                  j                  d      }t        d||      }|rdnd}| j	                  t
        j                  ||t        |             y )NrQ   rR   ro   r"   r!   r   r   )r   r   rV   r   rO   r   
eig_bandedr;   )rB   r   r   r   r   r$   s         r   test_eig_bandedzTestBatch.test_eig_banded  sV     ii##$:;|5c:!q))1E#> 	 	@r   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |       y )NrQ   rR   ro   )r   r   rV   r   rO   r   eigvals_bandedrX   s       r   test_eigvals_bandedzTestBatch.test_eigvals_banded!  s9    ii##$:;|5c:--q1r   two_in
fun_n_noutc                 `   t         j                  j                  d      }|\  }}t        d|d|      }t        d|d|      }|dt        j                  d      j                  |      z  z   }|r||fn|f}	|dk(  r|t        j                  k(  rt        d      ni }
| j                  ||	||
	       y )
NrQ   r"   rT   rU   rU   r   r!   r"   rU   rU   rU   r"   Tr   r   )
r   r   rV   r   rr   r   r   eighr;   rO   )rB   r   r   r   r   rC   r$   r   Bargsr%   s              r   	test_eighzTestBatch.test_eigh'  s    
 ii##$:;
U ua= ua="&&)""5)))1vaT-2aZC<L4(SUTv>r   compute_expmc                     t         j                  j                  d      }t        d||      }t        d||      }|rdnd}| j	                  t
        j                  ||f|t        |             y )	NrQ   r   ro   r   r!   r"   )r   r   )r   r   rV   r   rO   r   expm_frechetr;   )rB   r   r   r   r   Er$   s          r   test_expm_frechetzTestBatch.test_expm_frechet5  sh     ii##$:;|5c:|5c:!q++aV5#> 	 	@r   c                 v   t         j                  j                  d      }t        d||      }t        d||      }| j	                  t
        j                  ||f       d\  }}}t        dd||f||      }t        dd||f||      }t        j                  ||      j                  ddt        ||      fk(  sJ y )	NrQ   )r"   rT   rU   rT   ro   )r!   r"   rU   rT   r   r"   rT   r!   )	r   r   rV   r   rO   r   subspace_anglesr   min)rB   r   r   r   r   ri   rj   Ks           r   test_subspace_angleszTestBatch.test_subspace_angles?  s    ii##$:;|5c:|5c:..A71a1a|5c:1a|5c:%%a+11aC1I5FFFFr   c                     t         j                  j                  d      }t        d||      }| j	                  ||       y )NrQ   r!   rT   rU   rS   ro   r   rs   s        r   test_svdvalszTestBatch.test_svdvalsK  s5     ii##$:;|5c:Qr   rU   rh   c                     t         j                  j                  d      }|\  }}t        d||      }t        d||      }| j	                  |||f|       y )NrQ   r   ro   r   r   )rB   r   r   r   rC   r$   r   r   s           r   test_two_generic_matrix_inputsz(TestBatch.test_two_generic_matrix_inputsR  sT     ii##$:;
U|5c:|5c:aV51r   c                    t         j                  j                  d      }d\  }}t        d||      }|dd |d |f   |dd ||d f   |d|d d |f   |d|d |d f   f\  }}}}	t	        j
                  |||      }
t	        j
                  ||||	f      }t        |
|      D ]%  \  }}t         j                  j                  ||       ' t        d      D ]g  }t        d      D ]W  }t	        j
                  |||f   ||      }t        |
|      D ]*  \  }}t         j                  j                  |||f   |       , Y i y )NrQ   )rT   rU   )r!   rT   
   r   ro   .r!   rT   )
r   r   rV   r   r   cossinr<   r=   r>   r@   )rB   r   r   pr   Xx11x12x21x22rI   rL   res_ir   r/   rM   ref_jkref_ijks                     r   test_cossinzTestBatch.test_cossin`  s\   ii##$:;1~U<RaR!naRaRnQR!naQRn>S#smmAq!$mmS#sC01SM 	2LE5JJ##E51	2 q 	BA1X BqAw15&)#v&6 BNE7JJ++E!Q$KABB	Br   c                     t         j                  j                  d      }t        d||      }t        d||      }t        d||      }| j	                  t
        j                  |||f       y )NrQ   r   ro   )r   r   rV   r   rO   r   solve_sylvester)rB   r   r   r   r   Cs         r   test_sylvesterzTestBatch.test_sylvesterr  s[    ii##$:;|5c:|5c:|5c:..Aq	:r   c                    t         j                  j                  d      }t        d||      }t        d||      }t	        d|d|      }t	        d|d|      }|dt        j
                  d      z  z   }|dt        j
                  d      z  z   }|dt        j
                  d      z  z   }|dt        j
                  d      z  z   }| j                  |||||f       y )NrQ   r   ro   r   r   r   r   rS   )r   r   rV   r   r   rr   rO   )rB   rC   r   r   abr   r   s           r   test_arezTestBatch.test_arez  s     ii##$:;|5c:|5c: UL UL"&&)O"&&)O"&&)O"&&)OaAq\*r   c                     t         j                  j                  d      }t        d||      }t	        j
                  |      \  }}| j                  t        j                  ||fd       y )NrQ   r   ro   r!   r   )r   r   rV   r   r   schurrO   rsf2csf)rB   r   r   r   TZs         r   test_rsf2cszTestBatch.test_rsf2cs  sP    ii##$:;|5c:||A1Aa8r   c                     t         j                  j                  d      }t        d||      }d|ddd d f<   | j	                  t
        j                  |       y )NrQ   )rS   rU   rT   rh   ro   r   .r   )r   r   rV   r   rO   r   cholesky_banded)rB   r   r   abs       r   test_cholesky_bandedzTestBatch.test_cholesky_banded  sH    ii##$:;Es;3A:..3r   c                    t         j                  j                  d      }t        d||      }t        d||      }t        d||      }t        j                  |d      }t        j                  |d      }t        j                  |d      }| j                  t        j                  |||fd	d	
      }	t        j                  |||      }
t        |
|	       y )NrQ   )r"   rT   r"   rT   ro   )r!   r"   rT   rh   )r"   r"   rT   r!   )r!   rT   r"   rT   )r!   rT   rT   rh   )r!   rT   rT   r!   F)r'   r&   )	r   r   rV   r   broadcast_torO   r   
block_diagr   )rB   r   r   r  r  r   a2b2c2rL   rI   s              r   test_block_diagzTestBatch.test_block_diag  s    ii##$:;|5c:|5c:|5c: __Q-__Q-__Q-oof//"b"+0E  C 1a(S!r   c                     t         j                  j                  d      }|\  }}t        d||      }t        d||      }| j	                  |||fd|d       y )NrQ   )rT   rU   rS   ro   )rT   rU   rU   r"   F)r#   r$   r&   r   )rB   r   r   r   rC   r$   des           r   test_eigh_tridiagonalzTestBatch.test_eigh_tridiagonal  sX    
 ii##$:;
Uy37y37aVauNr   bdimc                    t         j                  j                  d      }t        d||      }t        |||      }t	        j
                  ||      }t        |      dk(  r*|dt         j                  f   }|dt         j                  f   }t        ||z  |z
  dd       t        |t         j                  j                  ||      d	       y 
NrQ   r   ro   r"   .r   gTqs*>r\   gTqs*>)	r   r   rV   r   r   solverA   newaxisr   )rB   r  r   r   r   r  xs          r   
test_solvezTestBatch.test_solve  s     ii##$:;|5c:t5c2LLAt9>#rzz/"A#rzz/"AA	162299??1a0t<r   c                    t         j                  j                  d      }t        d||      }t        |||      }t	        j
                  |      }t	        j                  ||      }t        |      dk(  r*|dt         j                  f   }|dt         j                  f   }t        ||z  |z
  dd       t        |t         j                  j                  ||      d	       y r!  )r   r   rV   r   r   	lu_factorlu_solverA   r#  r   r"  )rB   r  r   r   r   r  
lu_and_pivr$  s           r   test_lu_solvezTestBatch.test_lu_solve  s     ii##$:;|5c:t5c2%%a(
OOJ*t9>#rzz/"A#rzz/"AA	162299??1a0t<r   l_and_u)r"   r"   )r!   r"   r   )r   r"   r!   c                    t         j                  j                  d      }|\  }}t        d||      }t        |||      }t	        j
                  ||f||      }	t        d      D ]  }
t        d      D ]  }t        |      dk  r|n||
|f   }t        j                  |      dk(  r|n||   }t        j                  |      dk(  r|n||   }t	        j
                  ||f||
|f   |      }t        |	|
|f   |         y )NrQ   r!   rT   rT   rS   ro   r!   rT   r   )
r   r   rV   r   r   solve_bandedr@   rA   r   r   )rB   r+  r  r   r   lr   r  r  r$  r.   r/   bijljujxijs                   r   test_solve_bandedzTestBatch.test_solve_banded  s     ii##$:;1Es;t5c2AA.q 	.A1X .t9>aqAw''!*/Qqt''!*/Qqt))2r(Bq!tHcB!Q$-.	.r   c                    t         j                  j                  d      }t        d|d|      }|dt        j                  d      z  z   }t        j                  |      }t        |||      }t        j                  ||      }t        |      dk(  r*|dt         j                  f   }|dt         j                  f   }t        ||z  |z
  dd	
       t        |t         j
                  j                  ||      d
       y )NrQ   r   r   r  rS   ro   r"   .r   r\   >)r   r   rV   r   rr   r   
cho_factorr   	cho_solverA   r#  r   r"  )rB   r  r   r   r   c_and_lowerr  r$  s           r   test_cho_solvezTestBatch.test_cho_solve  s     ii##$:; UL"&&)O''*t5c2[!,t9>#rzz/"A#rzz/"AA	140299??1a0t<r   lowerc                    t         j                  j                  d      }t        d||      }|rdnd}d|d d d d |f<   t	        j
                  ||      }t        |||      }t	        j                  ||f|      }	t        d      D ]W  }
t        d	      D ]G  }t        |      dk  r|n||
|f   }t	        j                  ||
|f   |f|      }t        |	|
|f   |       I Y y )
NrQ   r-  ro   r   r   r   r;  r!   rT   )
r   r   rV   r   r   r  cho_solve_bandedr@   rA   r   )rB   r;  r  r   r   r   row_diagcbr  r$  r.   r/   r0  r3  s                 r   test_cho_solve_bandedzTestBatch.test_cho_solve_banded  s     ii##$:;|5c:12!Q.##AU3t5c2##RK3q 	.A1X .t9>aqAw--r!Q$x.?E!Q$-.	.r   c                    t         j                  j                  d      }t        d||      }d|d d d d df<   t        |||      }t	        j
                  ||      }t        d      D ]U  }t        d      D ]E  }t        |      dk  r|n|||f   }	t	        j
                  |||f   |	      }
t        |||f   |
       G W y )NrQ   r-  ro   r   r   r!   rT   )	r   r   rV   r   r   solveh_bandedr@   rA   r   )rB   r  r   r   r   r  r$  r.   r/   r0  r3  s              r   test_solveh_bandedzTestBatch.test_solveh_banded  s     ii##$:;|5c:!Q(t5c2  A&q 	.A1X .t9>aqAw**1QT7C8!Q$-.	.r   c                    t         j                  j                  d      }t        d||      }t        j                  |      }t        |||      }t        j                  ||d      }t        |      dk(  r*|dt         j                  f   }|dt         j                  f   }|t         j                  t         j                  fv rdnd	}t        ||z  |z
  d
|       t        |t         j
                  j                  ||      d|z         y )NrQ   r   ro   Tr=  r"   .g|=g-C6*?r   r\   rS   )r   r   rV   r   trilr   solve_triangularrA   r#  
complex128float64r   r"  )rB   r  r   r   r   r  r$  r   s           r   test_solve_triangularzTestBatch.test_solve_triangular"  s     ii##$:;|5c:GGAJt5c2##Aq5t9>#rzz/"A#rzz/"A"--!<<u$A	140299??1a0qv>r   )r   )rU   rT   )r!   rT   rU   rT   c                 h   t         j                  j                  d      }t        d||      }t        |||      }t	        j
                  ||      }|d   }t        |      dk(  r*|dt         j                  f   }|dt         j                  f   }t        ||z  |z
  dd       t        |      d	k(  sJ y )
NrQ   r   ro   r   r"   .r6  r\   rU   )	r   r   rV   r   r   lstsqrA   r#  r   )rB   r  r   r   r   r  rI   r$  s           r   
test_lstsqzTestBatch.test_lstsq1  s     ii##$:;|5c:t5c2ll1a Ft9>#rzz/"A#rzz/"AA	1403x1}}r   c                     t         j                  j                  d      }t        d||      }| j	                  t
        j                  |t        dd             y )NrQ   rv   ro   rT   i sketch_sizer   r]   )r   r   rV   r   rO   r   clarkson_woodruff_transformr;   rX   s       r    test_clarkson_woodruff_transformz*TestBatch.test_clarkson_woodruff_transform?  sK    ii##$:;|5c:::A#v> 	 	@r   c                 8   t         j                  j                  d      }t        dt         j                  |      }t        j                  |      }d}t        j                  t        |      5  t        j                  |d|       d d d        y # 1 sw Y   y xY w)NrQ   rv   ro   z1Batch support for sparse arrays is not available.)matchrT   rO  )r   r   rV   r   rI  r   	coo_arraypytestraisesNotImplementedErrorr   rQ  )rB   r   r   messages       r   'test_clarkson_woodruff_transform_sparsez1TestBatch.test_clarkson_woodruff_transform_sparseF  sx    ii##$:;|2::3?QE]].g> 	J..qaSI	J 	J 	Js   .BB)X__name__
__module____qualname__rO   rV  markparametrizefloatingrY   rb   rf   rm   r   invrq   signmsinmcosmtanhmsinhmcoshmr   pinvhorthrt   rx   r~   r   r   r   r   r   choleskyldlr7  r   r   polarr   rqr   r   r   r   r   r  r'  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	  r  r  r  eigh_tridiagonaleigvalsh_tridiagonalreal_floatingr  r%  r*  r4  r:  rA  rD  rJ  rM  rR  rZ  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    )r5   rV  numpyr   numpy.testingr   scipyr   r   r   rI  r{  r   rH  complex_floatingr`  r   r   r    r+   r   r   <module>r     s^       )   RZZ(LL"--0 ++oJ oJr   