
    ЏkhК                        d dl Z d dlZd dlmZ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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d Zej@                  jC                  dg d      de"fd       Z#ej@                  jC                  d e$g dg d            de%e"e"f   fd       Z&ej@                  jC                  dg d      de"fd       Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/ej@                  jC                  d%g d&      d'        Z0ej@                  jC                  d%g d&      d(        Z1ej@                  jC                  d%g d&      d)        Z2ej@                  jC                  d%g d&      d*        Z3d+ Z4ej@                  jC                  d,g d-      d.        Z5ej@                  jC                  d%g d&      d/        Z6ej@                  jC                  d%g d&      d0        Z7ej@                  jC                  d1g d2      d3        Z8d4 Z9d5 Z:ej@                  jC                  d%g d&      d6        Z;ej@                  jC                  d%g d&      d7        Z<d8 Z=ej@                  jC                  d9g d:      d;        Z>ej@                  jC                  d%g d&      d<        Z?ej@                  jC                  d%g d&      d=        Z@d> ZAej@                  jC                  d9g d:      d?        ZBg d@ZCej@                  jC                  dAeC      dB        ZDg dCZEej@                  jC                  dDeE      dE        ZFdF ZGdG ZHdH ZIdI ZJdJ ZKg dKZLej@                  jC                  d9eL      dL        ZMdMdNdOg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ZNej@                  jC                  d^eN      d_        ZOd` ZPej@                  jC                  dag db      dc        ZQej@                  jC                  d%g dd      de        ZRej@                  jC                  d%g dd      df        ZSg dgZTej@                  jC                  d9eT      dh        ZUej@                  jC                  d9eT      di        ZVg djZWej@                  jC                  dkeW      dl        ZXg dmZYej@                  jC                  dkeY      dn        ZZdo 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j@                  jC                  de]      d        Z^ej@                  jC                  de]      d        Z_d Z`g dgZaej@                  jC                  d9ea      d        Zbd Zcej@                  jC                  d9ea      d        Zdd Zeej@                  jC                  d9ea      d        Zfd Zgej@                  jC                  d9ea      d        Zhej@                  jC                  d9ea      d        Zid Zjd Zky)    N)assert_equalassert_allclosesuppress_warnings)
block_diag)	coo_arrayrandom_arraySparseEfficiencyWarning   )_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      W/var/www/teggl/fontify/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:   8   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_shaperG   L   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_constructorrJ   h   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(   rI   s    r   test_1d_tuple_constructorrN   o   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   rL   rM   s    r   $test_1d_tuple_constructor_with_shaperP   u   sH    
aUaUH%T
2C99 67r   c                      t        d      } t        j                  t        d      5  d| d<   d d d        t        j                  t        d      5  | dd d f    d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)N)r
   r
   z3'coo_array' object does not support item assignmentr=   r!   r   r   z''coo_array' object is not subscriptabler   )r   rC   rD   	TypeError)coo_2ds    r   test_non_subscriptabilityrU   z   su    vF	yS
U t 
yF
H q!t 	  s   A#
A/#A,/A8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coordsrX   )MNr[   ABCs         r   test_reshape_overflowra      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   r@   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   rZ   r   r   r   r(   rC   rD   rE   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshapero      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 )Nrc   r   r
   rg   rh   r$   r   )r   r   nnzri   rl   s     r   test_nnzrs      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 )
Nrc   r   rg   rh   r   r!   r   r
   r   )r   Tr   r   r   r   r(   rr   s     r   test_transposerv      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)Nrc   r   axesr   rg   rh   r   r!   r$   "axes don't match matrix dimensionsr=   repeated axis in transposer!   r!   )
r   	transposer   r   r   r   r(   rC   rD   rE   rr   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_likerX   flags	writeablelenr[   rC   rD   rE   rM   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tolilrC   rD   rE   tocootocsrtodokr   r   )rI   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   denrI   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 )Nrc   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 )Nrc   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   rq   r   r   r   r(   sum_duplicates)ri   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   rq   count_nonzeror   r   r   r(   eliminate_zerosr   r   )ri   s    r   test_eliminate_zerosr   2  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exprI   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   H  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   Q  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(   ru   r   r   r   )r   otherr   rI   s       r   test_1d_matmul_multivectorr   Z  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   ru   r   r   list)r   rl   r   rI   r   r   ri   s          r   test_2d_matmul_multivectorr   c  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(   rC   rD   rE   r   diagonal)r   s    r   test_1d_diagonalr     sD    
((>
"C	z)K	L "#!" " "s   AAr   )rx   r   )r   r   r   r   r   )r   r   r
   rc   )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_arrrI   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   rI   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   )rC   rD   rE   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rngrX   )	r   r)   default_rngr   intr   r   rZ   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   rq   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   rB   )
r   r)   r   r   r   r   ru   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   rx   )r$   r{   ))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   ry   )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=   rc   r{   ry   r}   rg   rh   r~   )rC   rD   rE   r   r   rF   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   rq   r   r   r   r   r(   r   r   r   r[   )arr3dr[   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   rI   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   rC   rD   rE   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"  ;  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$  H  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&  V  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(  _  r  r   )	)r
   r   r   r#   r#   rR   rx   ))r
   r   r   r   r&   )r&   )r   r   r
   r   rx   )r   r#   r   r
   r   r   r!   )r
   r#   r*  r/  )r#   r!   )r   r@   )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   rI   s	            r   test_nd_matmul_vectorr5  v  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  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?   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_staterX   r4  )	r8  r9  r   r  r  r  r  r   rI   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   rC   rD   rE   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   rI   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  rI   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   rC   rD   rE   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   rC   rD   rS   rC  	tensordot)r  s    r   test_matmul_dot_not_implementedrM    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<)
)re   re   )r   r   r   r   ))r!   r   r.  )r   r
   r   r   r   )r*  r   r   r#   r
   )rP  )r   r!   ))r!   r#   rQ  )rN  r   r
   r   r   )r
   r&   r   )r   r#   r   r   r
   )r   r#   r   r   rR  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   rI   s          r   test_dot_ndrV    s    
))


)C#CsKE#CsKE
&&%--/
2C
))EMMO
$Cc
))D)
*Cc
))E
C$r   rN  rO  r!   rP  r   r   r*  rQ  rT  rR  rS  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  rz   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<  ry   )r   r)   r   r   r   rL  r   r   r   r   r   )r  r  rz   r   r  r  r   rI   s           r   test_tensordotrY    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=   ry   )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   rC   rD   rE   rL  )r   r  r  rz   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%   )rd   )r   r#   r   ))r   r&   r!   )r   r&   r#   )r@   r   r   ))r!   r*  )rA   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   rI   r   s         r   test_broadcast_torc  +  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   rZ   ranger   r   r   )
r   r   r  r  
num_slicesreshaped_arrayimatricesr   rI   s
             r   test_block_diagrk  9  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  rI   s       r   test_extract_block_diagrm  L  sO     ))


)CsCHD
k$/
7C/r   ))r_  r_  )r[  r[  )r   r   r#   rn  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  rI   r   s          r   test_add_no_broadcastingrr  Y  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   rq  s          r   test_sub_no_broadcastingru  e  s    
))


)CWc3GAWc3GA
a%C
++aiik199;
/C$
aiik/Ccr   )r   Nr   r   rN  r!   r   r   r   r   r#   NrS  r
   rS  r   )r
   r   r   ))r   r   r   r
   r   rP  NrP  r!   rP  r   rP  r
   )rP  r   rW  r   )rW  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  rI   r   s         r   test_argmax_argminr  z  s    
))


)CUCcEA
(((
C
))AIIKd
+Cc
(((
C
))AIIKd
+Ccr   )rv  rw  rx  ry  r{  r}  r~  r  r  r  r  r  )r   r#   r&   r!   r   )rN  rx   )rN  r{   )r   r   r
   r
   )r  r   r
   )rf   r   )r   r   r&   r#   r{   )r  r
   r!   )r  r  )r  r   r   )r  rB   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_nanmaxrI   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!   rB   )r   r  r  )rD  s    r   test_min_max_fullr    sO    ,()9l^+DE  uuw!||xxzR r   )r   NN)r   r   N)rN  r!   N)rz  r   N)r|  NN)rS  r
   N)r&   r   )rP  NN)r   r   r   )rP  r   N)rW  r   N)r  r   N)rN  rx   N)rN  r{   N)r  r
   N)r  r  N)rf   r   Nr  r{   )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  rI   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                 P   t         j                  j                  d      }t               }|j	                  t
               t        | d|t              }t        |d|t              }|5  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r;  )r   r)   r   r   filterr	   r   r   r   r   bitwise_not)r  r  r   suprD  rE  s         r   test_boolean_comparisonsr    s   
))


)C

CJJ&'Wc3GAWc3GA	 	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   'H,JJ%c                     t         j                  j                  d      } t               }|j	                  t
               t        dd| t              }|5  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  rD  s      r   $test_boolean_comparisons_with_scalarr    s   
))


)C

CJJ&'Y#SIA	 5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E22E;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   rq  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  rI   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mathre  rZ   r   r   rq  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               }|j	                  t
               t        | d|t              }t        |d|t              }|5  |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   maximumr   r   r  r  r   r  rD  rE  rI   r   s           r   test_maximumr  0      
))


)C

CJJ&'Wc3GAWc3GA	 )iiljjaiik2S[[]C() ) )   'ACCc                    t         j                  j                  d      }t               }|j	                  t
               t        | d|t              }t        |d|t              }|5  |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   minimumr   r   r  s           r   test_minimumr  <  r  r  c                     t               } | j                  t               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      }| 5  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   i)r   r  r	   r   r   r  r   r   r  rD  rE  cs       r   test_maximum_with_scalarr  I  -   

CJJ&''AB7RGaX./AaUQqENaURG$45UQqENaUQrFO46 	7A	 IQYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GHQYYq\))+RZZ		Q-GHI I I   ,C"EE c                     t               } | j                  t               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      }| 5  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  s       r   test_minimum_with_scalarr  U  r  r  )lr  numpyr   numpy.testingr   r   r   rC   scipy.linalgr   scipy.sparser   r   r	   _coor   r   r   r4   r:   rG   rJ   rN   rP   rU   ra   ro   rs   rv   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  rM  
dot_shapesrV  tensordot_shapes_and_axesrY  r\  rc  rk  rm  add_sub_shapesrr  ru  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  rF   r   r   <module>r     s     J J  # 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r   