
    Yh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dS )    N)assert_allclose)linalgsparsec                    |                     |           }t          j        |t          j                  r||                     |           dz  z   }|                    |          S )Ny              ?)randomnp
issubdtypecomplexfloatingastype)shapedtyperngAs       o/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_batch.py
get_randomr      sU    

5A	}UB.// '

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

5  ''A	B##	$	$BQW--44U;;dBEr6E>r   c                   H   e Zd ZddddddddZej                            de          d             Zej                            de          d	             Z	ej                            de          d
             Z
ej                            de          d             Ze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                            de          d                         Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            de          d             Zej                            dej         dfej!        dfej"        dfg          ej                            de          d                         Z#ej                            dddg          ej                            de          d                         Z$ej                            dej%        ej&        ej'        g          ej                            de          d                         Z(ej                            dg d          ej                            de          d                         Z)ej                            dd d!gd"d#gg          ej                            de          d$                         Z*ej                            d%d d&g          ej                            d'd(d)g          ej                            de          d*                                     Z+ej                            d'd(d)g          ej                            de          d+                         Z,ej                            dej-        ej.        g          ej                            de          d,                         Z/ej                            d-ddg          ej                            de          d.                         Z0ej                            d/ddg          ej                            de          d0                         Z1ej                            de          d1             Z2ej                            d2ddg          ej                            d3ej3        dfej3        dfej4        dfej5        dfg          ej                            de          d4                                     Z6ej                            d5ddg          ej                            de          d6                         Z7ej                            de          d7             Z8ej                            dej9        g          ej                            de          d8                         Z:ej                            dej;        dfej<        dfej=        dfej>        dfej?        d9fej@        d:fg          ej                            de          d;                         ZAej                            de          d<             ZBej                            de          d=             ZCej                            dejD        ejE        g          ej                            de          d>                         ZFej                            de          d?             ZGej                            de          d@             ZHej                            de          dA             ZIej                            dejJ        dfejK        dfg          ej                            deL          dB                         ZMej                            dCg d          ej                            de          dD                         ZNej                            dCg d          ej                            de          dE                         ZOej                            dFdGg dHg dIfg          ej                            dCg d          ej                            de          dJ                                     ZPej                            dCg d          ej                            de          dK                         ZQej                            dLddg          ej                            dCg d          ej                            de          dM                                     ZRej                            dCg d          ej                            de          dN                         ZSej                            dCg d          ej                            de          dO                         ZTej                            dCg dP          ej                            de          dQ                         ZUej                            de          dR             ZVdS ZWdS )T	TestBatch      NT)core_dimn_outkwargsr   	broadcastcheck_kwargsc          
      4   |i n|}t          t          j        |          j                                                  }	t          |t                    s|fn|} ||i |}
|r[ |di t          t          |	|                    |}t          ||
          D ]%\  }}t          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 ]Y}t!          ||         f         ||                    t          j        ||         f                   ||         j        k    sJ Zt          t#          |                    D ]&}|||         j        n|}||         j        |k    sJ '|
S )Nr"   r   c              3   ,   K   | ]}|f         V  d S N ).0arrayijs     r   	<genexpr>z'TestBatch.batch_test.<locals>.<genexpr>?   s+      ==UU1a4[======r   c              3   >   K   | ]}t          j        |          V  d S r*   )r   asarray)r,   refks     r   r0   z'TestBatch.batch_test.<locals>.<genexpr>B   s,      >>$RZ-->>>>>>r   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    sz    ~6'+C00;@@BBCC
",VU";";G& sF%f%% 	43AAc*f5566A&AAD!$oo 4 4
d
''d3333 !tgg  	2(&1FQiojyj1{1~&& 	B 	BA;q>** B B=====f===	c9///-2aZZ
3))>>#>>>>> u B BA#CF1a4L#a&9998CF1a4L11SV\AAAAABB s3xx 	- 	-A(-A5Iq6<9,,,,,r   r   c                     t           j                            d          }|                    d                              |          }|                     t
          j        |           d S )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   sT    i##$:;;JJ|$$++E22(!,,,,,r   c                     t           j                            d          }t          d|d|          }|                     t
          j        |t          d                    }t          j        |          rJ t          j	        |          sJ d S 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   {    i##$:;; udC@@oof0!DdOOOoLL6#;;vc{{r   c                     t           j                            d          }t          d|d|          }|                     t
          j        |t          d                    }t          j        |          rJ t          j	        |          sJ d S r[   )
r   r   rV   r   rO   r   ishermitianr;   r_   r`   ra   s        r   test_ishermitianzTestBatch.test_ishermitian[   rc   r   c                 d   t           j                            d          }|                    d                              |          }|                     t
          j        |t          dd          d          }t          j        |dd          }t           j        	                    ||           d S )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   s    i##$:;;JJy!!((//v~qQRSTT~aA&&

d+++++r   rC   c                     t           j                            d          }t          d||          }|t          j        k    r|dt          j        d|          z  z   }|                     ||           d S )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   su     i##$:;;|5c::: &,AbfQe,,,,,AQr   c                     t           j                            d          }t          d||          }|                     t
          j        |           d S )NrQ   rS   rT   rU   rh   ro   )r   r   rV   r   rO   r   
null_spacerX   s       r   test_null_spacezTestBatch.test_null_space|   sI    i##$:;;|5c:::)1-----r   c                     t           j                            d          }t          d||          }|                     t
          j        |t          t           j                             d S )NrQ   r!   rU   rT   rT   ro   )funcr]   )	r   r   rV   r   rO   r   funmr;   sinrX   s       r   	test_funmzTestBatch.test_funm   sY    i##$:;;|5c:::Qt/@/@/@AAAAAr   c                    t           j                            d          }t          d||          }|                     t
          j        |ddi          }t          j        |d          }t           j                            ||           d S )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   sz    i##$:;;|5c:::v=q#cSS-a55

d+++++r   c                 p   t           j                            d          }t          d||          }|dt          j        d          z  z   }|                     t          j        |          }t          j        |          }t          ||          D ]%\  }}t           j	        
                    ||           &d S )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     i##$JKK|5c:::"&))Ov{A..{1~~dOO 	2 	2LE5J##E51111	2 	2r   c                     t           j                            d          }t          d||          }|                     t
          j        |dt          d                     d S )NrQ   rR   ro   r!   T)return_rankr$   r%   )r   r   rV   r   rO   r   pinvr;   rX   s       r   	test_pinvzTestBatch.test_pinv   sY    i##$:;;|5c:::Qa8N8N8NOOOOOr   c                     t           j                            d          }t          d||          }|                     t
          j        |d           |                     t
          j        |dddi           d S )	NrQ   rR   ro   r!   r$   separateTr   )r   r   rV   r   rO   r   matrix_balancerX   s       r   test_matrix_balancezTestBatch.test_matrix_balance   so    i##$:;;|5c:::-q:::-q:dBSTTTTTr   c                 0   t           j                            d          }t          d||          t          j        fdt          dd          D                                           d          |                     t          j	        d	           d S )
NrQ   )rU   rU   ro   c                 :    g | ]}t          j        |          S r+   )r   triu)r,   rM   r   s     r   
<listcomp>z,TestBatch.test_bandwidth.<locals>.<listcomp>   s#    <<<!1<<<r   rT   r!   rT   rU   rU   r!   r   )
r   r   rV   r   r2   r@   reshaperO   r   	bandwidthrX   s      @r   test_bandwidthzTestBatch.test_bandwidth   s    i##$:;;vU444J<<<<uR||<<<==EElSS(!155555r   	fun_n_outrT   c                     t           j                            d          }|\  }}t          d|d|          }|dt          j        d|          z  z   }|                     |||           d S )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   sr     i##$:;;
U ua=="&%(((((Qe,,,,,r   
compute_uvFc                     t           j                            d          }t          d||          }|rdnd}|                     t
          j        ||t          |                     d S )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   si     i##$:;;|5c:::&Q
AU4:;V;V;VWWWWWr   c                     t           j                            d          }t          d||          }|                     ||d           d S )NrQ   r   ro   r!   r   r   r   rV   r   rO   rs   s        r   test_polar_qr_rqzTestBatch.test_polar_qr_rq   L     i##$:;;|5c:::Qa(((((r   cdim)rS   )rS   rU   )r!   rT   rS   rU   c                    t           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
         ||
	           d S )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     i##$:;;|5c:::t5c222 AF333y||1!eR\ :::ttA$////A------r   uvdimr   )rT   )rU   rS   r!   )rU   rT   r!   c                 T   t           j                            d          }|\  }}t          d||          }t          |||          }t          |||          }t	          j        |          \  }	}
t	          j        |	|
||          }t          d          D ]}|	|         |
|         }}|j        dk    r||fn||         ||         f\  }}t	          j        ||||          }t          |d         |         |d                    t          |d         |         |d                    d S )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.    i##$:;;
dy3777t5c222t5c222y||1q!Q**q 	1 	1AqT1Q4B v{{aVV1qtFB$RR44ECF1IuQx000CF1IuQx0000	1 	1r   r   )rU   rT   rS   kdimr+   rU   c                 f   t           j                            d          }t          d||          }t          |||          }|                    dd|          }t          j        |          \  }}	t          j        ||	||          }
t          d          D ]}||         |	|         }}|j	        dk    r|n||         }|j	        dk    r|n||         }t          j        ||||          }t          |
d         |         |d                    t          |
d         |         |d                    d S )	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/    i##$:;;y3777t5c222LLADL))y||1q!Q**q 	1 	1AqT1Q4BfkkqtBfkkqtB$RR44ECF1IuQx000CF1IuQx0000	1 	1r   c                    t           j                            d          }t          d||          }|                    dd|          }t          j        |          \  }}t          j        |||          }t          d          D ]}	||	         ||	         }}
|j	        dk    r|n||	         }t          j        |
||          }t          |d         |	         |d                    t          |d         |	         |d                    d S )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     i##$:;;y3777LLADL))y||1q!Q''q 	1 	1AqT1Q4BfkkqtB$RR00ECF1IuQx000CF1IuQx0000	1 	1r   c                     t           j                            d          }t          d||          }|                     ||d           d S )NrQ   rR   ro   r!   r   r   rs   s        r   test_schur_luzTestBatch.test_schur_lu	  r   r   calc_qc                     t           j                            d          }t          d||          }|rdnd}|                     t
          j        ||t          |                     d S )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  sj     i##$:;;|5c:::")1E$fBUBUBUVVVVVr   eigvals_onlyc                     t           j                            d          }t          d||          }|rdnd}|                     t
          j        ||t          |                     d S )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  s}     i##$:;;|5c:::!(q)1E#>>> 	 	@ 	@ 	@ 	@ 	@r   c                     t           j                            d          }t          d||          }|                     t
          j        |           d S )NrQ   rR   ro   )r   r   rV   r   rO   r   eigvals_bandedrX   s       r   test_eigvals_bandedzTestBatch.test_eigvals_banded!  sI    i##$:;;|5c:::-q11111r   two_in
fun_n_noutc                    t           j                            d          }|\  }}t          d|d|          }t          d|d|          }|dt          j        d                              |          z  z   }|r||fn|f}	|dk    r |t          j        k    rt          d          ni }
| 	                    ||	||
	           d S )
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    
 i##$:;;
U ua== ua=="&))""5)))))1vvaT-2aZZC<L<L4((((SUTv>>>>>r   compute_expmc                     t           j                            d          }t          d||          }t          d||          }|rdnd}|                     t
          j        ||f|t          |                     d S )	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  s     i##$:;;|5c:::|5c:::!(q+aV5#>>> 	 	@ 	@ 	@ 	@ 	@r   c                    t           j                            d          }t          d||          }t          d||          }|                     t
          j        ||f           d\  }}}t          dd||f||          }t          dd||f||          }t          j        ||          j        ddt          ||          fk    sJ d S )	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    i##$:;;|5c:::|5c:::.A7771a1a|5c:::1a|5c:::%a++1aC1II5FFFFFFFr   c                     t           j                            d          }t          d||          }|                     ||           d S )NrQ   r!   rT   rU   rS   ro   r   rs   s        r   test_svdvalszTestBatch.test_svdvalsK  sH     i##$:;;|5c:::Qr   rU   rh   c                     t           j                            d          }|\  }}t          d||          }t          d||          }|                     |||f|           d S )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  sm     i##$:;;
U|5c:::|5c:::aV511111r   c                    t           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                            ||           &t          d          D ]p}t          d          D ]^}t	          j        |||f         ||          }t          |
|          D ]-\  }}t           j                            |||f         |           ._qd S )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   i##$:;;1~U<<<RaR!naRaRnQRR!naQRRn>S#smAq!$$mS#sC011SMM 	2 	2LE5J##E51111q 	B 	BA1XX B BqAw155&)#v&6&6 B BNE7J++E!Q$KAAAABB	B 	Br   c                     t           j                            d          }t          d||          }t          d||          }t          d||          }|                     t
          j        |||f           d S )NrQ   r   ro   )r   r   rV   r   rO   r   solve_sylvester)rB   r   r   r   r   Cs         r   test_sylvesterzTestBatch.test_sylvesterr  sw    i##$:;;|5c:::|5c:::|5c:::.Aq	:::::r   c                    t           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   }|                     |||||f           d S )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     i##$:;;|5c:::|5c::: ULLL ULLL"&))O"&))O"&))O"&))OaAq\*****r   c                     t           j                            d          }t          d||          }t	          j        |          \  }}|                     t          j        ||fd           d S )NrQ   r   ro   r!   r   )r   r   rV   r   r   schurrO   rsf2csf)rB   r   r   r   TZs         r   test_rsf2cszTestBatch.test_rsf2cs  sa    i##$:;;|5c:::|A1Aa88888r   c                     t           j                            d          }t          d||          }d|ddd d f<   |                     t
          j        |           d S )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  s\    i##$:;;Es;;;3AAA:.33333r   c                    t           j                            d          }t          d||          }t          d||          }t          d||          }t          j        |d          }t          j        |d          }t          j        |d          }|                     t          j        |||fd	d	
          }	t          j        |||          }
t          |
|	           d S )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    i##$:;;|5c:::|5c:::|5c::: _Q--_Q--_Q--oof/"b"+0E  C C 1a((S!!!!!r   c                     t           j                            d          }|\  }}t          d||          }t          d||          }|                     |||fd|d           d S )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  sq    
 i##$:;;
Uy3777y3777aVauNNNNNr   bdimc                    t           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                            ||          d	           d S 
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     i##$:;;|5c:::t5c222LAt99>>#rz/"A#rz/"AA	16222229??1a00t<<<<<<r   c                    t           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        
                    ||          d	           d S 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     i##$:;;|5c:::t5c222%a((
OJ**t99>>#rz/"A#rz/"AA	16222229??1a00t<<<<<<r   l_and_u)r"   r"   )r!   r"   r   )r   r"   r!   c                 D   t           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         |           d S )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  s0    i##$:;;1Es;;;t5c222AA..q 	. 	.A1XX . .t99>>aaqAw'!**//QQqt'!**//QQqt)2r(Bq!tHcBB!Q$----.	. 	.r   c                    t           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                            ||          d
           d S )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     i##$:;; ULLL"&))O'**t5c222[!,,t99>>#rz/"A#rz/"AA	14000029??1a00t<<<<<<r   lowerc                    t           j                            d          }t          d||          }|rdnd}d|d d d d |f<   t	          j        ||          }t          |||          }t	          j        ||f|          }	t          d          D ]j}
t          d	          D ]X}t          |          dk    r|n	||
|f         }t	          j        ||
|f         |f|          }t          |	|
|f         |           Ykd S )
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/   r2  r5  s                 r   test_cho_solve_bandedzTestBatch.test_cho_solve_banded  s%    i##$:;;|5c:::%112!!!QQQ.#AU333t5c222#RK33q 	. 	.A1XX . .t99>>aaqAw-r!Q$x.?EE!Q$----.	. 	.r   c                    t           j                            d          }t          d||          }d|d d d d df<   t          |||          }t	          j        ||          }t          d          D ]h}t          d          D ]V}t          |          dk    r|n	|||f         }	t	          j        |||f         |	          }
t          |||f         |
           Wid S )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/   r2  r5  s              r   test_solveh_bandedzTestBatch.test_solveh_banded  s     i##$:;;|5c:::!!!QQQ(t5c222 A&&q 	. 	.A1XX . .t99>>aaqAw*1QT7C88!Q$----.	. 	.r   c                 *   t           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                            ||          d|z             d S )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     i##$:;;|5c:::GAJJt5c222#Aq555t99>>#rz/"A#rz/"A"-!<<<uu$A	14000029??1a00qv>>>>>>r   )r   )rU   rT   )r!   rT   rU   rT   c                    t           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 d S )
NrQ   r   ro   r   r"   .r8  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     i##$:;;|5c:::t5c222l1a  Ft99>>#rz/"A#rz/"AA	1400003xx1}}}}}}r   c                     t           j                            d          }t          d||          }|                     t
          j        |t          dd                     d S )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?  sm    i##$:;;|5c::::A#v>>> 	 	@ 	@ 	@ 	@ 	@r   c                 >   t           j                            d          }t          dt           j        |          }t          j        |          }d}t          j        t          |          5  t          j        |d|           d d d            d S # 1 swxY w Y   d S )NrQ   rv   ro   z1Batch support for sparse arrays is not available.)matchrT   rQ  )r   r   rV   r   rK  r   	coo_arraypytestraisesNotImplementedErrorr   rS  )rB   r   r   messages       r   'test_clarkson_woodruff_transform_sparsez1TestBatch.test_clarkson_woodruff_transform_sparseF  s    i##$:;;|2:3???QE].g>>> 	J 	J.qaSIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   -BBB)X__name__
__module____qualname__rO   rX  markparametrizefloatingrY   rb   rf   rm   r   invrq   signmsinmcosmtanhmsinhmcoshmr   pinvhorthrt   rx   r~   r   r   r   r   r   choleskyldlr9  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,  r6  r<  rC  rF  rL  rO  rT  r\  r+   r   r   r    r       sy        341TQU!+ + + + +Z [Wh//- - 0/-
 [Wh//  0/ [Wh//  0/ [Wh//, , 0/, [UVZv|%+[&+v|%+\6<%+[&,%M N N [Wh//	  	  0/	N N
	  [Wh//. . 0/.
 [Wh//B B 0/B
 [Wh//, , 0/, [Wh//	2 	2 0/	2 [Wh//P P 0/P
 [Wh//U U 0/U [Wh//6 6 0/6 [[FOQ+?&*a,2,=q+A+C D D[Wh//- - 0/D D- [\E4=99[Wh//X X 0/ :9X [UV\69fi$HII[Wh//) ) 0/ JI)
 [V%A%A%ABB[Wh//	. 	. 0/ CB	. [Wd|i5K&LMM[Wh//1 1 0/ NM1 [VdI%677[Vb$Z00[Wh//1 1 0/ 10 871 [Vb$Z00[Wh//1 1 0/ 101 [UV\63C$DEE[Wh//) ) 0/ FE)
 [Xt}55[Wh//W W 0/ 65W [^eT];;[Wh//@ @ 0/ <;@ [Wh//2 2 0/2
 [Xt}55[\V[!,<v{A>N-3_a,@6>STBU,W X X[Wh//? ? 0/X X 65? [^eT];;[Wh//@ @ 0/ <;@ [Wh//	G 	G 0/	G [UV^$455[Wh//    0/ 65 
 [[F,H!+L,2,=q+A,2,La+P,2,JA+N,2Iq>,2L!+<+> ? ? [Wh//2 2 0/? ?2 [Wh//B B 0/B" [Wh//; ; 0/; [UV%@%+%>%@ A A[Wh//+ + 0/A A+ [Wh//9 9 0/9 [Wh//4 4 0/4 [Wh//" " 0/"$ [[F,CQ+G,2,G+K+M N N[Wm44O O 54N NO [V%A%A%ABB[Wh//	= 	= 0/ CB	= [V%A%A%ABB[Wh//
= 
= 0/ CB
= [Y)))ZZZ1H(IJJ[V%A%A%ABB[Wh//. . 0/ CB KJ.@ [V%A%A%ABB[Wh//= = 0/ CB= [Wudm44[V%A%A%ABB[Wh//. . 0/ CB 54. [V%A%A%ABB[Wh//
. 
. 0/ CB
. [V%A%A%ABB[Wh//? ? 0/ CB? [V%A%A%ABB[Wh//
 
 0/ CB
 [Wh//@ @ 0/@J J J J Jr   r    )r5   rX  numpyr   numpy.testingr   scipyr   r   r   rK  r}  r   rJ  complex_floatingrb  r   r   r    r+   r   r   <module>r     s          ) ) ) ) ) )                 RZ(L"-0 ++    oJ oJ oJ oJ oJ oJ oJ oJ oJ oJr   