
    >qj                        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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jD                  jG                  dg d      de$fd       Z%ejD                  jG                  d e& e'g dg d                  de(e$e$f   fd       Z)ejD                  jG                  dg d      de$fd       Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2ejD                  jG                  d%g d&      d'        Z3ejD                  jG                  d%g d&      d(        Z4ejD                  jG                  d%g d&      d)        Z5ejD                  jG                  d%g d&      d*        Z6d+ Z7ejD                  jG                  d,g d-      d.        Z8ejD                  jG                  d%g d&      d/        Z9ejD                  jG                  d%g d&      d0        Z:ejD                  jG                  d1g d2      d3        Z;d4 Z<d5 Z=ejD                  jG                  d%g d&      d6        Z>ejD                  jG                  d%g d&      d7        Z?d8 Z@ejD                  jG                  d9g d:      d;        ZAejD                  jG                  d%g d&      d<        ZBejD                  jG                  d%g d&      d=        ZCd> ZDejD                  jG                  d9g d:      d?        ZEg d@ZFejD                  jG                  dAeF      dB        ZGg dCZHejD                  jG                  dDeH      dE        ZIdF ZJdG ZKdH ZLdI ZMdJ ZNg dKZOejD                  jG                  d9eO      dL        ZPdMdNdOg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ZQejD                  jG                  d^eQ      d_        ZRd` ZSejD                  jG                  dag db      dc        ZTejD                  jG                  d%g dd      de        ZUejD                  jG                  d%g dd      df        ZVg dgZWejD                  jG                  d9eW      dh        ZXejD                  jG                  d9eW      di        ZYg djZZejD                  jG                  dkeZ      dl        Z[g dmZ\ejD                  jG                  dke\      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jD                  jG                  de`      d        ZaejD                  jG                  de`      d        Zbd Zcg dgZdejD                  jG                  d9ed      d        Zed ZfejD                  jG                  d9ed      d        Zgd ZhejD                  jG                  d9ed      d        Zid ZjejD                  jG                  d9ed      d        ZkejD                  jG                  d9ed      d        Zld Zmd Znd Zod Zpd Zqd Zrd Zsd Zt ej                  d      j                  d      Zw eew      Zxdd eydOdRd      d fd eydOdRd      f eydOdRd       eydOddR      f eyddd      dfdO eyd      fezfdOdRgd fddOdgf ej                  dOdRg       eydOd      f eyd       ej                  g d      f ej                  dOdRg       ej                  d dg      fgZ|ejD                  jG                  g de|D  cg c]  } exew| f	 c}       ejD                  j                  d               Z~ ej                  d      j                  d      Zw eew      Zxddd  eydOdR      d f eydRd      dR eyd      f eyd       eydOdd       eydOd      f eyddd       eyd       eydOdd      fezddOdg eydR      f ej                  dOdRg       eydOd      d f ej                  dOdRg       eydOd      d gf ej                  dOdRg       eydOd       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Z|ejD                  jG                  g de|D  cg c]  } exew| f	 c}       ejD                  j                  d               ZejD                  jG                  dd ej                  d gg d      ejD                  j                  d      d               Z ej                  d      j                  d      Zw eew      Zxddddd eyddd      ddO eyddd      dOffd eyddd       eyddd      ddOdOffdddOdO eyddd       eyddd      ffd eyddd       eyddd      ddOdOffd eyddd      g dg dgg d¢g dâg eyddd      d ffd eyddd      g d¢g dgg d¢g dâgdO eyddd      ffd eyddd      g d¢g d¢ eyddd      dOffdd  eydOdd      dOg d¢gdgdOgd ggffd eyddRd       eydOdd      dOg d¢gdgdOgd ggffdg d¢gdgdOgd ggd  eydOdd       eyddRd      ffdg d¢g eydOdd       eyddRd      d dgdOgd ggffd eyddd      g d¢g dgg d¢g dˢg eyddd      dOffd eydOdd      d dOg dgdgdOgdOggffgZ|ejD                  jG                  g d͢e|D cg c]  \  }}exew||f c}}      ejD                  j                  d΄               Zdτ ZdЄ Zyc c} w c c} w c c}}w )    N)assert_equalassert_allclose)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarningmatrix_transpose)	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      Z/opt/rentech/trading_bot/.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_constructorr5      s   i E;;$"((9"56 y),-E;;&   "((Iy+A"BC HHAA'1a&1a&)9:AA'1a&1a&)9:AA'1a&1a&)9:< =E eE;;,&&&%( IINN2IIOOAa!Aa!A.EeE;;----%( !RVVAx1a&:;F<<9$$$!288q"&&k]aVH1vh,O#PQr   c            	         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   r7   r   r"   r   r   r   r"   r"   r"   z)axis 0 index 2 exceeds matrix dimension 2r"   r   )r   z)axis 1 index 3 exceeds matrix dimension 3r   )r   r   r   znegative axis 0 index: -1znegative axis 2 index: -1)pytestraises
ValueErrorr    r   r   .test_dense_constructor_with_inconsistent_shaperI   Q   s   	z)>	? ))4() 
z)>	? +)6*+ 
z)>	? +9+T*+ 
z)>	? 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_constructorrL   m   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)   rK   s    r   test_1d_tuple_constructorrP   t   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   rA   r7   )r   r&   r'   r   rN   rO   s    r   $test_1d_tuple_constructor_with_shaperR   z   sH    
aUaUH%T
2C99 67r   c                      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
@r7   r   int64)r   r)   r   reshapecoordsrU   )MNrX   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   rB   r"   r   r   r"   r   zcannot reshape arrayr?   r   r   r   r   r"   r   r   r   r   r   r%   )r   )r"   r   r   r   r   r   )r   r   r"   r   )
r   r   rW   r   r   r   r)   rE   rF   rG   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshaperl      s   i E;;$mmF#G==F""""BHHqcA3_$=>mmF#G==F""""BHHi[$9: 
z)?	@ e 
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   rd   re   r%   r   )r   r   nnzrf   ri   s     r   test_nnzrp      s_    i E;;$99>>y),-E;;&   99>>r   c                     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                  ddgddgdd	gg      }t        |j                  j	                         |       t        |j                  j	                         |       t        t        |      j	                         |       y )
Nr`   r   rd   re   r   r"   r   r   r   )	r   Tr   r   r   r   r)   mTr	   )rf   ri   desireds      r   test_transposeru      s    i ""E;;$"((9"56y),-E77==F"""hhAAA/0G"G,!!#W-!%(002G<r   c                     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   rd   re   r   r"   r%   "axes don't match matrix dimensionsr?   repeated axis in transposer"   r"   )
r   	transposer   r   r   r   r)   rE   rF   rG   ro   s     r   test_transpose_with_axisr      s   i ***5E;;$"((9"56y),-77V7DE;;&   "((Iy+A"BC	z)M	N 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_likerU   flags	writeablelenrX   rE   rF   rG   rO   s    r   test_1d_row_and_colr      s    
K
 C"((9-."--0177==CGGMM)))77==""e+++CGszz?a"((9-.77==CGGMM)))	z)C	D   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tolilrE   rF   rG   tocootocsrtodokr   r   )rK   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   denrK   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   rn   r   r   r   r)   sum_duplicates)rf   r0   expected
arr_nodupss       r   test_sum_duplicatesr     s   y9,/0E99>>"((Aq6"23	99>>"((Aq6"23 y9iI"NOPE99>>xxq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	Wq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	W	YH (+	99>>(+ L</:;J>>Q>>Qr   c                  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   rn   count_nonzeror   r   r   r)   eliminate_zerosr   r   )rf   s    r   test_eliminate_zerosr   /  s    y9,/0E99>> A%%%"((Aq6"23	99>> A%%%"((Aq6"23BHHaSM*BHHaSM*r   c                      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exprK   s       r   test_1d_add_denser   <  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   E  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   N  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)   rr   r   r   r   )r   otherr   rK   s       r   test_1d_matmul_multivectorr   W  s`    
((>
"CHHlL1244E
+C
C.5
 C9S	!!!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   rr   r   r   list)r   ri   r   rK   r   r   rf   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)   rE   rF   rG   r   diagonal)r   s    r   test_1d_diagonalr     sD    
((>
"C	z)K	L "#!" " "s   AAr   )rw   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_arrrK   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   rK   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(   r7   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   r7   )r   r   r   r   )rE   rF   rG   r   r   r   r   empty)r   s    r   (test_tuple_constructor_for_dim_size_zeror     s    	z)C	D 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rngrU   )	r   r*   default_rngr   intr   r   rW   r   )r   r   r   r0   den4dexp_arrres_arrs          r   test_nd_reshaper     s     ))


)CC@E;;%MMOEmmI&GmmI&G==I%%%"G,r   c                     t         j                  j                  d      }t        | d|t              }|j
                  t        j                  |j                               k(  sJ y r   )r   r*   r   r   r   rn   r   r   )r   r   r   s      r   test_nd_nnzr     sK     ))


)C
ucs#
>C77b&&s{{}5555r   c                 `   t         j                  j                  d      }t        | d|t              }|j                         j                  }|j                         }|j                  | d d d   k(  sJ t        |j                         |       t        |       dk\  r|j                         j                  }|j                  }|j                  |j                  k(  sJ t        |j                         |       t        |      }|j                  |j                  k(  sJ t        |j                         |       y t        j                  t        d      5  |j                   d d d        t        j                  t        d      5  t        |       d d d        y # 1 sw Y   9xY w# 1 sw Y   y xY w)Nr   r   r   rD   r   z2-dimensionalr?   )r   r*   r   r   r   r   rr   r~   r   r   r   rs   r	   rE   rF   rG   )r   r   r   r   	trans_arrs        r   test_nd_transposer     sJ    ))


)C
ucs#
>CkkmooGI??eDbDk)))""$g.
5zQ++-""FF	'--///Y&&('2$S)	'--///Y&&('2]]:_= 	FF	]]:_= 	"S!	" 	"	 		" 	"s   FF$F!$F-)r   	axis_perm))r   rw   )r%   rz   ))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   rx   )r   r*   r   r   r   r~   r   r   )r   r   r   r   r   s        r   test_nd_transpose_with_axisr     s\     ))


)C
ucs#
>C9-I""$bll3;;=y&QRr   c                  @   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?   r`   rz   rx   r|   rd   re   r}   )rE   rF   rG   r   r~   rH   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   rn   r   r   r   r   r)   r   r   r   rX   )arr3drX   arr5ds      r   test_nd_eliminate_zerosr    s   |lL,%OPQE99>> A%%%"((Y	,B%.	$:Y	<R,T #U V	99>> A%%%"((Y	,B%.	$:Y	<R,T #U V L,lSF|V,-E99>> A%%%	99>> A%%%BHHRL)BHHRL)BB34r   c                 *   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   rK   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  2  |    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   rE   rF   rG   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$  G  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&  T  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(  b  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*  k  r!  r"  )	)r   r   r   r$   r$   r   r   rw   ))r   r   r   r   r'   )r'   )r   r   r   r   rw   )r   r$   r   r   r   r   r"   )r   r$   r,  r2  )r$   r"   )r   rB   )rA   rA   )	mat_shape	vec_shapec                 .   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   )	r4  r5  r   r  r  r	  r
  r   rK   s	            r   test_nd_matmul_vectorr8    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   )r9  rB   )r0  r   r   ))r"   r   r   r   )r   r$   r"   r   r   ))r   r"   r"   r   r   )r"   r   r   r   )rA   )r   r   r   )r   )r$   r   r   r   r   )rA   r:  r3  )
mat_shape1
mat_shape2c                    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_staterU   r7  )	r;  r<  r   r  r  r	  r
  r   rK   s	            r   test_nd_matmulrA    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   rE   rF   rG   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysrD    s   
))


)CSs#NDSs#ND	z)T	U 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   rK   s       r   test_dot_1d_1drI    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   rF  r   r   r   )rG  rH  rK   r   s       r   test_dot_sparse_scalarrK    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   rE   rF   rG   rF  )r  r  s     r   !test_dot_with_inconsistent_shapesrM    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   rE   rF   	TypeErrorrF  	tensordot)r  s    r   test_matmul_dot_not_implementedrQ    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<)
)rb   rb   )r   r   r   r   ))r"   r   r1  )r   r   r   r   r   )r,  r   r   r$   r   )rT  )r   r"   ))r"   r$   rU  )rR  r   r   r   r   )r   r'   r   )r   r$   r   r   r   )r   r$   r   r   rV  c                    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   rF  r   r   r   )r  r  r   r  r  r   rK   s          r   test_dot_ndrZ    s    
))


)C#CsKE#CsKE
&&%--/
2C
))EMMO
$Cc
))D)
*Cc
))E
C$r   rR  rS  r"   rT  r   r   r,  rU  rX  rV  rW  r   r$   r   r'   r   r   )r   r   r   ))r   r$   r   r   r   )r   r   r   r   r'   r   ))r   r$   r   )r   r   r   r"   )r   r   r   )r  r  ry   c                 R   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?  rx   )r   r*   r   r   r   rP  r   r   r   r   r   )r  r  ry   r   r  r  r   rK   s           r   test_tensordotr]    s    
))


)C#CsKE#CsKE
,,u}}d
CC //%--//
5C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?   rx   )r$   r   r   r   r   )r   r   r   r   )r   r   r"   r"   r   z,axes lists/tuples must be of the same length)	r   r*   r   r   r   rE   rF   rG   rP  )r   r  r  ry   s       r    test_tensordot_with_invalid_argsra  $  s    
))


)C#CsKE#CsKEC!:D	z)U	V *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&   )ra   )r   r$   r   ))r   r'   r"   )r   r'   r$   )rB   r   r   ))r"   r,  )rC   r#   ))r"   r   r"   r$   r   )r'   r   r   r&   r$   r   c                    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   )rb  rc  r   r   rK   r   s         r   test_broadcast_torh  7  s^     ))


)C
|Ss#
NC


O
,C
//#++-
9C$r   ))r   r$   r   r   r'   r  r  )r&   r$   r   r   r   c                    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   rW   ranger   r   r   )
r   r   r  r	  
num_slicesreshaped_arrayimatricesr   rK   s
             r   test_block_diagrp  E  s     ))


)CsCHDLLNE RWWU[["-./J]]J=5;;rs3C#CDN16z1B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  rK   s       r   test_extract_block_diagrr  X  sO     ))


)CsCHD
k$/
7C/r   ))rd  rd  )r`  r`  )r   r   r$   rs  c                 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   rG  rH  rK   r   s          r   test_add_no_broadcastingrw  e  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   rv  s          r   test_sub_no_broadcastingrz  r  s    
))


)CWc3GAWc3GA
a%C
++aiik199;
/C$
aiik/Ccr   )r   Nr   r   rR  r"   r   r   r   r   r$   NrW  r   rW  r   )r   r   r   ))r   r   r   r   r   rT  NrT  r"   rT  r   rT  r   )rT  r   r[  r   )r[  r   )r   axisc                 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   rG  rK   r   s         r   test_argmax_argminr    s    
))


)CUCcEA
(((
C
))AIIKd
+Cc
(((
C
))AIIKd
+Ccr   )r{  r|  r}  r~  r  r  r  r  r  r  r  r  )r   r$   r'   r"   r   )rR  rw   )rR  rz   )r   r   r   r   )r  r   r   )rc   r   )r   r   r'   r$   rz   )r  r   r"   )r  r  )r  r   r   )r  rD   r   )r  r   )r  r   )r  r   c                    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   rG  res_minexp_minres_maxexp_max
res_nanmin
exp_nanmin
res_nanmax
exp_nanmaxrK   r   s                 r   test_min_maxr    s"   
))


)CUCcEAeeeGffQYY[t,GeeeGffQYY[t,Gt$J199;T2Jt$J199;T2J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"   rD   )r   r  r  )rG  s    r   test_min_max_fullr    sO    ,()9l^+DE  uuw!||xxzR r   )r   NN)r   r   N)rR  r"   N)r  r   N)r  NN)rW  r   N)r'   r   )rT  NN)r   r   r   )rT  r   N)r[  r   N)r  r   N)rR  rw   N)rR  rz   N)r  r   N)r  r  N)rc   r   Nr  rz   )r'   r$   )r  r  N)r  r  Nr  )r   r   )r  r   N)r  r   N)r   r  outc                 @   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   rG  rK   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   rG  s     r   test_pow_abs_roundr    s    
))


)C[#CsKAQTNN$bhhqyy{A&>?QTNN$bhhqyy{A&>?E!H$$&(=>CFNN$bffQYY[&9:r   c                 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   rG  rH  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   rv  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   rG  rK   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mathrj  rW   r   r   rv  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  6  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   rv  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   rv  s          r   test_minimumr  J  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   rG  rH  cs      r   test_maximum_with_scalarr  V  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  b  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  n  s   "))A,AQ4199Q41991Q!199;q#342A!))+bq/212!))+ab/21Qq5!!#QYY[1Q%789%%'Y)?@9%%'Y)?@r   c                     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   rd     r"   r   r   r$   )r   r   r  rW   r   r   r)   r  s    r   test_2d_coo_getr  }  s   "))E"**623AT7a<<T7b==1Q36""$aiik!A#q&&9:1ac6""$aiik!QqS&&9:2A2q1u9%%'RaR1QY)?@Aq619%%'aUAX)>?121v:&&(!))+ab1Q%i*@A288QF#Q&'//1199;!uax3HI12rxxA''(002AIIKQqE	4JK1a4"AIIK1$561a4"AIIK1$56r   c                     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  rW   r   r   )r[   s    r   test_3d_coo_getr    s   "))I&..y9:AW:??W:1ac19%%'Q!QY)?@1ac19%%'Q!QY)?@2A2q1uab=!))+QYY[!QqUAB-GHAq61a<((*AIIKA1,EF2A2qsQF?#++-qyy{2A2qsQF?/KL1a7##%qyy{1a7';<1a7##%qyy{1a7';<r   c            	         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  rW   r   r   )r[   Ds     r   test_newaxis_getr    s   "))I&..y9:A			A2A2qr19%%'2A2qr1964!QqS$)*224abqb!A#tQ8N6OP4!QRD()113QtRaRQ7L5MN4!S$&'//11T2A2sD5H3IJr   c                  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  rW   r   r   r   r  r[   s     r   test_newaxis_setr    s    
		)$$Y/A!A&''AdABkNQtQR{^a &''Aab!TkNQqr1d{^a &''Aab$kNQqr4{^a r   c                     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&   rD   r   r   r   r   r"   r   )iiir$   r   r  r!   r  )r   r  r   r   r   r  s     r   test_1d_coo_setr    sd   
		!A!AAaD1Q4a AaD1Q4a 2hAaFQqVa   AbqEAbqEa qrUFAabEAabEa QqU8)#Aa!eHq1Qxa #$Y<-/AiL1Y<a #$Y<-/AiL1Y<a r   r  r  ra   )rD   r   r$   rD   r!   r[   r  idxc                 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   rH   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   )r[   r  r   r   )r  s    r   test_3d_coo_singletonr  
  s+     $C(AiLAiLa r     r   r   r   r   r   )zall-intsr   )zellipsis-first).r   )zellipsis-last)r"   .)zellipsis-middle)r"   .r   z
split-intszcontiguous-ints-lastzcontiguous-ints-firstzempty-slicezsplit-2d-arrays-and-intsr8   )r   r"   r   )r   r"   r   r   zcontiguous-2d-arrays-and-intszsplit-1d-arrays-and-intsz,split-ints-broadcast-arrays-slice-step-not-1zcontiguous-broadcast-arrayszcontiguous-arrays-firstz!split-arrays-some-first-some-lastz$duplicate-array-entries-split-arrays)r   r   r   z3duplicate-array-entries-contiguous-broadcast-arraysr[   r  ixmsgc                 X    dx||<   | |<   t        | j                         |d| d       y )Nr  z

Test of: 
)err_msgr  r  s       r   test_5d_coo_setr  G  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  rD   r   2   r   r   r"   )r   r  rW   r   r   r   slice)r  r[   bi0bi1r  idxnpresults          r   test_bool_getr!  N  s$   
		#$,,_=A!A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  rW   r   copyr   r   r  )D_origA_origr[   r  bool0r  r  s          r   test_bool_setr'  i  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   rE   scipy.linalgr   scipy.sparser   r   r   r	   scipy.sparse._csrr
   _coor   r   r   r5   r<   rI   rL   rP   rR   r^   rl   rp   ru   r   r   r   markparametrizer   r   r   ziptupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r$  r&  r(  r*  mat_vec_shapesr8  mat_mat_shapesrA  rD  rI  rK  rM  rQ  
dot_shapesrZ  tensordot_shapes_and_axesr]  ra  rh  rp  rr  add_sub_shapesrw  rz  argmax_argmin_shapes_axisr  max_min_shapes_axisr  r  r   sum_mean_paramsr  r  r  bitwise_op_and_compare_shapesr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r  r[   r  Ellipsisr)   keysthread_unsafer  r  r  r  r!  r'  )r  r  r  s   000r   <module>r>     s      7  #  ( 3<R@)(+8058
# "J
=A  3 0% % 1% S|%D EF%eCHo % G% -%c % .%8
+2B"  #; <0<0  #; <1<1  #; <%<%  #; <%<%; / 2Q R-	R-  #; <6<6  #; <"<"2 / 2S TSTSA54  #; <<  #; <2<22 / 2K LL  #; <<  #; <	2<	22 / 2K LL
 3^D
 E
 5~F G* "%	
 /<% =%$ EQC!:sQCj!	9sQCj!	QFQF+,kIy12!g	9-.	  79RS T,*& <MN
%N
% ' %> ?%?%" ' %> ?0?0 /@	 A	 /@
 A
  *,EF
 G

  *,?@- A-*  &(;!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   -n4
'n9
6n>