
    doi                        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  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 \RB                  RE                  S/ SQ5      S\#4S j5       r$\RB                  RE                  S\%" / SQ/ SQ5      5      S\&\#\#4   4S j5       r'\RB                  RE                  S/ SQ5      S\#4S j5       r(S r)S r*S r+S  r,S! r-S" r.S# r/S$ r0\RB                  RE                  S%/ S&Q5      S' 5       r1\RB                  RE                  S%/ S&Q5      S( 5       r2\RB                  RE                  S%/ S&Q5      S) 5       r3\RB                  RE                  S%/ S&Q5      S* 5       r4S+ r5\RB                  RE                  S,/ S-Q5      S. 5       r6\RB                  RE                  S%/ S&Q5      S/ 5       r7\RB                  RE                  S%/ S&Q5      S0 5       r8\RB                  RE                  S1/ S2Q5      S3 5       r9S4 r:S5 r;\RB                  RE                  S%/ S&Q5      S6 5       r<\RB                  RE                  S%/ S&Q5      S7 5       r=S8 r>\RB                  RE                  S9/ S:Q5      S; 5       r?\RB                  RE                  S%/ S&Q5      S< 5       r@\RB                  RE                  S%/ S&Q5      S= 5       rAS> rB\RB                  RE                  S9/ S:Q5      S? 5       rC/ S@QrD\RB                  RE                  SA\D5      SB 5       rE/ SCQrF\RB                  RE                  SD\F5      SE 5       rGSF rHSG rISH rJSI rKSJ rL/ SKQrM\RB                  RE                  S9\M5      SL 5       rNSMSNSO/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/rO\RB                  RE                  S^\O5      S_ 5       rPS` rQ\RB                  RE                  Sa/ SbQ5      Sc 5       rR\RB                  RE                  S%/ SdQ5      Se 5       rS\RB                  RE                  S%/ SdQ5      Sf 5       rT/ SgQrU\RB                  RE                  S9\U5      Sh 5       rV\RB                  RE                  S9\U5      Si 5       rW/ SjQrX\RB                  RE                  Sk\X5      Sl 5       rY/ SmQrZ\RB                  RE                  Sk\Z5      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^\RB                  RE                  S\^5      S 5       r_\RB                  RE                  S\^5      S 5       r`S ra/ SgQrb\RB                  RE                  S9\b5      S 5       rcS rd\RB                  RE                  S9\b5      S 5       reS rf\RB                  RE                  S9\b5      S 5       rgS rh\RB                  RE                  S9\b5      S 5       ri\RB                  RE                  S9\b5      S 5       rjS rkS rlS rmS rnS roS rpS rqS rr\R                  " S5      R                  S5      ru\" \u5      rvSS\w" SOSRS5      S 4S\w" SOSRS5      4\w" SOSRS5      \w" SOSSR5      4\w" SSS5      S4SO\w" S5      4\x4SOSR/S 4SSOS/4\R                  " SOSR/5      \w" SOS5      4\w" S5      \R                  " / SQ5      4\R                  " SOSR/5      \R                  " S S/5      4/rz\RB                  RE                  / SQ\z V s/ s H  n \v\uU 4PM
     sn 5      \RB                  R                  S 5       5       r|\R                  " S5      R                  S5      ru\" \u5      rvSSS \w" SOSR5      S 4\w" SRS5      SR\w" S5      4\w" S5      \w" SOSS5      \w" SOS5      4\w" SSS5      \w" S5      \w" SOSS5      4\xSSOS/\w" SR5      4\R                  " SOSR/5      \w" SOS5      S 4\R                  " SOSR/5      \w" SOS5      S /4\R                  " SOSR/5      \w" 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/rz\RB                  RE                  / SQ\z V s/ s H  n \v\uU 4PM
     sn 5      \RB                  R                  S 5       5       r}\RB                  RE                  SS \R                  S // SQS9\RB                  R                  SS9S 5       5       r~\R                  " S5      R                  S5      ru\" \u5      rvSSSSS\w" SSS5      SSO\w" SSS5      SO44S\w" SSS5      \w" SSS5      SSOSO44SSSOSO\w" SSS5      \w" SSS5      44S\w" SSS5      \w" SSS5      SSOSO44S\w" SSS5      / SQ/ SQ// SQ/ SQ/\w" SSS5      S 44S\w" SSS5      / SQ/ SQ// SQ/ SQ/SO\w" SSS5      44S\w" SSS5      / SQ/ SQ\w" SSS5      SO44SS \w" SOSS5      SO/ SQ/S/SO/S //44S\w" SSRS5      \w" SOSS5      SO/ SQ/S/SO/S //44S/ SQ/S/SO/S //S \w" SOSS5      \w" SSRS5      44S/ SQ/\w" SOSS5      \w" SSRS5      S S/SO/S //44S\w" SSS5      / SQ/ SQ// SQ/ SQ/\w" SSS5      SO44S\w" SOSS5      S SO/ SQ/S/SO/SO//44/rz\RB                  RE                  / SQ\z VVs/ s H
  u  p\v\uX!4PM     snn5      \RB                  R                  S 5       5       rS 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)	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/land-ocr/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_constructorr4      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   r6   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_shaperH   O   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_constructorrK   k   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(   rJ   s    r   test_1d_tuple_constructorrO   r   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
   r@   r6   )r   r%   r&   r   rM   rN   s    r   $test_1d_tuple_constructor_with_shaperQ   x   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
@r6   r   int64)r   r(   r   reshapecoordsrT   )MNrW   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   rA   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   rV   r   r   r   r(   rD   rE   rF   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshaperk      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
   rc   rd   r$   r   )r   r   nnzre   rh   s     r   test_nnzro      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      R                  nUR                  S:X  d   e[        UR	                  5       [
        R                  " SS/SS/SS	//5      5        g )
Nr_   r   rc   rd   r   r!   r   r
   r   )r   Tr   r   r   r   r(   rn   s     r   test_transposerr      s    i ""E;;$"((9"56y),-//E;;&   "((QFQFQF+C"DEr   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   rc   rd   r   r!   r$   "axes don't match matrix dimensionsr>   repeated axis in transposer!   r!   )
r   	transposer   r   r   r   r(   rD   rE   rF   rn   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_likerT   flags	writeablelenrW   rD   rE   rF   rN   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tolilrD   rE   rF   tocootocsrtodokr   r   )rJ   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   denrJ   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   rm   r   r   r   r(   sum_duplicates)re   r/   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   rm   count_nonzeror   r   r   r(   eliminate_zerosr   r   )re   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exprJ   s       r   test_1d_add_denser   7  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   @  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   I  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(   rq   r   r   r   )r   otherr   rJ   s       r   test_1d_matmul_multivectorr   R  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   rq   r   r   list)r   rh   r   rJ   r   r   re   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(   rD   rE   rF   r   diagonal)r   s    r   test_1d_diagonalr   |  s<    
((>
"C	z)K	L#! 
M	L	Ls   A
A#r   )rt   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_arrrJ   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   rJ   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'   r6   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   r6   )r   r   r
   r   )rD   rE   rF   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rngrT   )	r   r)   default_rngr   intr   r   rV   r   )r   r   r   r/   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   rm   r   r   )r   r   r   s      r   test_nd_nnzr     sK     ))


)C
ucs#
>C77b&&s{{}5555r   c                    [         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[        X4R                  5       5        g )Nr   r   r   rC   )
r   r)   r   r   r   r   rq   r{   r   r   )r   r   r   r   	trans_arrs        r   test_nd_transposer     sm     ))


)C
ucs#
>CkkmooGI??eDbDk)))++-.r   )r   	axis_perm))r   rt   )r$   rw   ))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   ru   )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)
Nrx   r>   r_   rw   ru   ry   rc   rd   rz   )rD   rE   rF   r   r{   rG   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   rm   r   r   r   r   r(   r   r   r   rW   )arr3drW   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   rJ   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    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   rD   rE   rF   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!  3  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#  @  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%  N  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'  W  r  r  )	)r
   r   r   r#   r#   r   r   rt   ))r
   r   r   r   r&   )r&   )r   r   r
   r   rt   )r   r#   r   r
   r   r   r!   )r
   r#   r)  r/  )r#   r!   )r   rA   )r@   r@   )	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   )	r1  r2  r   r  r  r  r  r   rJ   s	            r   test_nd_matmul_vectorr5  n  su    
))


)C	3CsCD	3CsCD<<>4<<>5
-C
,C
e
Cr   ))r(  )r
   r   r#   r   r*  r,  )r   r&   r   r   )r6  rA   )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@   r7  r0  )
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_staterT   r4  )	r8  r9  r   r  r  r  r  r   rJ   s	            r   test_nd_matmulr>    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   rD   rE   rF   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysrA    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   rJ   s       r   test_dot_1d_1drF    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   rC  r   r   r   )rD  rE  rJ   r   s       r   test_dot_sparse_scalarrH    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   rD   rE   rF   rC  )r  r  s     r   !test_dot_with_inconsistent_shapesrJ    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   rD   rE   	TypeErrorrC  	tensordot)r  s    r   test_matmul_dot_not_implementedrN    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)
)ra   ra   )r   r   r   r   ))r!   r   r.  )r   r
   r   r   r   )r)  r   r   r#   r
   )rQ  )r   r!   ))r!   r#   rR  )rO  r   r
   r   r   )r
   r&   r   )r   r#   r   r   r
   )r   r#   r   r   rS  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   rC  r   r   r   )r  r  r   r  r  r   rJ   s          r   test_dot_ndrW    s    
))


)C#CsKE#CsKE
&&%--/
2C
))EMMO
$C
))D)
*C
))E
C$r   rO  rP  r!   rQ  r   r   r)  rR  rU  rS  rT  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  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       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<  ru   )r   r)   r   r   r   rM  r   r   r   r   r   )r  r  rv   r   r  r  r   rJ   s           r   test_tensordotrZ    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>   ru   )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   rD   rE   rF   rM  )r   r  r  rv   s       r    test_tensordot_with_invalid_argsr^    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%   )r`   )r   r#   r   ))r   r&   r!   )r   r&   r#   )rA   r   r   ))r!   r)  )rB   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   )r_  r`  r   r   rJ   r   s         r   test_broadcast_tore  #  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   rV   ranger   r   r   )
r   r   r  r  
num_slicesreshaped_arrayimatricesr   rJ   s
             r   test_block_diagrm  1  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  rJ   s       r   test_extract_block_diagro  D  sO     ))


)CsCHD
k$/
7C/r   ))ra  ra  )r]  r]  )r   r   r#   rp  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   rD  rE  rJ   r   s          r   test_add_no_broadcastingrt  Q  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   rs  s          r   test_sub_no_broadcastingrw  ^  s~    
))


)CWc3GAWc3GA
%C
++aiik199;
/C$
iik/Cr   )r   Nr   r   rO  r!   r   r   r   r   r#   NrT  r
   rT  r   )r
   r   r   ))r   r   r   r
   r   rQ  NrQ  r!   rQ  r   rQ  r
   )rQ  r   rX  r   )rX  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   rD  rJ   r   s         r   test_argmax_argminr  v  s    
))


)CUCcEA
(((
C
))AIIKd
+C
(((
C
))AIIKd
+Cr   )rx  ry  rz  r{  r}  r  r  r  r  r  r  r  )r   r#   r&   r!   r   )rO  rt   )rO  rw   )r   r   r
   r
   )r  r   r
   )rb   r   )r   r   r&   r#   rw   )r  r
   r!   )r  r  )r  r   r   )r  rC   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   rD  res_minexp_minres_maxexp_max
res_nanmin
exp_nanmin
res_nanmax
exp_nanmaxrJ   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!   rC   )r   r  r  )rD  s    r   test_min_max_fullr    sK    ,()9l^+DEuuw!||xxzR Fr   )r   NN)r   r   N)rO  r!   N)r|  r   N)r~  NN)rT  r
   N)r&   r   )rQ  NN)r   r   r   )rQ  r   N)rX  r   N)r  r   N)rO  rt   N)rO  rw   N)r  r
   N)r  r  N)rb   r   Nr  rw   )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   rD  rJ   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   rD  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   rD  rE  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   rs  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   rD  rJ   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mathrg  rV   r   r   rs  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  "  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   rs  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   rs  s          r   test_minimumr  6  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   rD  rE  cs      r   test_maximum_with_scalarr  B  %   '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  N  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  Z  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   ra     r!   r   r
   r#   )r   r   r  rV   r   r   r(   r  s    r   test_2d_coo_getr  i  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  rV   r   r   )rZ   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  rV   r   r   )rZ   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  rV   r   r   r   r  rZ   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%   rC   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  r`   )rC   r   r#   rC   r    rZ   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   rG   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   )rZ   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-intsr7   )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rZ   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  3  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  rC   r   2   r
   r   r!   )r   r  rV   r   r   r   slice)r  rZ   bi0bi1r  idxnpresults          r   test_bool_getr  :  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  rV   r   copyr   r   r  )D_origA_origrZ   r  bool0r  r  s          r   test_bool_setr$  U  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   rD   scipy.linalgr   scipy.sparser   r   r   scipy.sparse._csrr	   _coor   r   r   r4   r;   rH   rK   rO   rQ   r]   rk   ro   rr   r|   r   r   markparametrizer   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_shapesr5  mat_mat_shapesr>  rA  rF  rH  rJ  rN  
dot_shapesrW  tensordot_shapes_and_axesrZ  r^  re  rm  ro  add_sub_shapesrt  rw  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  rV   r  rZ   r  Ellipsisr(   keysthread_unsafer  r  r  r  r  r$  )r  r  r  s   000r   <module>r;     s      7  # I I ' 3<R@)(+8058
# "JFA  3 0% % 1% L, ?@%eCHo % A% -%c % .%8
+2B"  #; <0<0  #; <1<1  #; <%<%  #; <%<%; / 2Q R-	R-  #; <6<6  #; </</ / 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   (n0
%n5
1n: