
    e!hq                        d dl Zd dlmZ d dlZd dlmZ d dl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j8                  j;                  dg d      defd       Zej8                  j;                  d e g dg d            de!eef   fd       Z"ej8                  j;                  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j8                  j;                  d%g d&      d'        Z,ej8                  j;                  d%g d&      d(        Z-ej8                  j;                  d%g d&      d)        Z.ej8                  j;                  d%g d&      d*        Z/d+ Z0ej8                  j;                  d,g d-      d.        Z1ej8                  j;                  d%g d&      d/        Z2ej8                  j;                  d%g d&      d0        Z3ej8                  j;                  d1g d2      d3        Z4d4 Z5d5 Z6ej8                  j;                  d%g d&      d6        Z7ej8                  j;                  d%g d&      d7        Z8d8 Z9ej8                  j;                  d9g d:      d;        Z:ej8                  j;                  d%g d&      d<        Z;ej8                  j;                  d%g d&      d=        Z<d> Z=ej8                  j;                  d9g d:      d?        Z>g d@Z?ej8                  j;                  dAe?      dB        Z@g dCZAej8                  j;                  dDeA      dE        ZBdF ZCdG ZDdH ZEdI ZFdJ ZGg dKZHej8                  j;                  d9eH      dL        ZIdMdNdOg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ZJej8                  j;                  d^eJ      d_        ZKd` ZLej8                  j;                  dag db      dc        ZMej8                  j;                  d%g dd      de        ZNej8                  j;                  d%g dd      df        ZOy)g    N)assert_equal)
block_diag)	coo_arrayrandom_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      c/var/www/html/diagnosisapp-backend/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_constructorr1      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_shaper7   7   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   r3   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_shaperD   K   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_constructorrG   g   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%   rF   s    r   test_1d_tuple_constructorrK   n   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<   r3   )r   r"   r#   r   rI   rJ   s    r   $test_1d_tuple_constructor_with_shaperM   t   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   r@   rA   	TypeError)coo_2ds    r   test_non_subscriptabilityrR   y   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
@r3   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   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   rW   r   r   r   r%   r@   rA   rB   )arr1dcol_vecrow_vecarr2dflat	to_3d_arrs         r   test_reshaperk      s   i E;;$mmF#G==F""""BHHqcA3_$=>mmF#G==F""""BHHi[$9: 
z)?	@ e 
z)?	@ e y),-E;;&   ==D::*<!=> i(I??i'''""$bhh!qcA31#sQC/Q&RS 
z)?	@ e )    s$   !H6II6I IIc                      t        g d      } | j                  dk(  sJ | j                  dk(  sJ t        g dg dg      }|j                  dk(  sJ |j                  dk(  sJ y )Nr`   r   r   rc   rd   r!   r   )r   r   nnzre   rh   s     r   test_nnzro      s_    i E;;$99>>y),-E;;&   99>>r   c            	      v   t        g d      j                  } | j                  dk(  sJ t        | j	                         t        j                  g d             t        g dg dg      j                  }|j                  dk(  sJ t        |j	                         t        j                  ddgddgdd	gg             y )
Nr`   r   rc   rd   r   r   r   r   r   )r   Tr   r   r   r   r%   rn   s     r   test_transposerr      s    i ""E;;$"((9"56y),-//E;;&   "((QFQFQF+C"DEr   c                     t        g d      j                  d      } | j                  dk(  sJ t        | j	                         t        j                  g d             t        g dg dg      j                  d      }|j                  dk(  sJ t        |j	                         t        j                  g dg dg             t        j                  t        d	
      5  t        g d      j                  d       d d d        t        j                  t        d
      5  t        g dg dg      j                  d       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr`   r   axesr   rc   rd   r   r   r!   "axes don't match matrix dimensionsr:   repeated axis in transposer   r   )
r   	transposer   r   r   r   r%   r@   rA   rB   rn   s     r   test_transpose_with_axisr|      s   i ***5E;;$"((9"56y),-77V7DE;;&   "((Iy+A"BC	z)M	N 4)&&F&34 
z)E	F A9i()333@A A4 4A As   E
"E
EEc                     t        g d      } t        | j                  t        j                  g d             t        | j
                  t        j                  | j                               | j
                  j                  | j                  j                  k(  sJ | j
                  j                  j                  du sJ g d| _        t        | j                        dk(  sJ t        | j                  t        j                  g d             | j
                  j                  | j                  j                  k(  sJ t        j                  t        d      5  g d| _        d d d        y # 1 sw Y   y xY w)Nr   r   r   r   Fr   r   zcannot set row attributer:   )r   r   colr   r%   row
zeros_likerU   flags	writeablelenrX   r@   rA   rB   rJ   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tolilr@   rA   rB   tocootocsrtodokr   r   )rF   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   denrF   s      r   test_1d_resizer      sZ    
((;
C
C.CJJsUJ#JJsO99		!!!$r   r   r   r   r   c                     t        j                  g d      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        |j                         |       y )Nr`   Fr   r   r   s      r   test_1d_to_2d_resizer      sZ    
((9
C
C.CJJsUJ#JJsO99		!!!$r   )r   r   r   r#   c                    t        j                  g dg dg      }t        |      }|j                  | d       |j                  |        |j                  |j                  k(  sJ t        |j                         |       y )Nr`   r   r   r   Fr   r   r   s      r   test_2d_to_1d_resizer     s_    
((Iy)
*C
C.CJJsUJ#JJsO99		!!!$r   c            	      x   t        g dg dff      } | j                  dk(  sJ t        | j                         t	        j
                  ddg             | j                          | j                  dk(  sJ t        | j                         t	        j
                  ddg             t        g dg dg dg dg dff      }|j                  dk(  sJ t	        j
                  d	d	gd	d	gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gdd	gggd	d	gd	d
gd	d	ggd	d	gd	d	gd	d	ggd	d	gd	d	gd	d	gggg      }t        |j                         |       |j                          |j                  dk(  sJ t        |j                         |       t        g dg dff      }|j                  dk(  sJ |j                          |j                  dk(  sJ y )N)r   r   r   r   r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r   r   r"   r   r   r   r   r   )r   rm   r   r   r   r%   sum_duplicates)re   r,   expected
arr_nodupss       r   test_sum_duplicatesr     s   y9,/0E99>>"((Aq6"23	99>>"((Aq6"23 y9iI"NOPE99>>xxq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	Wq6Aq6Aq6
"aVaVaV$<1v1vPQSTv>V	W	YH (+	99>>(+ L</:;J>>Q>>Qr   c                  D   t        g dg dff      } | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  ddg             | j                          | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  ddg             t        | j                  t        j                  dg             t        | j                  t        j                  dg             y )N)r   r   r   r   r   r   r   )
r   rm   count_nonzeror   r   r   r%   eliminate_zerosr   r   )re   s    r   test_eliminate_zerosr   1  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exprF   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   G  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   P  sV    HH^$EHH\"E
%-C
E
U
"C773<1cr   c                      t        j                  g d      } t        j                  g dg dg      j                  }| |z  }t        |       |z  }t	        |      t	        |      u sJ t        ||       y )Nr   r   r   r   r   r   )r   r%   rq   r   r   r   )r   otherr   rF   s       r   test_1d_matmul_multivectorr   Y  s`    
((>
"CHHlL1244E
+C
C.5
 C9S	!!!cr   c                     t        j                  g dg dg      } t        |       }| | j                  z  }||j                  z  }t	        |j                         |       t        j                  g dg dg      } t        |       }| | j                  z  }|| j                  z  }t	        ||       t        j                  g dg dg      }t        j                  g d      }t        |      }||j                  z  }||j                  z  }t	        ||       t        j                  g d      }t        j                  dgdgd	gg      }||z  }t        |      |z  }t	        ||       t        |      t        |      z  }t	        ||       y )
Nr   r   )r   r   r   r   r    )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   )r   r%   r   rq   r   r   list)r   rh   r   rF   r   r   re   s          r   test_2d_matmul_multivectorr   b  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%   r@   rA   rB   r   diagonal)r   s    r   test_1d_diagonalr     sD    
((>
"C	z)K	L "#!" " "s   AAr   )rt   r   )r   r   r   r   r   )r   r   r   r`   )r   r"   r   r   r   r    c                     t         j                  j                  d       t         j                  j                  dd|       }t	        t        |      j                         |       y )Nr$   r   r    )lowhighsize)r   r&   r'   randintr   r   todense)r   arrs     r   test_nd_todenser     sF     IINN2
))



6C3'')3/r   c                     t        |       }t        |      }|j                  | k(  sJ t        |j                         t	        j
                  |              y )Nr   )r   	empty_arrrF   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   rF   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$   r3   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   r3   )r   r   r   r   )r@   rA   rB   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   r,   den4dexp_arrres_arrs          r   test_nd_reshaper     s     ))


)CC@E;;%MMOEmmI&GmmI&G==I%%%"G,r   c                     t         j                  j                  d      }t        | d|t              }|j
                  t        j                  |j                               k(  sJ y r   )r   r&   r   r   r   rm   r   r   )r   r   r   s      r   test_nd_nnzr     sK     ))


)C
ucs#
>C77b&&s{{}5555r   c                    t         j                  j                  d      }t        | d|t              }|j                         j                  }|j                         }|j                  | d d d   k(  sJ t        ||j                                y )Nr   r   r   r?   )
r   r&   r   r   r   r   rq   r{   r   r   )r   r   r   r   	trans_arrs        r   test_nd_transposer     so     ))


)C
ucs#
>CkkmooGI??eDbDk))))++-.r   )r   	axis_perm))r   rt   )r!   rw   ))r   r   r   r   r    r   )r   r   r   r    r   r   c                    t         j                  j                  d      }t        | d|t              }|j                  |      }t        |j                         t        j
                  |j                         |             y )Nr   r   r   ru   )r   r&   r   r   r   r{   r   r   )r   r   r   r   r   s        r   test_nd_transpose_with_axisr     s\     ))


)C
ucs#
>C9-I""$bll3;;=y&QRr   c                  @   t        j                  t        d      5  t        g d      j	                  d       d d d        t        j                  t        d      5  t        g dg dg      j	                  d	       d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)
Nrx   r:   r`   rw   ru   ry   rc   rd   rz   )r@   rA   rB   r   r{   rC   r   r   %test_transpose_with_inconsistent_axisr     s    	z)M	N 4)&&F&34 
z)E	F A9i()333@A A4 4A As   B"BBBc            
         t        g dg dg dg dff      } | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  g dg dgg dg dgg dg d	gg             | j                          | j                  dk(  sJ | j                         dk(  sJ t        | j	                         t        j                  g dg dgg dg dgg dg d	gg             g dg dg dg d
g df}t        g d|f      }|j                  dk(  sJ |j                         dk(  sJ |j                          |j                  dk(  sJ |j                         dk(  sJ t        |j                  t        j                  g              t        |j                  t        j                  g              t        |j                  g g g g g f       y )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   rm   r   r   r   r   r%   r   r   r   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   rF   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   z6(Incompatible|inconsistent) shapes|cannot be broadcastr:   r   r&   r   r   r   r@   rA   rB   r  r  r   arr_aarr_bs        r   +test_nd_add_sparse_with_inconsistent_shapesr  .  sf     ))


)C'CSDE'CSDE	zU
W      !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)Nr   r   r   r9   r:   r  r  s        r   +test_nd_sub_sparse_with_inconsistent_shapesr"  _  sc     ))


)C'CSDE'CSDE	z)>	?   r  )	)r   r   r   r    r    rO   rt   ))r   r   r   r   r#   )r#   )r   r   r   r   rt   )r   r    r   r   r   r   r   )r   r    r$  r)  )r    r   )r   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   )	r+  r,  r   r  r  r  r  r   rF   s	            r   test_nd_matmul_vectorr/  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   )r0  r=   )r'  r   r   ))r   r   r   r   )r   r    r   r   r   ))r   r   r   r   r   )r   r   r   r   )r<   )r   r   r   )r   )r    r   r   r   r   )r<   r1  r*  )
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   r.  )	r2  r3  r   r  r  r  r  r   rF   s	            r   test_nd_matmulr8    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   r6  )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   r@   rA   rB   r   )r   r  r  sp_zs       r   .test_nd_matmul_sparse_with_inconsistent_arraysr;    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   rF   s       r   test_dot_1d_1dr@    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   r=  r   r   r   )r>  r?  rF   r   s       r   test_dot_sparse_scalarrB    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   r@   rA   rB   r=  )r  r  s     r   !test_dot_with_inconsistent_shapesrD    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   r@   rA   rP   r=  	tensordot)r  s    r   test_matmul_dot_not_implementedrG    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   r(  )r   r   r   r   r   )r$  r   r   r    r   )rJ  )r   r   ))r   r    rK  )rH  r   r   r   r   )r   r#   r   )r   r    r   r   r   )r   r    r   r   rL  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 r5  )	r   r&   r   r   r   r=  r   r   r   )r  r  r   r  r  r   rF   s          r   test_dot_ndrP    s    
))


)C#CsKE#CsKE
&&%--/
2C
))EMMO
$Cc
))D)
*Cc
))E
C$r   rH  rI  r   rJ  r   r   r$  rK  rN  rL  rM  )r   r    r   r#   r   r   )r   r   r   ))r   r    r   r   r   )r   r   r   r   r#   r   ))r   r    r   )r   r   r   r   )r   r   r   )r  r  rv   c                 R   t         j                  j                  d      }t        | d|t              }t        |d|t              }t        j
                  |j                         |j                         |      }|j                  |j                         |      }t        ||       |j                  t        |j                               |      }t        ||       |j                  ||      }t        |      t        u rt        |j                         |       y t        ||       y )Nr   r   r6  ru   )r   r&   r   r   r   rF  r   r   r   r   r   )r  r  rv   r   r  r  r   rF   s           r   test_tensordotrR    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   r6  )r   r   r   r   z*sizes of the corresponding axes must matchr:   ru   )r    r   r   r   r   )r   r   r   r   )r   r   r   r   r   z,axes lists/tuples must be of the same length)	r   r&   r   r   r   r@   rA   rB   rF  )r   r  r  rv   s       r    test_tensordot_with_invalid_argsrT    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    )r=   )r   r   ))r   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                  |j                         |      }t        |j                         |       y r5  )	r   r&   r   r   r   _broadcast_tobroadcast_tor   r   )rU  rV  r   r   rF   r   s         r   test_broadcast_torZ  +  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   r6  r   )r   r&   r   r   r   r   prodr   rW   ranger   r   r   )
r   r   r  r  
num_slicesreshaped_arrayimatricesr   rF   s
             r   test_block_diagrb  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 r5  )	r   r&   r   r   r   r	   r   r   r   )r   r   r  rF   s       r   test_extract_block_diagrd  L  sO     ))


)CsCHD
k$/
7C/r   )Pnumpyr   numpy.testingr   r@   scipy.linalgr   scipy.sparser   r   _coor   r	   r   r1   r7   rD   rG   rK   rM   rR   r^   rk   ro   rr   r|   r   r   markparametrizer   r   ziptupler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r   r"  mat_vec_shapesr/  mat_mat_shapesr8  r;  r@  rB  rD  rG  
dot_shapesrP  tensordot_shapes_and_axesrR  rT  rZ  rb  rd  rC   r   r   <module>rr     sh    &  # 0 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?0r   