
    Cpj                        S SK r S SKrS SKrS SKJrJr  S SKrS SKJ	r	  S SK
JrJrJrJr  S SKJr  SSKJrJr  S rS	 rS
 rS rS rS rS rS rS rS rS rS rS r S r!\RD                  RG                  S/ SQ5      S\$4S j5       r%\RD                  RG                  S\&" \'" / SQ/ SQ5      5      5      S\(\$\$4   4S j5       r)\RD                  RG                  S/ SQ5      S\$4S j5       r*S r+S r,S r-S  r.S! r/S" r0S# r1S$ r2\RD                  RG                  S%/ S&Q5      S' 5       r3\RD                  RG                  S%/ S&Q5      S( 5       r4\RD                  RG                  S%/ S&Q5      S) 5       r5\RD                  RG                  S%/ S&Q5      S* 5       r6S+ r7\RD                  RG                  S,/ S-Q5      S. 5       r8\RD                  RG                  S%/ S&Q5      S/ 5       r9\RD                  RG                  S%/ S&Q5      S0 5       r:\RD                  RG                  S1/ S2Q5      S3 5       r;S4 r<S5 r=\RD                  RG                  S%/ S&Q5      S6 5       r>\RD                  RG                  S%/ S&Q5      S7 5       r?S8 r@\RD                  RG                  S9/ S:Q5      S; 5       rA\RD                  RG                  S%/ S&Q5      S< 5       rB\RD                  RG                  S%/ S&Q5      S= 5       rCS> rD\RD                  RG                  S9/ S:Q5      S? 5       rE/ S@QrF\RD                  RG                  SA\F5      SB 5       rG/ SCQrH\RD                  RG                  SD\H5      SE 5       rISF rJSG rKSH rLSI rMSJ rN/ SKQrO\RD                  RG                  S9\O5      SL 5       rPSMSNSO/S /44SPSQSR/S /44SSSTS /S/44SUSVS SR/SRS/44SWSX/ SYQ/ SZQ44S[S\S]S]/ SYQ/ SYQ44/rQ\RD                  RG                  S^\Q5      S_ 5       rRS` rS\RD                  RG                  Sa/ SbQ5      Sc 5       rT\RD                  RG                  S%/ SdQ5      Se 5       rU\RD                  RG                  S%/ SdQ5      Sf 5       rV/ SgQrW\RD                  RG                  S9\W5      Sh 5       rX\RD                  RG                  S9\W5      Si 5       rY/ SjQrZ\RD                  RG                  Sk\Z5      Sl 5       r[/ SmQr\\RD                  RG                  Sk\\5      Sn 5       r]So r^SpSqSrSsStSuSWS \R                  " Sv5      4SwSPSO\R                  " Sx5      4SySzS{S|S}S~SSSS\R                  " S5      4SSSS\R                  " S5      4SSSY\R                  " SS5      4S/r`\RD                  RG                  S\`5      S 5       ra\RD                  RG                  S\`5      S 5       rbS rc/ SgQrd\RD                  RG                  S9\d5      S 5       reS rf\RD                  RG                  S9\d5      S 5       rgS rh\RD                  RG                  S9\d5      S 5       riS rj\RD                  RG                  S9\d5      S 5       rk\RD                  RG                  S9\d5      S 5       rlS rmS rnS roS rpS rqS rrS rsS rt\R                  " S5      R                  S5      rw\" \w5      rxSS\y" SOSRS5      S 4S\y" SOSRS5      4\y" SOSRS5      \y" SOSSR5      4\y" SSS5      S4SO\y" S5      4\z4SOSR/S 4SSOS/4\R                  " SOSR/5      \y" SOS5      4\y" S5      \R                  " / SQ5      4\R                  " SOSR/5      \R                  " S S/5      4/r|\RD                  RG                  / SQ\| V s/ s H  n \x\wU 4PM
     sn 5      \RD                  R                  S 5       5       r~\R                  " S5      R                  S5      rw\" \w5      rxSSS \y" SOSR5      S 4\y" SRS5      SR\y" S5      4\y" S5      \y" SOSS5      \y" SOS5      4\y" SSS5      \y" S5      \y" SOSS5      4\zSSOS/\y" SR5      4\R                  " SOSR/5      \y" SOS5      S 4\R                  " SOSR/5      \y" SOS5      S /4\R                  " SOSR/5      \y" SOS5      \R                  " SS/5      4S\R                  " SOSR/5      \R                  " SS/5      4\R                  " SOSR/5      \R                  " SS/5      SO4\R                  " SOSR/5      \R                  " SS/5      S/4/r|\RD                  RG                  / SQ\| V s/ s H  n \x\wU 4PM
     sn 5      \RD                  R                  S 5       5       r\RD                  RG                  SS \R                  S // SQS9\RD                  R                  SS9S 5       5       r\R                  " S5      R                  S5      rw\" \w5      rxSSSSS\y" SSS5      SSO\y" SSS5      SO44S\y" SSS5      \y" SSS5      SSOSO44SSSOSO\y" SSS5      \y" SSS5      44S\y" SSS5      \y" SSS5      SSOSO44S\y" SSS5      / SQ/ SQ// SQ/ SQ/\y" SSS5      S 44S\y" SSS5      / SQ/ SQ// SQ/ SQ/SO\y" SSS5      44S\y" SSS5      / SQ/ SQ\y" SSS5      SO44SS \y" SOSS5      SO/ SQ/S/SO/S //44S\y" SSRS5      \y" SOSS5      SO/ SQ/S/SO/S //44S/ SQ/S/SO/S //S \y" SOSS5      \y" SSRS5      44S/ SQ/\y" SOSS5      \y" SSRS5      S S/SO/S //44S\y" SSS5      / SQ/ SQ// SQ/ SQ/\y" SSS5      SO44S\y" SOSS5      S SO/ SQ/S/SO/SO//44/r|\RD                  RG                  / SQ\| VVs/ s H
  u  p\x\wX!4PM     snn5      \RD                  R                  S 5       5       rS rS rgs  sn f s  sn f s  snnf )    N)assert_equalassert_allclose)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarningmatrix_transpose)	csr_array   )_block_diag_extract_block_diagc                     [        S5      n U R                  S:X  d   e[        U R                  5       [        R
                  " S5      5        [        S5      nUR                  S:X  d   e[        UR                  5       [        R
                  " S5      5        [        S5      nUR                  S:X  d   e[        UR                  5       [        R
                  " S5      5        g )N   r   r   )r   r            r   shaper   toarraynpzeros)empty1dempty2dempty_nds      W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructorr      s    oG==D   "BHHTN3G==F""""BHHV$45%H>>[(((!!#RXXk%:;    c                  <   [        / SQ5      n U R                  S:X  d   e[        U R                  5       [        R
                  " / SQ5      5        [        / SQ/ SQ/5      nUR                  S:X  d   e[        UR                  5       [        R
                  " / SQ/ SQ/5      5        [        R
                  " SS/SS//S	S
/SS///SS/SS//SS
/SS	///SS/SS//SS/SS////5      n[        U5      nUR                  S:X  d   e[        UR                  5       U5        [        R                  R                  S5        [        R                  R                  SSSSS	S
SSS5	      n[        U5      nUR                  S:X  d   e[        UR                  5       U5        [        S[        R                  //SS//S
S	///5      nUR                  S:X  d   e[        UR                  5       [        R
                  " S[        R                  //SS//S
S	///5      5        g )N   r   r   r   r      r   r   r   r   r   r"   r   r   r$   	   r   r      )r   r   r   r      )	r   r   r   r   r   r$   r   r   r   )r   r"   r   )
r   r   r   r   r   arrayrandomseedrandnnan)res1dres2darr4dres4darr9dres9dnan_3ds          r   test_dense_constructorr5      s   i E;;$"((9"56 y),-E;;&   "((Iy+A"BC HHAA'1a&1a&)9:AA'1a&1a&)9:AA'1a&1a&)9:< =E eE;;,&&&%( IINN2IIOOAa!Aa!A.EeE;;----%( !RVVAx1a&:;F<<9$$$!288q"&&k]aVH1vh,O#PQr   c            	         [        / SQSS9n U R                  S:X  d   e[        U R                  5       [        R
                  " / SQ5      5        [        / SQ/ SQ/SS9nUR                  S:X  d   e[        UR                  5       [        R
                  " / SQ/ SQ/5      5        [        S//S///SS9nUR                  S:X  d   e[        UR                  5       [        R
                  " S//S///5      5        [        R                  R                  S	5        [        R                  R                  S
SSSSSS
5      n[        USS9nUR                  S:X  d   e[        UR                  5       U5        g )Nr!   r   r   r#   r%   r   r   r   r"   r"   r(   r   r"   r   r$   )r   r   r"   r   r$   r   r   )	r   r   r   r   r   r)   r*   r+   r,   )r.   r/   res3darr7dres7ds        r   !test_dense_constructor_with_shaper<   =   s%   it,E;;$"((9"56y),F;E;;&   "((Iy+A"BCusenI6E;;)###"((aSEQC5>":;IINN2IIOOAa!Aa*Eu_5E;;/)))%(r   c                  :   [         R                  " [        SS9   [        / SQSS9  S S S 5        [         R                  " [        SS9   [        / SQSS9  S S S 5        [         R                  " [        SS9   [        / SQ/SS9  S S S 5        [         R                  " [        SS9   [        S//S	///S
S9  S S S 5        [         R                  " [        SS9   [        S/S/44SS9  S S S 5        [         R                  " [        SS9   [        SS/SS/SS/SS/44SS9  S S S 5        [         R                  " [        SS9   [        S/S/445        S S S 5        [         R                  " [        SS9   [        S/S/S/S/445        S S S 5        g ! , (       d  f       GNq= f! , (       d  f       GNU= f! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Ninconsistent shapesmatchr!   r   r7   r   r"   r   r   r   r"   r"   r"   z)axis 0 index 2 exceeds matrix dimension 2r"   r   )r   z)axis 1 index 3 exceeds matrix dimension 3r   )r   r   r   znegative axis 0 index: -1znegative axis 2 index: -1)pytestraises
ValueErrorr    r   r   .test_dense_constructor_with_inconsistent_shaperI   Q   s   	z)>	?)4( 
@ 
z)>	?)6* 
@ 
z)>	?9+T* 
@ 
z)>	?QC5A3%.	2 
@ 
zH
JA3!-t,
J 
zH
JAa5Aq6Aq6Aq6239E
J 
z)D	EA3".! 
F 
z)D	EA3!qcB4()* 
F	E/ 
@	? 
@	? 
@	? 
@	?
J 
J
J 
J 
F	E 
F	Es_   FF#6F5%GGG*G;3H
F #
F25
G
G
G'*
G8;
H	
Hc                      [        S5      n [        U 5      nUR                  S:X  d   e[        UR                  5       [        R
                  " S5      5        g )Nr   r   )r   ress     r   test_1d_sparse_constructorrL   m   s?    oG
G
C99/r   c                      [        SS/SS/445      n U R                  S:X  d   e[        U R                  5       [        R
                  " / SQ5      5        g )Nr&   r'   r"   r   r   )r   r&   r'   r   r   r   r   r   r)   rK   s    r   test_1d_tuple_constructorrP   t   sF    
aUaUH%
&C99 34r   c                      [        SS/SS/44SS9n U R                  S:X  d   e[        U R                  5       [        R
                  " / SQ5      5        g )Nr&   r'   r"   r   rA   r7   )r   r&   r'   r   rN   rO   s    r   $test_1d_tuple_constructor_with_shaperR   z   sH    
aUaUH%T
2C99 67r   c                     Su  p[         R                  " U S-
  /SS9[         R                  " US-
  /SS94n[        S/U4X4S9nUR                  X-  S45      nUR                  S   R
                  [         R
                  " S5      :X  d   eUR                  S   S   X-  S-
  :X  d   eUR                  X5      nUR                  S   R
                  [         R
                  " S5      :X  d   eUR                  S   S   US-
  :X  d   eg )	N)i i r"   int32)dtypegffffff
@r7   r   int64)r   r)   r   reshapecoordsrU   )MNrX   ABCs         r   test_reshape_overflowr^      s    DAhhAwg.!a%0PQFC5&/!0A 	
		15!*A88A; 111188A;q>aeq[((( 	
		!A88A; 111188A;q>QU"""r   c            	         [        / SQ5      n U R                  S:X  d   eU R                  S5      nUR                  S:X  d   e[        UR	                  5       [
        R                  " S/S/S//5      5        U R                  S5      nUR                  S:X  d   e[        UR	                  5       [
        R                  " / SQ/5      5        [        R                  " [        SS	9   U R                  S
5        S S S 5        [        R                  " [        SS	9   U R                  S5        S S S 5        [        / SQ/ SQ/5      nUR                  S:X  d   eUR                  S5      nUR                  S:X  d   e[        UR	                  5       [
        R                  " / SQ5      5        UR                  S5      nUR                  S:X  d   e[        UR	                  5       [
        R                  " S/S/S//S/S/S///5      5        [        R                  " [        SS	9   UR                  S5        S S S 5        g ! , (       d  f       GNK= f! , (       d  f       GN*= f! , (       d  f       g = f)Nr"   r   r   r   rB   r"   r   r   r"   r   zcannot reshape arrayr?   r   r   r   r   r"   r   r   r   r   r   r%   )r   )r"   r   r   r   r   r   )r   r   r"   r   )
r   r   rW   r   r   r   r)   rE   rF   rG   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshaperl      s   i E;;$mmF#G==F""""BHHqcA3_$=>mmF#G==F""""BHHi[$9: 
z)?	@e 
A 
z)?	@e 
A y),-E;;&   ==D::*<!=> i(I??i'''""$bhh!qcA31#sQC/Q&RS 
z)?	@e 
A	@) 
A	@ 
A	@  
A	@s$   $H:II:
I	
I
I,c                      [        / SQ5      n U R                  S:X  d   eU R                  S:X  d   e[        / SQ/ SQ/5      nUR                  S:X  d   eUR                  S:X  d   eg )Nr`   r   r   rd   re   r%   r   )r   r   nnzrf   ri   s     r   test_nnzrp      s_    i E;;$99>>y),-E;;&   99>>r   c                  $   [        / SQ5      R                  n U R                  S:X  d   e[        U R	                  5       [
        R                  " / SQ5      5        [        / SQ/ SQ/5      nUR                  R                  S:X  d   e[
        R                  " SS/SS/SS	//5      n[        UR                  R	                  5       U5        [        UR                  R	                  5       U5        [        [        U5      R	                  5       U5        g )
Nr`   r   rd   re   r   r"   r   r   r   )	r   Tr   r   r   r   r)   mTr	   )rf   ri   desireds      r   test_transposeru      s    i ""E;;$"((9"56y),-E77==F"""hhAAA/0G"G,!!#W-!%(002G<r   c                     [        / SQ5      R                  SS9n U R                  S:X  d   e[        U R	                  5       [
        R                  " / SQ5      5        [        / SQ/ SQ/5      R                  SS9nUR                  S:X  d   e[        UR	                  5       [
        R                  " / SQ/ SQ/5      5        [        R                  " [        S	S
9   [        / SQ5      R                  SS9  S S S 5        [        R                  " [        SS
9   [        / SQ/ SQ/5      R                  SS9  S S S 5        g ! , (       d  f       NO= f! , (       d  f       g = f)Nr`   r   axesr   rd   re   r   r"   r%   "axes don't match matrix dimensionsr?   repeated axis in transposer"   r"   )
r   	transposer   r   r   r   r)   rE   rF   rG   ro   s     r   test_transpose_with_axisr      s   i ***5E;;$"((9"56y),-77V7DE;;&   "((Iy+A"BC	z)M	N)&&F&3 
O 
z)E	F9i()333@ 
G	F 
O	N 
G	Fs   D>E>
E
Ec                      [        / SQ5      n [        U R                  [        R                  " / SQ5      5        [        U R
                  [        R                  " U R                  5      5        U R
                  R                  U R                  R                  :X  d   eU R
                  R                  R                  SL d   e/ SQU l        [        U R                  5      S:X  d   e[        U R                  [        R                  " / SQ5      5        U R
                  R                  U R                  R                  :X  d   e[        R                  " [        SS9   / SQU l        S S S 5        g ! , (       d  f       g = f)Nr"   r   r"   r   Fr!   r"   zcannot set row attributer?   )r   r   colr   r)   row
zeros_likerU   flags	writeablelenrX   rE   rF   rG   rO   s    r   test_1d_row_and_colr      s    
K
 C"((9-."--0177==CGGMM)))77==""e+++CGszz?a"((9-.77==CGGMM)))	z)C	D 
E	D	Ds   
E//
E=c                     [        / SQ5      n U R                  U R                  U R                  U R                  4 H,  n[
        R                  " [        SS9   U" 5         S S S 5        M.     U R                  U R                  U R                  4 H0  n[        U" 5       R                  5       U R                  5       5        M2     g ! , (       d  f       M  = f)Nr   zCannot convertr?   )r   tobsrtocsctodiatolilrE   rF   rG   tocootocsrtodokr   r   )rK   fs     r   test_1d_toformatsr      s    
K
 CiiCIIsyy9]]:-=>C ?> : iiCII.QS[[]CKKM2 / ?>s   C
C	arg)r"   r   r   r$   r'   c                     [         R                  " / SQ5      n[        U5      nUR                  U SS9  UR                  U 5        UR                  UR                  :X  d   e[        UR                  5       U5        g )Nr   Frefcheckr   r)   r   resizer   r   r   r   denrK   s      r   test_1d_resizer      sZ    
((;
C
C.CJJsUJ#JJsO99		!!!$r   r"   r   r   r   c                     [         R                  " / SQ5      n[        U5      nUR                  U SS9  UR                  U 5        UR                  UR                  :X  d   e[        UR                  5       U5        g )Nr`   Fr   r   r   s      r   test_1d_to_2d_resizer      sZ    
((9
C
C.CJJsUJ#JJsO99		!!!$r   )r"   r   r   r'   c                     [         R                  " / SQ/ SQ/5      n[        U5      nUR                  U SS9  UR                  U 5        UR                  UR                  :X  d   e[        UR                  5       U5        g )Nr`   r   r   r   Fr   r   r   s      r   test_2d_to_1d_resizer   	  s_    
((Iy)
*C
C.CJJsUJ#JJsO99		!!!$r   c            	         [        / SQ/ SQ445      n U R                  S:X  d   e[        U R                  5       [        R
                  " SS/5      5        U R                  5         U R                  S:X  d   e[        U R                  5       [        R
                  " SS/5      5        [        / SQ/ SQ/ SQ/ SQ/ SQ445      nUR                  S:X  d   e[        R
                  " S	S	/S	S	/S	S	//S	S	/S	S	/S	S	//S	S	/S	S	/SS	///S	S	/S	S
/S	S	//S	S	/S	S	/S	S	//S	S	/S	S	/S	S	////5      n[        UR                  5       U5        UR                  5         UR                  S:X  d   e[        UR                  5       U5        [        / SQ/ SQ445      nUR                  S:X  d   eUR                  5         UR                  S:X  d   eg )N)r   r   r   r"   r   r"   r   r   r   )r   r   r   )r   r   r   r"   r   r"   r   r&   r   r   r"   r   r   )r   rn   r   r   r   r)   sum_duplicates)rf   r0   expected
arr_nodupss       r   test_sum_duplicatesr     s   y9,/0E99>>"((Aq6"23	99>>"((Aq6"23 y9iI"NOPE99>>xxq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	Wq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	W	YH (+	99>>(+ L</:;J>>Q>>Qr   c                  T   [        / SQ/ SQ445      n U R                  S:X  d   eU R                  5       S:X  d   e[        U R	                  5       [
        R                  " SS/5      5        U R                  5         U R                  S:X  d   eU R                  5       S:X  d   e[        U R	                  5       [
        R                  " SS/5      5        [        U R                  [
        R                  " S/5      5        [        U R                  [
        R                  " S/5      5        g )N)r   r   r"   r   r   r"   r   )
r   rn   count_nonzeror   r   r   r)   eliminate_zerosr   r   )rf   s    r   test_eliminate_zerosr   /  s    y9,/0E99>> A%%%"((Aq6"23	99>> A%%%"((Aq6"23BHHaSM*BHHaSM*r   c                      [         R                  " / SQ5      n [         R                  " / SQ5      nX-   n[        U 5      U-   n[        U5      [        U5      L d   e[	        X25        g Nr   r   r   r   r   )r   r)   r   typer   den_aden_bexprK   s       r   test_1d_add_denser   <  sR    HH^$EHH\"E
-C
E
U
"C9S	!!!r   c                      [         R                  " / SQ5      n [         R                  " / SQ5      nX-   n[        U 5      [        U5      -   n[        X#R	                  5       5        g r   )r   r)   r   r   r   r   r   	dense_sum
sparse_sums       r   test_1d_add_sparser   E  sJ    HH^$EHH\"EI5!Ie$44J..01r   c                      [         R                  " / SQ5      n [         R                  " / SQ5      nX-  n[        U 5      U-  n[         R                  " U5      S:X  d   e[	        X25        g )Nr   r   r   )r   r)   r   ndimr   r   s       r   test_1d_matmul_vectorr   N  sR    HH^$EHH\"E
-C
E
U
"C773<1r   c                      [         R                  " / SQ5      n [         R                  " / SQ/ SQ/5      R                  nX-  n[        U 5      U-  n[	        U5      [	        U5      L d   e[        X25        g )Nr   r   r   r   r"   r   )r   r)   rr   r   r   r   )r   otherr   rK   s       r   test_1d_matmul_multivectorr   W  s\    
((>
"CHHlL1244E
+C
C.5
 C9S	!!!r   c                     [         R                  " / SQ/ SQ/5      n [        U 5      nX R                  -  nXR                  -  n[	        UR                  5       U5        [         R                  " / SQ/ SQ/5      n [        U 5      nX R                  -  nXR                  -  n[	        X25        [         R                  " / SQ/ SQ/5      n[         R                  " / SQ5      n[        U5      nXTR                  -  nXdR                  -  n[	        X25        [         R                  " / SQ5      n[         R                  " S/S/S	//5      nXE-  n[        U5      U-  n[	        X25        [        U5      [        U5      -  n[	        X25        g )
Nr   r   )r   r   r   r   r$   )r"   r   r   r   r   )r   r"   r   r   r   )r"   r   r   r   r   r   )r   r)   r   rr   r   r   list)r   ri   r   rK   r   r   rf   s          r   test_2d_matmul_multivectorr   `  s.   
((L,/
0CcNE
+C
''/C$ ((O_5
6CcNE
+C
%%-C HHo78EHH_%EeE
''/C
''/C HHYEHHqcA3_%E
-C
E
U
"C
E
T%[
(Cr   c                      [         R                  " / SQ5      n [        R                  " [        SS9   [        U 5      R                  5         S S S 5        g ! , (       d  f       g = f)Nr   z diagonal requires two dimensionsr?   )r   r)   rE   rF   rG   r   diagonal)r   s    r   test_1d_diagonalr     s<    
((>
"C	z)K	L#! 
M	L	Ls   A
A#r   )rw   r   )r   r   r   r   r   )r   r   r   r`   )r   r&   r   r   r   r$   c                     [         R                  R                  S5        [         R                  R                  SSU S9n[	        [        U5      R                  5       U5        g )Nr(   r   r$   )lowhighsize)r   r*   r+   randintr   r   todense)r   arrs     r   test_nd_todenser     sF     IINN2
))



6C3'')3/r   c                     [        U 5      n[        U5      nUR                  U :X  d   e[        UR                  5       [        R
                  " U 5      5        g Nr   )r   	empty_arrrK   s      r   test_nd_sparse_constructorr     sB     % I
I
C990r   c                     [         R                  R                  S5        [         R                  R                  " U 6 n[	        U5      nUR
                  U :X  d   e[        UR                  5       U5        g )Nr(   r   r*   r+   r,   r   r   r   r   r   r   rK   s      r   test_nd_tuple_constructorr     sQ     IINN2
))//5
!C
C.C99$r   c                     [         R                  R                  S5        [         R                  R                  " U 6 n[	        XS9nUR
                  U :X  d   e[        UR                  5       U5        g )Nr(   r7   r   r   s      r   $test_nd_tuple_constructor_with_shaper     sR     IINN2
))//5
!C
C
%C99$r   c                     [         R                  " [        SS9   [        SS/SS/SS/SS/44SS	9  S S S 5        [        / / / / / 44S
S	9n [	        U R                  5       [        R                  " S
5      5        g ! , (       d  f       NM= f)Nzexceeds matrix dimensionr?   r&   r'   r"   r   r   r   r   r   r7   )r   r   r   r   )rE   rF   rG   r   r   r   r   empty)r   s    r   (test_tuple_constructor_for_dim_size_zeror     s    	z)C	DAq6QFQFQF34GD 
E 2BB/0	BI""$bhhy&9:	 
E	Ds   A99
B)r   	new_shape))r   r&   r   r$   )r   r      r   )r   )$      )r   )i8  )r   )r   r   r   r   r   r$   r   c                 B   [         R                  R                  S5      n[        U SU[        S9nUR
                  U :X  d   eUR                  5       nUR                  U5      nUR                  U5      nUR
                  U:X  d   e[        UR                  5       U5        g N4e333333?densityrngrU   )	r   r*   default_rngr   intr   r   rW   r   )r   r   r   r0   den4dexp_arrres_arrs          r   test_nd_reshaper     s     ))


)CC@E;;%MMOEmmI&GmmI&G==I%%%"G,r   c                     [         R                  R                  S5      n[        U SU[        S9nUR
                  [         R                  " UR                  5       5      :X  d   eg r   )r   r*   r   r   r   rn   r   r   )r   r   r   s      r   test_nd_nnzr     sK     ))


)C
ucs#
>C77b&&s{{}5555r   c                 n   [         R                  R                  S5      n[        U SU[        S9nUR                  5       R                  nUR                  5       nUR                  U S S S2   :X  d   e[        UR                  5       U5        [        U 5      S:  a  UR                  5       R                  nUR                  nUR                  UR                  :X  d   e[        UR                  5       U5        [        U5      nUR                  UR                  :X  d   e[        UR                  5       U5        g [        R                  " [        SS9   UR                    S S S 5        [        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr   r   r   rD   r   z2-dimensionalr?   )r   r*   r   r   r   r   rr   r~   r   r   r   rs   r	   rE   rF   rG   )r   r   r   r   	trans_arrs        r   test_nd_transposer     s8    ))


)C
ucs#
>CkkmooGI??eDbDk)))""$g.
5zQ++-""FF	'--///Y&&('2$S)	'--///Y&&('2]]:_=FF >]]:_=S! >= >===s   F F&
F#&
F4)r   	axis_perm))r   rw   )r%   rz   ))r   r   r   r   r$   r   )r"   r   r   r$   r   r   c                     [         R                  R                  S5      n[        U SU[        S9nUR                  US9n[        UR                  5       [         R
                  " UR                  5       US95        g )Nr   r   r   rx   )r   r*   r   r   r   r~   r   r   )r   r   r   r   r   s        r   test_nd_transpose_with_axisr     s\     ))


)C
ucs#
>C9-I""$bll3;;=y&QRr   c                  @   [         R                  " [        SS9   [        / SQ5      R	                  SS9  S S S 5        [         R                  " [        SS9   [        / SQ/ SQ/5      R	                  S	S9  S S S 5        g ! , (       d  f       NO= f! , (       d  f       g = f)
Nr{   r?   r`   rz   rx   r|   rd   re   r}   )rE   rF   rG   r   r~   rH   r   r   %test_transpose_with_inconsistent_axisr     sv    	z)M	N)&&F&3 
O 
z)E	F9i()333@ 
G	F 
O	N 
G	Fs   A>B>
B
Bc            
         [        / SQ/ SQ/ SQ/ SQ445      n U R                  S:X  d   eU R                  5       S:X  d   e[        U R	                  5       [
        R                  " / SQ/ SQ// SQ/ SQ// SQ/ S	Q//5      5        U R                  5         U R                  S:X  d   eU R                  5       S:X  d   e[        U R	                  5       [
        R                  " / SQ/ SQ// SQ/ SQ// SQ/ S	Q//5      5        / SQ/ SQ/ SQ/ S
Q/ SQ4n[        / SQU45      nUR                  S:X  d   eUR                  5       S:X  d   eUR                  5         UR                  S:X  d   eUR                  5       S:X  d   e[        UR                  [
        R                  " / 5      5        [        UR                  [
        R                  " / 5      5        [        UR                  / / / / / 45        g )N)r"   r   r   r   )r   r"   r"   r   )r   r"   r   r"   )r"   r"   r   r   r   r   )r   r"   r   r   r   )r   r   r   r   )r"   r   r   r   )r   r   r   r   r   )r   rn   r   r   r   r   r)   r   r   r   rX   )arr3drX   arr5ds      r   test_nd_eliminate_zerosr    s   |lL,%OPQE99>> A%%%"((Y	,B%.	$:Y	<R,T #U V	99>> A%%%"((Y	,B%.	$:Y	<R,T #U V L,lSF|V,-E99>> A%%%	99>> A%%%BHHRL)BHHRL)BB34r   c                    [         R                  R                  S5      n[        U SU[        S9n[        U SU[        S9nUR                  5       UR                  5       pTXE-   nX%-   n[        U5      [        U5      L d   e[        Xv5        g r   r   r*   r   r   r   r   r   r   r   r   sp_xsp_yden_xden_yr   rK   s           r   test_nd_add_denser    w     ))


)Cs3?Ds3?D<<>4<<>5
-C
,C9S	!!!r   c                    [         R                  R                  S5      n[        U SU[        S9n[        U SU[        S9nUR                  5       UR                  5       pTXE-   nX#-   n[        XgR                  5       5        g r   r   r*   r   r   r   r   r   r   r   r  r  r	  r
  r   r   s           r   test_nd_add_sparser  %  sj     ))


)C#SAD#SAD<<>4<<>5IJ..01r   c                     [         R                  " S/[         R                  //S/S///5      n [         R                  " S/S//S/S///5      nX-   n[        U 5      [        U5      -   n[	        X#R                  5       5        g Nr   r   r"   r   r   )r   r)   infr   r   r   r   s       r   test_add_sparse_with_infr  2  x    HHsRVVHoqc{34EHHsQCjA3*-.EI5!Ie$44J..01r   )a_shapeb_shape))r   )r(   )r   r   )r   r$   )r$   r&   r   r   )r&   r$   r   r   c                     [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[
        R                  " [        SS9   X4-     S S S 5        g ! , (       d  f       g = fNr   r   r   r>   r?   r   r*   r   r   r   rE   rF   rG   r  r  r   arr_aarr_bs        r   +test_nd_add_sparse_with_inconsistent_shapesr   ;  Y     ))


)C'CSDE'CSDE	z)>	? 
@	?	?   A''
A5c                    [         R                  R                  S5      n[        U SU[        S9n[        U SU[        S9nUR                  5       UR                  5       pTXE-
  nX%-
  n[        U5      [        U5      L d   e[        Xv5        g r   r  r  s           r   test_nd_sub_denser$  G  r  r   c                    [         R                  R                  S5      n[        U SU[        S9n[        U SU[        S9nUR                  5       UR                  5       pTXE-
  nX#-
  n[        XgR                  5       5        g r   r  r  s           r   test_nd_sub_sparser&  T  sj     ))


)Cs3?Ds3?D<<>4<<>5IJ..01r   c                     [         R                  " S/[         R                  //S/S///5      n [         R                  " S/S//S/S///5      nX-
  n[        U 5      [        U5      -
  n[	        X#R                  5       5        g r  )r   r)   r-   r   r   r   r   s       r   test_nd_sub_sparse_with_nanr(  b  r  r   c                     [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[
        R                  " [        SS9   X4-
    S S S 5        g ! , (       d  f       g = fr  r  r  s        r   +test_nd_sub_sparse_with_inconsistent_shapesr*  k  r!  r"  )	)r   r   r   r$   r$   r   r   rw   ))r   r   r   r   r'   )r'   )r   r   r   r   rw   )r   r$   r   r   r   r   r"   )r   r$   r,  r2  )r$   r"   )r   rB   )rA   rA   )	mat_shape	vec_shapec                    [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9nUR                  5       UR                  5       peXV-  nX6-  n[        X5        U[        U5      -  n[        X5        g r   r   r*   r   r   r   r   r   r   )	r4  r5  r   r  r  r	  r
  r   rK   s	            r   test_nd_matmul_vectorr8    su    
))


)C	3CsCD	3CsCD<<>4<<>5
-C
,C
e
Cr   ))r+  )r   r   r$   r   r-  r/  )r   r'   r   r   )r9  rB   )r0  r   r   ))r"   r   r   r   )r   r$   r"   r   r   ))r   r"   r"   r   r   )r"   r   r   r   )rA   )r   r   r   )r   )r$   r   r   r   r   )rA   r:  r3  )
mat_shape1
mat_shape2c                 r   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9nUR                  5       UR                  5       peXV-  nX4-  n[        UR                  5       U5        X6-  n[        X5        U[        U5      -  n[        X5        XT-  n[        X5        g Nr   r   r   random_staterU   r7  )	r;  r<  r   r  r  r	  r
  r   rK   s	            r   test_nd_matmulrA    s    
))


)C
CcMD
CcMD<<>4<<>5
-C
+C$
,C
e
C ,Cr   c                     [         R                  R                  S5      n [        SSU [        S9n[        SSU [        S9n[
        R                  " [        SS9   X-    S S S 5        [
        R                  " [        SS9   XR                  5       -    S S S 5        [        SSU [        S9n[
        R                  " [        S	S9   X-    S S S 5        [
        R                  " [        S	S9   XR                  5       -    S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ne= f! , (       d  f       g = f)
Nr   )r   r$   r   r   r   r   r?  )r"   r$   r   r   r$   z)matmul: dimension mismatch with signaturer?   )r"   r$   r   r   z&Batch dimensions are not broadcastable)	r   r*   r   r   r   rE   rF   rG   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysrD    s    
))


)CSs#NDSs#ND	z)T	U 
V	z)T	U 
V 	3SLD	z)Q	R 
S	z)Q	R 
S	R 
V	U	U	U 
S	R	R	Rs0   D?DD')D8
D
D$'
D58
Ec                  *   [        / SQ5      n [        / SQ5      n[        R                  " U R                  5       UR                  5       5      nU R                  U5      n[	        X25        U R                  UR                  5       5      n[	        X25        g )Nr!   r#   )r   r   dotr   r   )abr   rK   s       r   test_dot_1d_1drI    sc    'A'A
&&aiik
*C
%%(C
%%		
Cr   c                      [        SS/SS/SS//5      n SnU R                  U5      n[        R                  " U R                  5       U5      n[	        UR                  5       U5        g )Nr"   r   r   r   r$   r   )r   rF  r   r   r   )rG  rH  rK   r   s       r   test_dot_sparse_scalarrK    sW    Aq6Aq6Aq6*+A	A
%%(C
&&a
 C$r   c                      [        SS//SS///5      n [        / SQ5      n[        R                  " [        SS9   U R	                  U5        S S S 5        g ! , (       d  f       g = f)Nr"   r   r   r   r#   znot aligned for n-D dotr?   )r   rE   rF   rG   rF  )r  r  s     r   !test_dot_with_inconsistent_shapesrM    sO    Ax1a&*+Ei E	z)B	C		% 
D	C	Cs   A
A#c                     [        SS/SS//5      n [        R                  " [        SS9   U R	                  S 5        S S S 5        [        R                  " [        SS9   U R                  S 5        S S S 5        [        R                  " [        SS9   U S -    S S S 5        [        R                  " [        SS9   S U -    S S S 5        g ! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       NX= f! , (       d  f       g = f)	Nr"   r   r   r   zargument not supported typer?   zarg not supported typezunsupported operand type)r   rE   rF   	TypeErrorrF  	tensordot)r  s    r   test_matmul_dot_not_implementedrQ    s    1v1v&'E	y(E	F		$ 
G	y(@	A 
B	y(B	C 
D	y(B	Cu 
D	C 
G	F	A	A	C	C	C	Cs/   CCC)8C:
C
C&)
C7:
D)
)rb   rb   )r   r   r   r   ))r"   r   r1  )r   r   r   r   r   )r,  r   r   r$   r   )rT  )r   r"   ))r"   r$   rU  )rR  r   r   r   r   )r   r'   r   )r   r$   r   r   r   )r   r$   r   r   rV  c                    [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[         R
                  " UR                  5       UR                  5       5      nUR                  UR                  5       5      n[        Xe5        UR                  [        UR                  5       5      5      n[        Xe5        UR                  U5      n[        UR                  5       U5        g r>  )	r   r*   r   r   r   rF  r   r   r   )r  r  r   r  r  r   rK   s          r   test_dot_ndrZ    s    
))


)C#CsKE#CsKE
&&%--/
2C
))EMMO
$C
))D)
*C
))E
C$r   rR  rS  r"   rT  r   r   r,  rU  rX  rV  rW  r   r$   r   r'   r   r   )r   r   r   ))r   r$   r   r   r   )r   r   r   r   r'   r   ))r   r$   r   )r   r   r   r"   )r   r   r   )r  r  ry   c                 *   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[         R
                  " UR                  5       UR                  5       US9nUR                  UR                  5       US9n[        Xv5        UR                  [        UR                  5       5      US9n[        Xv5        UR                  XRS9n[        U5      [        L a  [        UR                  5       U5        g [        Xv5        g )Nr   r   r?  rx   )r   r*   r   r   r   rP  r   r   r   r   r   )r  r  ry   r   r  r  r   rK   s           r   test_tensordotr]    s    
))


)C#CsKE#CsKE
,,u}}d
CC //%--//
5C
//$u}}/d/
;C //%/
+CCyIS[[]C(Sr   c                     [         R                  R                  S5      n [        SSU [        S9n[        SSU [        S9nS/S/4n[
        R                  " [        SS9   UR                  X#S	9  S S S 5        [        S
SU [        S9n[        SSU [        S9n/ SQSS/4n[
        R                  " [        SS9   UR                  X#S	9  S S S 5        g ! , (       d  f       Nh= f! , (       d  f       g = f)Nr   r   r   r$   r   r?  r   r   r   r   z*sizes of the corresponding axes must matchr?   rx   )r$   r   r   r   r   )r   r   r   r   )r   r   r"   r"   r   z,axes lists/tuples must be of the same length)	r   r*   r   r   r   rE   rF   rG   rP  )r   r  r  ry   s       r    test_tensordot_with_invalid_argsra  $  s    
))


)C#CsKE#CsKEC!:D	z)U	V) 
W c3OECcMEaUD	z *& 
')
' 
' 
W	V
' 
's   C8C"
C"
C0)actual_shapebroadcast_shape)	))r"   r   r$   r   )r   r   r$   r   ))r   r"   r$   r   )r   r   r   r$   r   ))r"   r"   r   r'   r&   )r   r$   r   r   r'   r&   )ra   )r   r$   r   ))r   r'   r"   )r   r'   r$   )rB   r   r   ))r"   r,  )rC   r#   ))r"   r   r"   r$   r   )r'   r   r   r&   r$   r   c                    [         R                  R                  S5      n[        U SU[        S9nUR                  U5      n[         R                  " UR                  5       U5      n[        UR                  5       U5        g r>  )	r   r*   r   r   r   _broadcast_tobroadcast_tor   r   )rb  rc  r   r   rK   r   s         r   test_broadcast_torh  7  s^     ))


)C
|Ss#
NC


O
,C
//#++-
9C$r   ))r   r$   r   r   r'   r  r  )r&   r$   r   r   r   c                    [         R                  R                  S5      n[        U SU[        S9nUR                  5       n[	        [         R                  " UR                  S S 5      5      nUR                  U4UR                  SS  -   5      n[        U5       Vs/ s H  oeUS S 2S S 24   PM     nn[        U6 n[        U5      n	[        U	R                  5       U5        g s  snf )Nr   r   r?  r   )r   r*   r   r   r   r   prodr   rW   ranger   r   r   )
r   r   r  r	  
num_slicesreshaped_arrayimatricesr   rK   s
             r   test_block_diagrp  E  s     ))


)CsCHDLLNE RWWU[["-./J]]J=5;;rs3C#CDN16z1BC1BAq!Qw'1BHC
h
C
d
C$ Ds   C c                     [         R                  R                  S5      n[        U SU[        S9n[        [        U5      U 5      n[        UR                  5       UR                  5       5        g r>  )	r   r*   r   r   r   r   r   r   r   )r   r   r  rK   s       r   test_extract_block_diagrr  X  sO     ))


)CsCHD
k$/
7C/r   ))rd  rd  )r`  r`  )r   r   r$   rs  c                 ^   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9nX4-   n[         R
                  " UR                  5       UR                  5       5      n[        UR                  5       U5        X4R                  5       -   n[        XV5        g r>  )r   r*   r   r   r   addr   r   r  r  r   rG  rH  rK   r   s          r   test_add_no_broadcastingrw  e  s~    
))


)CWc3GAWc3GA
%C
&&aiik
*C$
iik/Cr   c                 ^   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9nX4-
  n[         R
                  " UR                  5       UR                  5       5      n[        UR                  5       U5        X4R                  5       -
  n[        XV5        g r>  )r   r*   r   r   r   subtractr   r   rv  s          r   test_sub_no_broadcastingrz  r  s~    
))


)CWc3GAWc3GA
%C
++aiik199;
/C$
iik/Cr   )r   Nr   r   rR  r"   r   r   r   r   r$   NrW  r   rW  r   )r   r   r   ))r   r   r   r   r   rT  NrT  r"   rT  r   rT  r   )rT  r   r[  r   )r[  r   )r   axisc                 V   [         R                  R                  S5      n[        U SU[        S9nUR                  US9n[         R
                  " UR                  5       US9n[        XE5        UR                  US9n[         R                  " UR                  5       US9n[        XE5        g Nr   r   r?  r  )	r   r*   r   r   r   argmaxr   r   argmin)r   r  r   rG  rK   r   s         r   test_argmax_argminr    s    
))


)CUCcEA
(((
C
))AIIKd
+C
(((
C
))AIIKd
+Cr   )r{  r|  r}  r~  r  r  r  r  r  r  r  r  )r   r$   r'   r"   r   )rR  rw   )rR  rz   )r   r   r   r   )r  r   r   )rc   r   )r   r   r'   r$   rz   )r  r   r"   )r  r  )r  r   r   )r  rD   r   )r  r   )r  r   )r  r   c                    [         R                  R                  S5      n[        U SU[        S9nUR                  US9n[         R
                  " UR                  5       US9nUR                  US9n[         R                  " UR                  5       US9nUR                  US9n[         R                  " UR                  5       US9n	UR                  US9n
[         R                  " UR                  5       US9nXE4Xg4X4X44 H_  u  p[         R                  " [        U5      [         R                  5      (       a  [        X5        ME  [        UR                  5       U5        Ma     g r  )r   r*   r   r   r   minr   maxnanminnanmax
issubdtyper   numberr   )r   r  r   rG  res_minexp_minres_maxexp_max
res_nanmin
exp_nanmin
res_nanmax
exp_nanmaxrK   r   s                 r   test_min_maxr    s   
))


)CUCcEAeeeGffQYY[t,GeeeGffQYY[t,Gt$J199;T2Jt$J199;T2J''); -
/GI==cBII..",Ir   c                      [        / SQ//5      [        / SQ/5      4 H0  n U R                  5       S:X  d   eU * R                  5       S:X  a  M0   e   g )Nr   r"   rD   )r   r  r  )rG  s    r   test_min_max_fullr    sK    ,()9l^+DEuuw!||xxzR Fr   )r   NN)r   r   N)rR  r"   N)r  r   N)r  NN)rW  r   N)r'   r   )rT  NN)r   r   r   )rT  r   N)r[  r   N)r  r   N)rR  rw   N)rR  rz   N)r  r   N)r  r  N)rc   r   Nr  rz   )r'   r$   )r  r  N)r  r  Nr  )r   r   )r  r   N)r  r   N)r   r  outc                 .   [         R                  R                  S5      n[        U SU[        S9nUR                  XS9n[         R
                  " UR                  5       US9n[        XV5        Ub&  [        X&5        [        U5      [        U5      :X  d   eg g Nr   r   r?  )r  r  r  )	r   r*   r   r   r   sumr   r   idr   r  r  r   rG  rK   r   s          r   test_sumr    s|    
))


)CUCcEA
%%T%
#C
&&4
(C
S#w"S'!!! r   c                 .   [         R                  R                  S5      n[        U SU[        S9nUR                  XS9n[         R
                  " UR                  5       US9n[        XV5        Ub&  [        U5      [        U5      :X  d   e[        X&5        g g r  )	r   r*   r   r   r   meanr   r   r  r  s          r   	test_meanr    s|    
))


)CUCcEA
&&d&
$C
''!))+D
)CC
#w"S'!!!! r   c                  v   [         R                  R                  S5      n [        SSU [        S9n[        US-  R                  5       [         R                  " UR                  5       S5      5        [        US-  R                  5       [         R                  " UR                  5       S5      5        [        [        U5      R                  5       [         R                  " UR                  5       5      5        [        [        U5      R                  5       [         R                  " UR                  5       5      5        g )Nr   )r   r   r$   r   r   r   r?  r   r   )
r   r*   r   r   r   r   r   powerroundabsr   rG  s     r   test_pow_abs_roundr    s    
))


)C[#CsKAQTNN$bhhqyy{A&>?QTNN$bhhqyy{A&>?E!H$$&(=>CFNN$bffQYY[&9:r   c                 Z   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[
        R                  " 5          [
        R                  " S[        5        [        X4:H  R                  5       UR                  5       UR                  5       :H  5        [        X4:g  R                  5       UR                  5       UR                  5       :g  5        [        X4:  R                  5       UR                  5       UR                  5       :  5        [        X4:*  R                  5       UR                  5       UR                  5       :*  5        [        X4:  R                  5       UR                  5       UR                  5       :  5        [        X4:  R                  5       UR                  5       UR                  5       :  5        [        X4:H  R                  5       [         R                  " X4:g  R                  5       5      5        [        X4:  R                  5       [         R                  " X4:  R                  5       5      5        [        X4:*  R                  5       [         R                  " X4:  R                  5       5      5        S S S 5        g ! , (       d  f       g = fNr   r   r?  ignore)r   r*   r   r   r   warningscatch_warningssimplefilterr   r   r   bitwise_not)r  r  r   rG  rH  s        r   test_boolean_comparisonsr    s   
))


)CWc3GAWc3GA		 	 	"h(?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ac]]_aiik!))+&=>ac]]_aiik!))+&=>ad^^%r~~qtnn6F'GHad^^%r~~qsmmo'FGad^^%r~~qsmmo'FG 
#	"	"s   H>J
J*c                     [         R                  R                  S5      n [        SSU [        S9n[
        R                  " 5          [
        R                  " S[        5        [        US:H  R                  5       UR                  5       S:H  5        [        US:g  R                  5       UR                  5       S:g  5        [        US:  R                  5       UR                  5       S:  5        [        US:*  R                  5       UR                  5       S:*  5        [        US:  R                  5       UR                  5       S:  5        [        US:  R                  5       UR                  5       S:  5        S S S 5        g ! , (       d  f       g = f)Nr   )r$   r   r'   r   r   r?  r  r   r"   )r   r*   r   r   r   r  r  r  r   r   r   r  s     r   $test_boolean_comparisons_with_scalarr  
  s   
))


)CY#SIA		 	 	"h(?@ad^^%qyy{A~6ad^^%qyy{A~6ad^^%qyy{A~6ad^^%qyy{A~6ac]]_aiik!m4ac]]_aiik!m4 
#	"	"s   D0E>>
Fc                 $   [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9nX4-  n[         R
                  " UR                  5       UR                  5       5      n[        UR                  5       U5        g r>  r   r*   r   r   r   multiplyr   r   rv  s          r   test_multiplyr    si    
))


)CWc3GAWc3GA
%C
++aiik199;
/C$r   c                      [         R                  R                  S5      n [        SSU [        S9nUS-  n[         R
                  " UR                  5       S5      n[        UR                  5       U5        g Nr   )r   r$   r   r   r?  r   r  r   rG  rK   r   s       r   test_multiply_with_scalarr  !  sU    
))


)CWc3GA
a%C
++aiik1
%C$r   c                 z   [         R                  R                  S5      n[        U SU[        S9n[         R
                  " SS[        R                  " U5      -   5      R                  U5      nX4-  nUR                  5       U-  n[        UR                  5       U5        X4-  n[        UR                  5       U5        g )Nr   r   r?  r"   )r   r*   r   r   r   arangemathrj  rW   r   r   rv  s          r   test_divider  )  s    
))


)CWc3GA
		!Q7++,44W=A
%C
))+/CCKKM3'
%CCKKM3'r   c                      [         R                  R                  S5      n [        SSU [        S9nUS-  nUR                  5       S-  n[        UR                  5       U5        g r  )r   r*   r   r   r   r   r   r  s       r   test_divide_with_scalarr  6  sN    
))


)CWc3GA
a%C
))+/CCKKM3'r   c                    [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[
        R                  " 5          [
        R                  " S[        5        UR                  U5      n[         R                  " UR                  5       UR                  5       5      n[        UR                  5       U5        S S S 5        g ! , (       d  f       g = fr  )r   r*   r   r   r   r  r  r  r   maximumr   r   rv  s          r   test_maximumr  >      
))


)CWc3GAWc3GA		 	 	"h(?@iiljjaiik2S[[]C(	 
#	"	"   A:C
C&c                    [         R                  R                  S5      n[        U SU[        S9n[        USU[        S9n[
        R                  " 5          [
        R                  " S[        5        UR                  U5      n[         R                  " UR                  5       UR                  5       5      n[        UR                  5       U5        S S S 5        g ! , (       d  f       g = fr  )r   r*   r   r   r   r  r  r  r   minimumr   r   rv  s          r   test_minimumr  J  r  r  c                     [        / SQ5      n [        SS/SS/SS//5      n[        SS/SS	//S
S/SS///SS/SS//SS/SS////5      n[        R                  " 5          [        R                  " S[        5        [        U R                  S5      R                  5       [        R                  " U R                  5       S5      5        [        UR                  S5      R                  5       [        R                  " UR                  5       S5      5        [        UR                  S5      R                  5       [        R                  " UR                  5       S5      5        S S S 5        g ! , (       d  f       g = fN)r   r"   r   r   r      r$   ir   r   r   r'   r&   r   r(   r   ir  )	r   r  r  r  r   r   r  r   r   rG  rH  cs      r   test_maximum_with_scalarr  V  %   'AB7RGaX./AaUQqENaURG$45UQqENaUQrFO46 	7A		 	 	"h(?@QYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GH	 
#	"	"    D E))
E7c                     [        / SQ5      n [        SS/SS/SS//5      n[        SS/SS	//S
S/SS///SS/SS//SS/SS////5      n[        R                  " 5          [        R                  " S[        5        [        U R                  S5      R                  5       [        R                  " U R                  5       S5      5        [        UR                  S5      R                  5       [        R                  " UR                  5       S5      5        [        UR                  S5      R                  5       [        R                  " UR                  5       S5      5        S S S 5        g ! , (       d  f       g = fr  )	r   r  r  r  r   r   r  r   r   r  s      r   test_minimum_with_scalarr  b  r  r  c                     [        [        R                  " S5      5      n U S   S:X  d   eU S   S:X  d   e[        U SS R	                  5       U R	                  5       SS 5        [        U S S R	                  5       U R	                  5       S S 5        [        U SS  R	                  5       U R	                  5       SS  5        [        U SSS2   R	                  5       U R	                  5       SSS2   5        [        U / SQ   R	                  5       U R	                  5       / SQ   5        [        U / S	Q   R	                  5       U R	                  5       / S	Q   5        g )
Nr&   r   r   r"   r   r$   r   r"   r   r   r   r   r"   )r   r   r  r   r   r\   s    r   test_1d_coo_getr  n  s   "))A,AQ4199Q41991Q!199;q#342A!))+bq/212!))+ab/21Qq5!!#QYY[1Q%789%%'Y)?@9%%'Y)?@r   c                     [        [        R                  " S5      R                  S5      5      n U S   S:X  d   eU S   S:X  d   e[	        U SS2S4   R                  5       U R                  5       SS2S4   5        [	        U S	SS24   R                  5       U R                  5       S	SS24   5        [	        U S S	2SS
S24   R                  5       U R                  5       S S	2SS
S24   5        [	        U SS/S4   R                  5       U R                  5       SS/S4   5        [	        U S	S 2SS/4   R                  5       U R                  5       S	S 2SS/4   5        [	        U [        R                  " SS/5      S4   R                  5       U R                  5       SS/S4   5        [	        U S	S 2[        R                  " SS/5      4   R                  5       U R                  5       S	S 2SS/4   5        [	        U S S 2S4   R                  5       U R                  5       S S 2S4   5        [	        U SS S 24   R                  5       U R                  5       SS S 24   5        g )N   r   r$   r.  r   rd     r"   r   r   r$   )r   r   r  rW   r   r   r)   r  s    r   test_2d_coo_getr  }  s   "))E"**623AT7a<<T7b==1Q36""$aiik!A#q&&9:1ac6""$aiik!QqS&&9:2A2q1u9%%'RaR1QY)?@Aq619%%'aUAX)>?121v:&&(!))+ab1Q%i*@A288QF#Q&'//1199;!uax3HI12rxxA''(002AIIKQqE	4JK1a4"AIIK1$561a4"AIIK1$56r   c                     [        [        R                  " S5      R                  S5      5      n U S   S:X  d   eU S   S:X  d   e[	        U SSS2S4   R                  5       U R                  5       SSS2S4   5        [	        U SSS2S4   R                  5       U R                  5       SSS2S4   5        [	        U S S2SS	S
2S
S 24   R                  5       U R                  5       S S2SS	S
2S
S 24   5        [	        U SS/SS4   R                  5       U R                  5       SS/SS4   5        [	        U S S
2SS2SS/4   R                  5       U R                  5       S S
2SS2SS/4   5        [	        U SS S 2S4   R                  5       U R                  5       SS S 2S4   5        [	        U S S 2S S 2S4   R                  5       U R                  5       S S 2S S 2S4   5        g )Nx   r#   r   r   r_  w   r"   r   r$   r   )r   r   r  rW   r   r   )r[   s    r   test_3d_coo_getr    s   "))I&..y9:AW:??W:1ac19%%'Q!QY)?@1ac19%%'Q!QY)?@2A2q1uab=!))+QYY[!QqUAB-GHAq61a<((*AIIKA1,EF2A2qsQF?#++-qyy{2A2qsQF?/KL1a7##%qyy{1a7';<1a7##%qyy{1a7';<r   c            	         [        [        R                  " S5      R                  S5      5      n U R	                  5       n[        U S S2SS 2S4   R	                  5       US S2SS 2S4   5        [        U S S S2SS2S S4   R	                  5       US S S2SS2S S4   5        [        U S S S2SS 2SS 4   R	                  5       US S S2SS 2SS 4   5        [        U S S S2SS 4   R	                  5       US S S2SS 4   5        g )Nr  r#   r$   r   r"   .)r   r   r  rW   r   r   )r[   Ds     r   test_newaxis_getr    s   "))I&..y9:A			A2A2qr19%%'2A2qr1964!QqS$)*224abqb!A#tQ8N6OP4!QRD()113QtRaRQ7L5MN4!S$&'//11T2A2sD5H3IJr   c                  x   [         R                  " S5      R                  S5      n [        U 5      nS=US SS 2S4'   U S SS 2S4'   [	        UR                  5       U 5        S=USS 2SS 4'   U SS 2SS 4'   [	        UR                  5       U 5        S=USS 2S S4'   U SS 2S S4'   [	        UR                  5       U 5        g )Nr  r#   r$   r   r"   r   )r   r  rW   r   r   r   r  r[   s     r   test_newaxis_setr    s    
		)$$Y/A!A&''AdABkNQtQR{^a &''Aab!TkNQqr1d{^a &''Aab$kNQqr4{^a r   c                     [         R                  " S5      n [        U 5      nS=US'   U S'   [        UR	                  5       U 5        S=US'   U S'   [        UR	                  5       U 5        SS/=USS& U SS& [        UR	                  5       U 5        / S	Q=US S& U S S& [        UR	                  5       U 5        U SS  * =USS & U SS & [        UR	                  5       U 5        U SS
S2   * =USS
S2'   U SS
S2'   [        UR	                  5       U 5        U / SQ   * =U/ SQ'   U / SQ'   [        UR	                  5       U 5        U / SQ   * =U/ SQ'   U / SQ'   [        UR	                  5       U 5        g )Nr&   rD   r   r   r   r   r"   r   )iiir$   r   r  r!   r  )r   r  r   r   r   r  s     r   test_1d_coo_setr    sd   
		!A!AAaD1Q4a AaD1Q4a 2hAaFQqVa   AbqEAbqEa qrUFAabEAabEa QqU8)#Aa!eHq1Qxa #$Y<-/AiL1Y<a #$Y<-/AiL1Y<a r   r  r  ra   )rD   r   r$   rD   r!   r[   r  idxc                 N    X   * =X'   X'   [        U R                  5       U5        g r   r   r   r  s      r   test_2d_coo_setr    s&     vgAFQVa r   r  r#   r   )r   r$   r   c                 H    S=X'   X'   [        U R                  5       U5        g )Nr  r  s      r   test_3d_coo_setr    s"     AFQVa r   scalar_containerc                 D    [        [        R                  " U //5      5      $ r   )r
   r   r)   xs    r   <lambda>r    s    yA3%)r   c                     U $ r   rH   r  s    r   r  r    s    qr   )sparsedensescalar)idszfails in parallel)reasonc                 x    U " S5      [         S'   S[        S'   [        [         R                  5       [        5        g )Nr  r   )r[   r  r   r   )r  s    r   test_3d_coo_singletonr  
  s+     $C(AiLAiLa r     r   r   r   r   r   )zall-intsr   )zellipsis-first).r   )zellipsis-last)r"   .)zellipsis-middle)r"   .r   z
split-intszcontiguous-ints-lastzcontiguous-ints-firstzempty-slicezsplit-2d-arrays-and-intsr8   )r   r"   r   )r   r"   r   r   zcontiguous-2d-arrays-and-intszsplit-1d-arrays-and-intsz,split-ints-broadcast-arrays-slice-step-not-1zcontiguous-broadcast-arrayszcontiguous-arrays-firstz!split-arrays-some-first-some-lastz$duplicate-array-entries-split-arrays)r   r   r   z3duplicate-array-entries-contiguous-broadcast-arraysr[   r  ixmsgc                 N    S=X'   X'   [        U R                  5       USU S3S9  g )Nr  z

Test of: 
)err_msgr  r  s       r   test_5d_coo_setr  G  s-     AEAEa;se2)>?r   c                  f   [         R                  " S5      R                  S5      n [        U 5      n[	        XS:     R                  5       X S:     5        [	        XS:     R                  5       X S:     5        [	        XS:     R                  5       X S:     5        [	        XS:     R                  5       X S:     5        [	        XS:     R                  5       X S:     5        [	        XS:     R                  5       X S:     5        US S 2SSSS4   S:  nUSS S 2SSS4   S:  nU[        SS	S 5      S
/[        S SS5      U4nUR                  5       [        SS	S
5      S
/[        SSS5      UR                  5       4nX   n[	        X   R                  5       U5        [	        X   R                  5       U5        [        SS	S 5      X3[        S SS5      S
/4n[        SS	S 5      UR                  5       UR                  5       [        S SS5      S
/4nX   n[	        X   R                  5       U5        g )Nr  r    i  rD   r   2   r   r   r"   )r   r  rW   r   r   r   slice)r  r[   bi0bi1r  idxnpresults          r   test_bool_getr!  N  s    
		#$,,_=A!As7##%qSz2t8$$&d(4r6""$aBi0s7##%qSz2t8$$&d(4r6""$aBi0
Aq!QM
R
C
Aq!QM
R
CaD!A3dAq(93
?C[[]E!QNQCq!QOEXF!6*!!#V,AtcdAq(9A3
?C1as{{}eD!Q>ORSQTUEXF!6*r   c                  R   [         R                  " S5      R                  S5      n [        U 5      nUR	                  5       U R	                  5       p2S=X3S:  '   X"S:  '   [        UR                  5       U5        UR	                  5       U R	                  5       p2S=X3S:  '   X"S:  '   [        UR                  5       U5        UR	                  5       U R	                  5       p2US S 2SSSS4   S:  nU[        SS	S 5      S
/[        S SS5      U4nUR                  5       [        SS	S
5      S
/[        SSS5      UR                  5       4nS=X6'   X%'   [        UR                  5       U5        UR	                  5       U R	                  5       p2S=X6'   X&'   [        UR                  5       U5        g )Nr  r  ir  ir   r  r   r   r"   ii)r   r  rW   r   copyr   r   r  )D_origA_origr[   r  bool0r  r  s          r   test_bool_setr'  i  se   YY()11/BFvF;;=&++-q!!A#gJs7a ;;=&++-q!!A#gJs7a ;;=&++-qaAq!mr!E%1d#aS%a*;U
CC]]_eAq!nqc5Aq>5==?SEAHqva ;;=&++-qAHqxa r   )r  r  numpyr   numpy.testingr   r   rE   scipy.linalgr   scipy.sparser   r   r   r	   scipy.sparse._csrr
   _coor   r   r   r5   r<   rI   rL   rP   rR   r^   rl   rp   ru   r   r   r   markparametrizer   r   r   ziptupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r$  r&  r(  r*  mat_vec_shapesr8  mat_mat_shapesrA  rD  rI  rK  rM  rQ  
dot_shapesrZ  tensordot_shapes_and_axesr]  ra  rh  rp  rr  add_sub_shapesrw  rz  argmax_argmin_shapes_axisr  max_min_shapes_axisr  r  r   sum_mean_paramsr  r  r  bitwise_op_and_compare_shapesr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r  r[   r  Ellipsisr)   keysthread_unsafer  r  r  r  r!  r'  )r  r  r  s   000r   <module>r>     s      7  #  ( 3<R@)(+8058
# "J
=A  3 0% % 1% S|%D EF%eCHo % G% -%c % .%8
+2B"  #; <0<0  #; <1<1  #; <%<%  #; <%<%; / 2Q R-	R-  #; <6<6  #; <"<"2 / 2S TSTSA54  #; <<  #; <2<22 / 2K LL  #; <<  #; <	2<	22 / 2K LL
 3^D
 E
 5~F G* "%	
 /<% =%$ EQC!:sQCj!	9sQCj!	QFQF+,kIy12!g	9-.	  79RS T,*& <MN
%N
% ' %> ?%?%" ' %> ?0?0 /@	 A	 /@
 A
  *,EF
 G

  *,?@- A-*  &(;!RXXe_5iBHHW,=>0-/C.0@rxx')A	6288E?CY$@  1?C	" D	" 1?C	" D	";!  /1NOH PH"
5 /1NO% P%% /1NO	( P	(( /1NO) P) /1NO) P)	I	IA7&= K	!!0 IIeV$aL 
1aaD
1aaA'
4rAdKVQKAKXXq!fuQ~&
1Xrxx	"#XXq!frxxA'(#( *D,IDSaC[D,IJ!  K!
 IIi  +aL aQ
1d^Qa!
1XuQ1~uQ~.
4rE$Kq!Q8AaXXq!fuQ~q)XXq!fuQ~s+XXq!fuQ~rxxA'78!Q"((Aq6*+XXq!frxxA'+XXq!frxxA'!-%* *D,IDSaC[D,IJ!  K!
 )288[A%  
 "56! 7! II ((9aL  $E$4(!QdD$0GKLeAtT2E$d4KQPQSTUVq!Qat(<eD$PT>UVWU1a&dD$(?AqIJ	tQ		95	97M	tT4	 !	% %	tQ		95	97M	
E$d#	%  	tQ	y)U4t5LaP 4	
E!QNA	{aS1#sO< #	tQ	uQ1~q9+aS1#O 
sQC!oq%1a.%a:NO )
eAq!neD!T&:AaS1#O ,	tQ		95	97M	tT4	 !	% ;	q!QA	{aS1#sO<Q+Z 0RV2WRVwsAq"?RV2WX@  Y@
+6!K -J> -JH 3Xs   0n8
-n=
9o