
    bi                     x   d dl Z d dlZd dlZd dlmZmZ d dlZd dlm	Z	 d dl
mZmZmZ d dlmZ ddlmZmZ d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ejB                  jE                  dg d      de#fd       Z$ejB                  jE                  d e%g dg d            de&e#e#f   fd       Z'ejB                  jE                  dg d      de#fd       Z(d Z)d Z*d Z+d  Z,d! Z-d" Z.d# Z/d$ Z0ejB                  jE                  d%g d&      d'        Z1ejB                  jE                  d%g d&      d(        Z2ejB                  jE                  d%g d&      d)        Z3ejB                  jE                  d%g d&      d*        Z4d+ Z5ejB                  jE                  d,g d-      d.        Z6ejB                  jE                  d%g d&      d/        Z7ejB                  jE                  d%g d&      d0        Z8ejB                  jE                  d1g d2      d3        Z9d4 Z:d5 Z;ejB                  jE                  d%g d&      d6        Z<ejB                  jE                  d%g d&      d7        Z=d8 Z>ejB                  jE                  d9g d:      d;        Z?ejB                  jE                  d%g d&      d<        Z@ejB                  jE                  d%g d&      d=        ZAd> ZBejB                  jE                  d9g d:      d?        ZCg d@ZDejB                  jE                  dAeD      dB        ZEg dCZFejB                  jE                  dDeF      dE        ZGdF ZHdG ZIdH ZJdI ZKdJ ZLg dKZMejB                  jE                  d9eM      dL        ZNdMdNdOgd gffdPdQdRgd gffdSdTd gdgffdUdVd dRgdRdgffdWdXg dYg dZffd[d\d]d]g dYg dYffgZOejB                  jE                  d^eO      d_        ZPd` ZQejB                  jE                  dag db      dc        ZRejB                  jE                  d%g dd      de        ZSejB                  jE                  d%g dd      df        ZTg dgZUejB                  jE                  d9eU      dh        ZVejB                  jE                  d9eU      di        ZWg djZXejB                  jE                  dkeX      dl        ZYg dmZZejB                  jE                  dkeZ      dn        Z[do Z\dpdqdrdsdtdudWd  ej                  dv      fdwdPdO ej                  dx      fdydzd{d|d}d~dddd ej                  d      fdddd ej                  d      fdddY ej                  dS      fdgZ^ejB                  jE                  de^      d        Z_ejB                  jE                  de^      d        Z`d Zag dgZbejB                  jE                  d9eb      d        Zcd ZdejB                  jE                  d9eb      d        Zed ZfejB                  jE                  d9eb      d        Zgd ZhejB                  jE                  d9eb      d        ZiejB                  jE                  d9eb      d        Zjd Zkd Zld Zmd Znd Zod Zpd Zqd Zr ej                  d      j                  d      Zu eeu      Zvdd ewdOdRd      d fd ewdOdRd      f ewdOdRd       ewdOddR      f ewddd      dfdO ewd      fexfdOdRgd fddOdgf ej                  dOdRg       ewdOd      f ewd       ej                  g d      f ej                  dOdRg       ej                  d dg      fgZzejB                  jE                  g dezD  cg c]  } eveu| f	 c}       ejB                  j                  d               Z| ej                  d      j                  d      Zu eeu      Zvddd  ewdOdR      d f ewdRd      dR ewd      f ewd       ewdOdd       ewdOd      f ewddd       ewd       ewdOdd      fexddOdg ewdR      f ej                  dOdRg       ewdOd      d f ej                  dOdRg       ewdOd      d gf ej                  dOdRg       ewdOd       ej                  ddg      fd ej                  dOdRg       ej                  ddg      f ej                  dOdRg       ej                  ddg      dOf ej                  dOdRg       ej                  ddg      dgfgZzejB                  jE                  g dezD  cg c]  } eveu| f	 c}       ejB                  j                  d               Z}ejB                  jE                  dd ej                  d gg d      ejB                  j                  d      d               Z~ ej                  d      j                  d      Zu eeu      Zvddddd ewddd      ddO ewddd      dOffd ewddd       ewddd      ddOdOffdddOdO ewddd       ewddd      ffd ewddd       ewddd      ddOdOffd ewddd      g dg dgg d¢g dâg ewddd      d ffd ewddd      g d¢g dgg d¢g dâgdO ewddd      ffd ewddd      g d¢g d¢ ewddd      dOffdd  ewdOdd      dOg d¢gdgdOgd ggffd ewddRd       ewdOdd      dOg d¢gdgdOgd ggffdg d¢gdgdOgd ggd  ewdOdd       ewddRd      ffdg d¢g ewdOdd       ewddRd      d dgdOgd ggffd ewddd      g d¢g dgg d¢g dˢg ewddd      dOffd ewdOdd      d dOg dgdgdOgdOggffgZzejB                  jE                  g d͢ezD cg c]  \  }}eveu||f c}}      ejB                  j                  d΄               Zdτ ZdЄ Zyc c} w c c} w c c}}w )    N)assert_equalassert_allclose)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarning)	csr_array   )_block_diag_extract_block_diagc                     t        d      } | j                  dk(  sJ t        | j                         t	        j
                  d             t        d      }|j                  dk(  sJ t        |j                         t	        j
                  d             t        d      }|j                  dk(  sJ t        |j                         t	        j
                  d             y )N   r   r
   )r
   r            r   shaper   toarraynpzeros)empty1dempty2dempty_nds      V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/sparse/tests/test_coo.pytest_shape_constructorr      s    oG==D   "BHHTN3G==F""""BHHV$45%H>>[(((!!#RXXk%:;    c                  *   t        g d      } | j                  dk(  sJ t        | j                         t	        j
                  g d             t        g dg dg      }|j                  dk(  sJ t        |j                         t	        j
                  g dg dg             t	        j
                  ddgddggd	d
gddgggddgddggdd
gdd	gggddgddggddgddgggg      }t        |      }|j                  dk(  sJ t        |j                         |       t        j                  j                  d       t        j                  j                  ddddd	d
ddd	      }t        |      }|j                  dk(  sJ t        |j                         |       t        dt        j                  ggddggd
d	ggg      }|j                  dk(  sJ t        |j                         t	        j
                  dt        j                  ggddggd
d	ggg             y )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            	         t        g dd      } | j                  dk(  sJ t        | j                         t	        j
                  g d             t        g dg dgd      }|j                  dk(  sJ t        |j                         t	        j
                  g dg dg             t        dggdgggd      }|j                  dk(  sJ t        |j                         t	        j
                  dggdggg             t        j                  j                  d	       t        j                  j                  d
dddddd
      }t        |d      }|j                  dk(  sJ t        |j                         |       y )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                  .   t        j                  t        d      5  t        g dd       d d d        t        j                  t        d      5  t        g dd       d d d        t        j                  t        d      5  t        g dgd       d d d        t        j                  t        d      5  t        dggd	gggd
       d d d        t        j                  t        d      5  t        dgdgffd       d d d        t        j                  t        d      5  t        ddgddgddgddgffd       d d d        t        j                  t        d      5  t        dgdgff       d d d        t        j                  t        d      5  t        dgdgdgdgff       d d d        y # 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   <xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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)>	? 3QC5A3%.	23 
zH
J -A3!-t,- 
zH
J FAa5Aq6Aq6Aq6239EF 
z)D	E "A3".!" 
z)D	E +A3!qcB4()*+ +/) )+ ++ +3 3- -F F" "+ +s_   F3G G6G-G'#G3!G?H3F= G
GG$'G03G<?HHc                      t        d      } t        |       }|j                  dk(  sJ t        |j                         t	        j
                  d             y )Nr   r   )r   ress     r   test_1d_sparse_constructorrK   k   s?    oG
G
C99/r   c                      t        ddgddgff      } | j                  dk(  sJ t        | j                         t	        j
                  g d             y )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                      t        ddgddgffd      } | j                  dk(  sJ t        | j                         t	        j
                  g d             y )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                      d\  } }t        j                  | dz
  gd      t        j                  |dz
  gd      f}t        dg|f| |f      }|j                  | |z  df      }|j                  d   j
                  t        j
                  d      k(  sJ |j                  d   d   | |z  dz
  k(  sJ |j                  ||       }|j                  d   j
                  t        j
                  d      k(  sJ |j                  d   d   |dz
  k(  sJ y )	N)i i r!   int32)dtypegffffff
@r6   r   int64)r   r(   r   reshapecoordsrT   )MNrW   ABCs         r   test_reshape_overflowr]   }   s    DAqhhAwg.!a%0PQFC5&/!Q0A 	
		1q5!*A88A; 111188A;q>a!eq[((( 	
		!QA88A; 111188A;q>QU"""r   c            	         t        g d      } | j                  dk(  sJ | j                  d      }|j                  dk(  sJ t        |j	                         t        j                  dgdgdgg             | j                  d      }|j                  dk(  sJ t        |j	                         t        j                  g dg             t        j                  t        d	      5  | j                  d
       d d d        t        j                  t        d	      5  | j                  d       d d d        t        g dg dg      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ t        |j	                         t        j                  g d             |j                  d      }|j                  dk(  sJ t        |j	                         t        j                  dgdgdggdgdgdggg             t        j                  t        d	      5  |j                  d       d d d        y # 1 sw Y   ExY w# 1 sw Y   xY w# 1 sw Y   y xY w)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 
z)?	@ e y),-E;;&   ==D::*<!=> i(I??i'''""$bhh!qcA31#sQC/Q&RS 
z)?	@ e )    s$   !H6II6I IIc                      t        g d      } | j                  dk(  sJ | j                  dk(  sJ t        g dg dg      }|j                  dk(  sJ |j                  dk(  sJ y )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            	      v   t        g d      j                  } | j                  dk(  sJ t        | j	                         t        j                  g d             t        g dg dg      j                  }|j                  dk(  sJ t        |j	                         t        j                  ddgddgdd	gg             y )
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                     t        g d      j                  d      } | j                  dk(  sJ t        | j	                         t        j                  g d             t        g dg dg      j                  d      }|j                  dk(  sJ t        |j	                         t        j                  g dg dg             t        j                  t        d	
      5  t        g d      j                  d       d d d        t        j                  t        d
      5  t        g dg dg      j                  d       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)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 4)&&F&34 
z)E	F A9i()333@A A4 4A As   E
"E
EEc                     t        g d      } t        | j                  t        j                  g d             t        | j
                  t        j                  | j                               | j
                  j                  | j                  j                  k(  sJ | j
                  j                  j                  du sJ g d| _        t        | j                        dk(  sJ t        | j                  t        j                  g d             | j
                  j                  | j                  j                  k(  sJ t        j                  t        d      5  g d| _        d d d        y # 1 sw Y   y xY w)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   s   
E**E3c                     t        g d      } | j                  | j                  | j                  | j                  fD ]-  }t        j                  t        d      5   |        d d d        / | j                  | j                  | j                  fD ]/  }t         |       j                         | j                                1 y # 1 sw Y   xY w)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. 3QS[[]CKKM23	 	s   CC	arg)r!   r
   r   r#   r&   c                     t        j                  g d      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        |j                         |       y )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                     t        j                  g d      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        |j                         |       y )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                    t        j                  g dg dg      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        |j                         |       y )Nr_   r   r   r   Fr   r   r   s      r   test_2d_to_1d_resizer     s_    
((Iy)
*C
C.CJJsUJ#JJsO99		!!!$r   c            	      x   t        g dg dff      } | j                  dk(  sJ t        | j                         t	        j
                  ddg             | j                          | j                  dk(  sJ t        | j                         t	        j
                  ddg             t        g dg dg dg dg dff      }|j                  dk(  sJ t	        j
                  d	d	gd	d	gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gdd	gggd	d	gd	d
gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gd	d	gggg      }t        |j                         |       |j                          |j                  dk(  sJ t        |j                         |       t        g dg dff      }|j                  dk(  sJ |j                          |j                  dk(  sJ y )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                  D   t        g dg dff      } | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  ddg             | j                          | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  ddg             t        | j                  t        j                  dg             t        | j                  t        j                  dg             y )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                      t        j                  g d      } t        j                  g d      }| |z   }t        |       |z   }t        |      t        |      u sJ t	        ||       y Nr   r   r   r   r   )r   r(   r   typer   den_aden_bexprJ   s       r   test_1d_add_denser   7  sV    HH^$EHH\"E
%-C
E
U
"C9S	!!!cr   c                      t        j                  g d      } t        j                  g d      }| |z   }t        |       t        |      z   }t        ||j	                                y r   )r   r(   r   r   r   r   r   	dense_sum
sparse_sums       r   test_1d_add_sparser   @  sN    HH^$EHH\"EI5!Ie$44JJ..01r   c                      t        j                  g d      } t        j                  g d      }| |z  }t        |       |z  }t        j                  |      dk(  sJ t	        ||       y )Nr   r   r   )r   r(   r   ndimr   r   s       r   test_1d_matmul_vectorr   I  sV    HH^$EHH\"E
%-C
E
U
"C773<1cr   c                      t        j                  g d      } t        j                  g dg dg      j                  }| |z  }t        |       |z  }t	        |      t	        |      u sJ t        ||       y )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	!!!cr   c                     t        j                  g dg dg      } t        |       }| | j                  z  }||j                  z  }t	        |j                         |       t        j                  g dg dg      } t        |       }| | j                  z  }|| j                  z  }t	        ||       t        j                  g dg dg      }t        j                  g d      }t        |      }||j                  z  }||j                  z  }t	        ||       t        j                  g d      }t        j                  dgdgd	gg      }||z  }t        |      |z  }t	        ||       t        |      t        |      z  }t	        ||       y )
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   [  sD   
((L,/
0CcNE
+C
%''/C$ ((O_5
6CcNE
+C
#%%-Cc HHo78EHH_%EeE
%''/C
%''/Cc HHYEHHqcA3_%E
%-C
E
U
"Cc
E
T%[
(Ccr   c                      t        j                  g d      } t        j                  t        d      5  t        |       j                          d d d        y # 1 sw Y   y xY w)Nr   z diagonal requires two dimensionsr>   )r   r(   rD   rE   rF   r   diagonal)r   s    r   test_1d_diagonalr   |  sD    
((>
"C	z)K	L "#!" " "s   AAr   )rt   r   )r   r   r   r   r   )r   r   r
   r_   )r   r%   r   r
   r   r#   c                     t         j                  j                  d       t         j                  j                  dd|       }t	        t        |      j                         |       y )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                     t        |       }t        |      }|j                  | k(  sJ t        |j                         t	        j
                  |              y Nr   )r   	empty_arrrJ   s      r   test_nd_sparse_constructorr     sB     % I
I
C990r   c                     t         j                  j                  d       t        j                  j                  |  }t	        |      }|j
                  | k(  sJ t        |j                         |       y )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                     t         j                  j                  d       t        j                  j                  |  }t	        ||       }|j
                  | k(  sJ t        |j                         |       y )Nr'   r6   r   r   s      r   $test_nd_tuple_constructor_with_shaper     sT     IINN2
))//5
!C
Cu
%C99$r   c                     t        j                  t        d      5  t        ddgddgddgddgffd	       d d d        t        g g g g g ffd
	      } t	        | j                         t        j                  d
             y # 1 sw Y   JxY w)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 EAq6QFQFQF34GDE 2BB/0	BI""$bhhy&9:	E Es   B  B	)r   	new_shape))r   r%   r   r#   )r   r      r   )r   )$      )r   )i8  )r   )r
   r   r
   r
   r   r#   r   c                 D   t         j                  j                  d      }t        | d|t              }|j
                  | k(  sJ |j                         }|j                  |      }|j                  |      }|j
                  |k(  sJ t        |j                         |       y 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                     t         j                  j                  d      }t        | d|t              }|j
                  t        j                  |j                               k(  sJ y 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                    t         j                  j                  d      }t        | d|t              }|j                         j                  }|j                         }|j                  | d d d   k(  sJ t        ||j                                y )Nr   r   r   rC   )
r   r)   r   r   r   r   rq   r{   r   r   )r   r   r   r   	trans_arrs        r   test_nd_transposer     so     ))


)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                    t         j                  j                  d      }t        | d|t              }|j                  |      }t        |j                         t        j
                  |j                         |             y )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                  @   t        j                  t        d      5  t        g d      j	                  d       d d d        t        j                  t        d      5  t        g dg dg      j	                  d	       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)
Nrx   r>   r_   rw   ru   ry   rc   rd   rz   )rD   rE   rF   r   r{   rG   r   r   %test_transpose_with_inconsistent_axisr     s    	z)M	N 4)&&F&34 
z)E	F A9i()333@A A4 4A As   B"BBBc            
         t        g dg dg dg dff      } | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  g dg dgg dg dgg dg d	gg             | j                          | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  g dg dgg dg dgg dg d	gg             g dg dg dg d
g df}t        g d|f      }|j                  dk(  sJ |j                         dk(  sJ |j                          |j                  dk(  sJ |j                         dk(  sJ t        |j                  t        j                  g              t        |j                  t        j                  g              t        |j                  g g g g g f       y )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                 *   t         j                  j                  d      }t        | d|t              }t        | d|t              }|j                         |j                         }}||z   }||z   }t        |      t        |      u sJ t        ||       y 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         ))


)Cs3?Ds3?D<<>4<<>5E
%-C
,C9S	!!!cr   c                    t         j                  j                  d      }t        | d|t              }t        | d|t              }|j                         |j                         }}||z   }||z   }t        ||j                                y r   r   r)   r   r   r   r   r   r   r   r  r  r  r  r   r   s           r   test_nd_add_sparser    sr     ))


)C#SAD#SAD<<>4<<>5EIJJ..01r   c                     t        j                  dgt         j                  ggdgdggg      } t        j                  dgdggdgdggg      }| |z   }t        |       t        |      z   }t	        ||j                                y Nr   r   r!   r
   r   )r   r(   infr   r   r   r   s       r   test_add_sparse_with_infr    |    HHsRVVHoqc{34EHHsQCjA3*-.EI5!Ie$44JJ..01r   )a_shapeb_shape))r   )r'   )r   r   )r   r#   )r#   r%   r   r
   )r%   r#   r
   r   c                     t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j                  t        d      5  ||z    d d d        y # 1 sw Y   y xY w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  '  c     ))


)C'CSDE'CSDE	z)>	?      !A00A9c                 *   t         j                  j                  d      }t        | d|t              }t        | d|t              }|j                         |j                         }}||z
  }||z
  }t        |      t        |      u sJ t        ||       y r   r  r  s           r   test_nd_sub_denser!  3  r	  r   c                    t         j                  j                  d      }t        | d|t              }t        | d|t              }|j                         |j                         }}||z
  }||z
  }t        ||j                                y r   r  r  s           r   test_nd_sub_sparser#  @  sr     ))


)Cs3?Ds3?D<<>4<<>5EIJJ..01r   c                     t        j                  dgt         j                  ggdgdggg      } t        j                  dgdggdgdggg      }| |z
  }t        |       t        |      z
  }t	        ||j                                y r  )r   r(   r,   r   r   r   r   s       r   test_nd_sub_sparse_with_nanr%  N  r  r   c                     t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j                  t        d      5  ||z
   d d d        y # 1 sw Y   y xY w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                 .   t         j                  j                  d      }t        | d|t              }t        |d|t              }|j                         |j                         }}||z  }||z  }t        ||       |t        |      z  }t        ||       y 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  s    
))


)C	3CsCD	3CsCD<<>4<<>5E
%-C
,CS
e
CS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                    t         j                  j                  d      }t        | d|t              }t        |d|t              }|j                         |j                         }}||z  }||z  }t        |j                         |       ||z  }t        ||       |t        |      z  }t        ||       ||z  }t        ||       y 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<<>5E
%-C
+C$
,Cc
e
Cc $,Ccr   c                     t         j                  j                  d      } t        dd| t              }t        dd| t              }t        j                  t        d      5  ||z   d d d        t        j                  t        d      5  ||j                         z   d d d        t        dd| t              }t        j                  t        d	      5  ||z   d d d        t        j                  t        d	      5  ||j                         z   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)
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 t	z)T	U    	3SLD	z)Q	R t	z)Q	R             s0   !D
D&D2=D>D#&D/2D;>Ec                  ,   t        g d      } t        g d      }t        j                  | j                         |j                               }| j                  |      }t	        ||       | j                  |j                               }t	        ||       y )Nr    r"   )r   r   dotr   r   )abr   rJ   s       r   test_dot_1d_1drF    sg    'A'A
&&aiik
*C
%%(Cc
%%		
Ccr   c                      t        ddgddgddgg      } d}| j                  |      }t        j                  | j                         |      }t	        |j                         |       y )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                      t        ddggddggg      } t        g d      }t        j                  t        d      5  | j	                  |       d d d        y # 1 sw Y   y xY w)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    sW    Ax1a&*+Ei E	z)B	C 		%  s   AA c                     t        ddgddgg      } t        j                  t        d      5  | j	                  d        d d d        t        j                  t        d      5  | j                  d        d d d        t        j                  t        d      5  | d z   d d d        t        j                  t        d      5  d | z   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)	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 		$	y(@	A 	y(B	C 	y(B	C u     s/   C"CC' C3CC$'C03C<)
)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                    t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j
                  |j                         |j                               }|j                  |j                               }t        ||       |j                  t        |j                                     }t        ||       |j                  |      }t        |j                         |       y 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c
))D)
*C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   t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j
                  |j                         |j                         |      }|j                  |j                         |      }t        ||       |j                  t        |j                               |      }t        ||       |j                  ||      }t        |      t        u rt        |j                         |       y t        ||       y )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c
//$u}}/d/
;Cc //%d/
+CCyIS[[]C(S#r   c                     t         j                  j                  d      } t        dd| t              }t        dd| t              }dgdgf}t        j                  t        d      5  |j                  ||	       d d d        t        d
d| t              }t        dd| t              }g dddgf}t        j                  t        d      5  |j                  ||	       d d d        y # 1 sw Y   oxY w# 1 sw Y   y xY w)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 *D)* c3OECcMEaUD	z *& 
' *D)* ** ** *s   'C)C5)C25C>)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                    t         j                  j                  d      }t        | d|t              }|j                  |      }t        j                  |j                         |      }t        |j                         |       y 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                    t         j                  j                  d      }t        | d|t              }|j                         }t	        t        j                  |j                  d d             }|j                  |f|j                  dd  z         }t        |      D cg c]  }||d d d d f    }}t        | }t        |      }	t        |	j                         |       y c c}w )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CAq!Qw'CHC
h
C
d
C$ Ds   C c                     t         j                  j                  d      }t        | d|t              }t        t        |      |       }t        |j                         |j                                y 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                 n   t         j                  j                  d      }t        | d|t              }t        |d|t              }||z   }t        j
                  |j                         |j                               }t        |j                         |       ||j                         z   }t        ||       y 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
a%C
&&aiik
*C$
aiik/Ccr   c                 n   t         j                  j                  d      }t        | d|t              }t        |d|t              }||z
  }t        j
                  |j                         |j                               }t        |j                         |       ||j                         z
  }t        ||       y r;  )r   r)   r   r   r   subtractr   r   rs  s          r   test_sub_no_broadcastingrw  ^  s    
))


)CWc3GAWc3GA
a%C
++aiik199;
/C$
aiik/C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                 t   t         j                  j                  d      }t        | d|t              }|j                  |      }t        j
                  |j                         |      }t        ||       |j                  |      }t        j                  |j                         |      }t        ||       y 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
(((
C
))AIIKd
+C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                    t         j                  j                  d      }t        | d|t              }|j                  |      }t        j
                  |j                         |      }|j                  |      }t        j                  |j                         |      }|j                  |      }t        j                  |j                         |      }	|j                  |      }
t        j                  |j                         |      }||f||f||	f|
|ffD ]Y  \  }}t        j                  t        |      t         j                        rt        ||       @t        |j                         |       [ y 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w''7); *-
J/GI -S==cBII.c",-r   c                      t        g dgg      t        g dg      fD ]-  } | j                         dk(  sJ |  j                         dk(  r-J  y )Nr   r!   rC   )r   r  r  )rD  s    r   test_min_max_fullr    sO    ,()9l^+DE  uuw!||xxzR 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                 @   t         j                  j                  d      }t        | d|t              }|j                  ||      }t        j
                  |j                         |      }t        ||       |&t        ||       t        |      t        |      k(  sJ y y 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
%%Ts%
#C
&&4
(Cc
S##w"S'!!! r   c                 @   t         j                  j                  d      }t        | d|t              }|j                  ||      }t        j
                  |j                         |      }t        ||       |&t        |      t        |      k(  sJ t        ||       y y 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'!!!S! r   c                  t   t         j                  j                  d      } t        dd| t              }t        |dz  j                         t        j                  |j                         d             t        |dz  j                         t        j                  |j                         d             t        t        |      j                         t        j                  |j                                      t        t        |      j                         t        j                  |j                                      y )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                 j   t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j                         5  t        j                  dt               t        ||k(  j                         |j                         |j                         k(         t        ||k7  j                         |j                         |j                         k7         t        ||k\  j                         |j                         |j                         k\         t        ||k  j                         |j                         |j                         k         t        ||kD  j                         |j                         |j                         kD         t        ||k  j                         |j                         |j                         k         t        ||k(  j                         t        j                  ||k7  j                                      t        ||k\  j                         t        j                  ||k  j                                      t        ||k  j                         t        j                  ||kD  j                                      d d d        y # 1 sw Y   y xY w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h(?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ad^^%qyy{AIIK'?@ac]]_aiik!))+&=>ac]]_aiik!))+&=>ad^^%r~~q!tnn6F'GHad^^%r~~qsmmo'FGad^^%r~~qsmmo'FG
H 
H 
Hs   IJ))J2c                     t         j                  j                  d      } t        dd| t              }t        j                         5  t        j                  dt               t        |dk(  j                         |j                         dk(         t        |dk7  j                         |j                         dk7         t        |dk\  j                         |j                         dk\         t        |dk  j                         |j                         dk         t        |dkD  j                         |j                         dkD         t        |dk  j                         |j                         dk         d d d        y # 1 sw Y   y xY w)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		 	 	" 5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5 5 5s   D/E??Fc                 0   t         j                  j                  d      }t        | d|t              }t        |d|t              }||z  }t        j
                  |j                         |j                               }t        |j                         |       y r;  r   r)   r   r   r   multiplyr   r   rs  s          r   test_multiplyr    sk    
))


)CWc3GAWc3GA
a%C
++aiik199;
/C$r   c                      t         j                  j                  d      } t        dd| t              }|dz  }t        j
                  |j                         d      }t        |j                         |       y 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                    t         j                  j                  d      }t        | d|t              }t        j
                  ddt        j                  |      z         j                  |      }||z  }|j                         |z  }t        |j                         |       ||z  }t        |j                         |       y )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
a%C
))+/CCKKM3'
a%CCKKM3'r   c                      t         j                  j                  d      } t        dd| t              }|dz  }|j                         dz  }t        |j                         |       y 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                    t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j                         5  t        j                  dt               |j                  |      }t        j                  |j                         |j                               }t        |j                         |       d d d        y # 1 sw Y   y xY w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(	) ) )   A8CC$c                    t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j                         5  t        j                  dt               |j                  |      }t        j                  |j                         |j                               }t        |j                         |       d d d        y # 1 sw Y   y xY wr  )r   r)   r   r   r   r  r  r  r   minimumr   r   rs  s          r   test_minimumr  6  r  r  c                     t        g d      } t        ddgddgddgg      }t        ddgdd	ggd
dgddgggddgddggddgddgggg      }t        j                         5  t        j                  dt               t        | j                  d      j                         t        j                  | j                         d             t        |j                  d      j                         t        j                  |j                         d             t        |j                  d      j                         t        j                  |j                         d             d d d        y # 1 sw Y   y xY w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  2   'AB7RGaX./AaUQqENaURG$45UQqENaUQrFO46 	7A		 	 	" Ih(?@QYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GH	I I I   C<E$$E-c                     t        g d      } t        ddgddgddgg      }t        ddgdd	ggd
dgddgggddgddggddgddgggg      }t        j                         5  t        j                  dt               t        | j                  d      j                         t        j                  | j                         d             t        |j                  d      j                         t        j                  |j                         d             t        |j                  d      j                         t        j                  |j                         d             d d d        y # 1 sw Y   y xY wr  )	r   r  r  r  r   r   r  r   r   r  s      r   test_minimum_with_scalarr  N  r  r  c                     t        t        j                  d            } | d   dk(  sJ | d   dk(  sJ t        | dd j	                         | j	                         dd        t        | d d j	                         | j	                         d d        t        | dd  j	                         | j	                         dd         t        | ddd   j	                         | j	                         ddd          t        | g d   j	                         | j	                         g d          t        | g d	   j	                         | j	                         g d	          y )
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                     t        t        j                  d      j                  d            } | d   dk(  sJ | d   dk(  sJ t	        | dddf   j                         | j                         dddf          t	        | d	ddf   j                         | j                         d	ddf          t	        | d d	dd
df   j                         | j                         d d	dd
df          t	        | ddgdf   j                         | j                         ddgdf          t	        | d	d ddgf   j                         | j                         d	d ddgf          t	        | t        j                  ddg      df   j                         | j                         ddgdf          t	        | d	d t        j                  ddg      f   j                         | j                         d	d ddgf          t	        | d d df   j                         | j                         d d df          t	        | dd d f   j                         | j                         dd d f          y )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                     t        t        j                  d      j                  d            } | d   dk(  sJ | d   dk(  sJ t	        | ddddf   j                         | j                         ddddf          t	        | ddddf   j                         | j                         ddddf          t	        | d ddd	d
d
d f   j                         | j                         d ddd	d
d
d f          t	        | ddgddf   j                         | j                         ddgddf          t	        | d d
ddddgf   j                         | j                         d d
ddddgf          t	        | dd d df   j                         | j                         dd d df          t	        | d d d d df   j                         | j                         d d d d df          y )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            	         t        t        j                  d      j                  d            } | j	                         }t        | d ddd df   j	                         |d ddd df          t        | d d dddd df   j	                         |d d dddd df          t        | d d ddd dd f   j	                         |d d ddd dd f          t        | d d ddd f   j	                         |d d ddd f          y )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                  v   t        j                  d      j                  d      } t        |       }dx|d dd df<   | d dd df<   t	        |j                         |        dx|dd dd f<   | dd dd f<   t	        |j                         |        dx|dd d df<   | dd d df<   t	        |j                         |        y )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                     t        j                  d      } t        |       }dx|d<   | d<   t        |j	                         |        dx|d<   | d<   t        |j	                         |        ddgx|dd | dd t        |j	                         |        g d	x|d d | d d t        |j	                         |        | dd   x|dd  | dd  t        |j	                         |        | dd
d    x|dd
d<   | dd
d<   t        |j	                         |        | g d    x|g d<   | g d<   t        |j	                         |        | g d    x|g d<   | g d<   t        |j	                         |        y )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                 T    ||    x||<   | |<   t        | j                         |       y r   r   r   r  s      r   test_2d_coo_setr    s,     vgAcFQsVa r   r  r"   r   )r   r#   r   c                 L    dx||<   | |<   t        | j                         |       y )Nr  r  s      r   test_3d_coo_setr    s&     AcFQsVa r   scalar_containerc                 B    t        t        j                  | gg            S r   )r	   r   r(   xs    r   <lambda>r    s    yA3%) r   c                     | S r   rG   r  s    r   r  r    s    q r   )sparsedensescalar)idszfails in parallel)reasonc                 x     | d      t         d<   dt        d<   t        t         j                         t               y )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                 X    dx||<   | |<   t        | j                         |d| d       y )Nr  z

Test of: 
)err_msgr  r  s       r   test_5d_coo_setr  3  s1     AbEAbEa;se2)>?r   c                     t        j                  d      j                  d      } t        |       }t	        || dkD     j                         | | dkD            t	        || dkD     j                         | | dkD            t	        || dkD     j                         | | dkD            t	        ||dkD     j                         | | dkD            t	        ||dkD     j                         | | dkD            t	        ||dk     j                         | | dk            |d d ddddf   dkD  }|dd d dddf   dkD  }|t        dd	d       d
gt        d dd      |f}|j                         t        dd	d
      d
gt        ddd      |j                         f}| |   }t	        ||   j                         |       t	        ||   j                         |       t        dd	d       ||t        d dd      d
gf}t        dd	d       |j                         |j                         t        d dd      d
gf}| |   }t	        ||   j                         |       y )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1s7##%qSz21t8$$&!d(41r6""$aBi01s7##%qSz21t8$$&!d(41r6""$aBi0
Aq!QM
R
C
Aq!QM
R
CaD!A3dAq(93
?C[[]E!QNQCq!QOEuXF3!6*5!!#V,Atc3dAq(9A3
?C1as{{}eD!Q>ORSQTUEuXF3!6*r   c                  h   t        j                  d      j                  d      } t        |       }|j	                         | j	                         }}dx||dkD  <   ||dkD  <   t        |j                         |       |j	                         | j	                         }}dx||dkD  <   ||dkD  <   t        |j                         |       |j	                         | j	                         }}|d d ddddf   dkD  }|t        dd	d       d
gt        d dd      |f}|j                         t        dd	d
      d
gt        ddd      |j                         f}dx||<   ||<   t        |j                         |       |j	                         | j	                         }}dx||<   ||<   t        |j                         |       y )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  s}   YY()11/BFvF;;=&++-qA!!Aa#gJ1s7a ;;=&++-qA!!Aa#gJ1s7a ;;=&++-qAaAq!mr!E%1d#aS%a*;U
CC]]_eAq!nqc5Aq>5==?SEAeHqva ;;=&++-qAAeHqx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-*  &(;!XRXXe_5iHBHHW,=>0-/C.0@xrxx')A	68288E?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 BIIeV$aL 
1aaD
1aaA'
4rAdKVQKAKRXXq!fuQ~&
1Xxrxx	"#RXXq!fxrxxA'(#( *D,ISaC[,IJ!  K!
 BIIi  +aL aQ
1d^Qa!
1XuQ1~uQ~.
4rE$Kq!Q8AaRXXq!fuQ~q)RXXq!fuQ~s+RXXq!fuQ~xrxxA'78!Q("((Aq6*+RXXq!fxrxxA'+RXXq!fxrxxA'!-%* *D,ISaC[,IJ!  K!
 )288[A%  
 "56! 7! BII ((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 0RV2WwsBAq"c?2WX@  Y@
+6!K -J> -JH 3Xs   %n,
n1
.n6