
    -i=]                    0	   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr	  SSK
rSSK
JrJrJrJrJrJrJrJrJrJrJrJrJr  SSKrSSKJrJrJrJrJrJ r J!r!  SSK"J#r#  SSK$J%r%  SSK&r'SSK(J)r)  SSK(J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<  SS	K=J>r>  SS
K?J@r@JArAJBrBJCrCJDrD  SSKEJFrFJGrGJHrH  SSKIJJrJ  S\R                  ;   rLS|S jrMS rN\O" S/5      rPS rQ\!" 5       rR\RR                  \#5          S}S jrTS rU " S S5      rV " S S5      rW " S S5      rX " S S5      rY " S S5      rZ " S S 5      r[ " S! S"5      r\\R                  R                   " S# S$5      5       r_ " S% S&5      r` " S' S(5      ra " S) S*5      rb\R                  S+ 5       rd " S, S-5      re " S. S/5      rf " S0 S15      rg " S2 S35      rh " S4 S55      ri " S6 S75      rjS~S8 jrk    SS9 jrl " S: S;\l" 5       5      rm\mR                  5          " S< S=\Y\m5      ro\oR                  5          " S> S?\l" 5       5      rp\pR                  5          " S@ SA\Y\p5      rq\qR                  5          " SB SC\l" SSSD95      rr " SE SF\Y\r5      rs\rR                  5         \sR                  5          " SG SH\l" SSI95      rt " SJ SK\Y\t5      ru\tR                  5         \uR                  5          " SL SM\l" SSSSSSN95      rv " SO SP\Y\v5      rw\vR                  5         \wR                  5          " SQ SR\l" SSSSSSSSS95      rx " ST SU\Y\x5      ry\xR                  5         \yR                  5          " SV SW\l" SSSSSSSX95      rz " SY SZ\Y\z5      r{\zR                  5         \{R                  5         S[ r| " S\ S]5      r} " S^ S_\}5      r~ " S` Sa\~5      r " Sb Sc\\m5      r " Sd Se\\o5      r " Sf Sg\\p5      r " Sh Si\\q5      r " Sj Sk\~\z5      r " Sl Sm\\{5      r " Sn So\}\v5      r " Sp Sq\\w5      rSr r " Ss St5      r " Su Sv5      r\R                  R                  \R                  GR                   " Sw Sx\5      5       5       r\R                  R                   " Sy Sz\5      5       rS{ rg)zTest functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

    N)raises)arangezerosarraydotasarrayvstackndarray	transposediagkroninf	conjugateint8)assert_equalassert_array_equalassert_array_almost_equalassert_almost_equalassert_assert_allclosesuppress_warnings)ComplexWarning)GenericAlias)
csc_matrix
csr_matrix
dok_matrix
coo_matrix
lil_matrix
dia_matrix
bsr_matrix	csc_array	csr_array	dok_array	coo_array	lil_array	dia_array	bsr_arrayeyeissparseSparseEfficiencyWarningsparrayspmatrix)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminv)	decoratorzgoogle.colabc                 8    Ub  UOU < SU< 3n[        X;   US9  g )Nz not found in )msg)r   )member
collectionr8   messages       O/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_base.py	assert_inr=   5   s%    _cVJnZN*SGF g.    c                 `    [        U R                  UR                  :H  5        [        X40 UD6  g N)r   dtyper   )xykwargss      r<   assert_array_equal_dtyperE   :   s$    AGGqwwq&v&r>   dokc                     S nU" U 5       H0  nU" U5       H!  n[         R                  " X45      (       d  M       g   M2     g)Nc                     / nU R                   R                  5        HF  n[        U[        R                  [        R
                  -  5      (       d  M5  UR                  U5        MH     U$ r@   )__dict__values
isinstancenpr
   genericappend)rB   arraysas      r<   _underlying_arrays3sparse_may_share_memory.<locals>._underlying_arraysD   sM     ""$A!RZZ"**455a  % r>   TF)rL   may_share_memory)ABrQ   rP   bs        r<   sparse_may_share_memoryrW   A   s@      "#A&A""1(( ' # r>   Fc                 B  ^ ^^^^^ T c  [         R                  " S5      m O[         R                  " T 5      m U(       a  S
S jmOATb	  S
U4S jjmO5U(       a&  [         R                  R                  SS9mS
U4S jjmOS
U 4S jjmTb  U4S jm[        UUU4S	 j5       nU$ )zv
Monkeypatch the maxval threshold at which scipy.sparse switches to
64-bit index arrays, or make it (pseudo-)random.


   c                 6   [        XU5      n[        [        R                  " U5      R                  [        R                  " [        R
                  5      R                  5        [        U[        R
                  :H  =(       d    U[        R                  :H  5        U$ r@   )r0   r   rL   iinfomaxint32r   intc)rO   maxvalcheck_contentstps       r<   new_get_index_dtype4with_64bit_maxval_limit.<locals>.new_get_index_dtypeh   s[     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir>   c                    > T$ r@    )rO   r_   r`   fixed_dtypes      r<   rb   rc   n   s	    r>     )seedc                 h   > [         R                  [         R                  4TR                  S5         $ )N   )rL   r]   int64randint)rO   r_   r`   counters      r<   rb   rc   s   s$    HHbhh'(:;;r>   c                   > [         R                  nUb  UT:  a  [         R                  nU  H  n[         R                  " U5      nUR                  [         R                  :  d  M9  U(       au  UR
                  S:X  a  MR  [         R                  " UR                  [         R                  5      (       a/  UR                  5       nUR                  5       nUT* :  a  UT::  a  M  [         R                  nM     U$ Nr   )
rL   r]   rk   r   rA   size
issubdtypeintegerr\   min)rO   r_   r`   rA   arrminvalmaxval_limits         r<   rb   rc   v   s    HHE!L(HHEjjo99rxx'%88q=$]]399bjjAA%(WWYF%(WWYF%,66\;Q (HHE  Lr>   c                    > U R                  5       T:  a  [        S5      eU R                  [        R                  5      $ )Nzdowncast limited)r\   AssertionErrorastyperL   intp)rt   downcast_maxvals    r<   new_downcast_intp_index8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s0    wwy?*$%788::bgg&&r>   c           
      \  > / n[         R                  R                  [         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  /
n U H`  nUR                  US[        USS 5      45        [        UST
5        Tc  M4  UR                  US[        USS 5      45        [        UST	5        Mb     U " U0 UD6U H  u  pVnUc  M  [        XVU5        M     $ ! U H  u  pVnUc  M  [        XVU5        M     f = f)Nr0   downcast_intp_index)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_constructrN   getattrsetattr)funcrP   kwbackupmodulesmodnameoldfuncr{   r|   rb   s           r<   deco%with_64bit_maxval_limit.<locals>.deco   sS   <<$$ell&7&79J9J<<$$ell&7&79J9J<<$$ell&;&;<<++U\\-D-DF	0s$5&s,=tDF G.0CD".MM3(=#*30Et#L#N OC!68OP  >b>&,"7&Cw/ '-f"7&Cw/ '-s   2F 77F 
F+F+)re   NF)rL   rk   randomRandomStater6   )	rv   r   rf   r{   assert_32bitr   rm   r|   rb   s	   ` ``  @@@r<   with_64bit_maxval_limitr   Y   s     xx| xx-	
 
	 	 		))''T'2	< 	<	* "	'
 0 0* Kr>   c                     [        U [        R                  5      (       d  [        U 5      (       a  U $ U R	                  5       $ r@   )rK   rL   r
   r/   toarray)rP   s    r<   r   r      s,    !RZZ  LOO99;r>   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)BinopTester   c                     gNmatrix on the rightre   selfmats     r<   __add__BinopTester.__add__       $r>   c                     gr   re   r   s     r<   __mul__BinopTester.__mul__   r   r>   c                     gr   re   r   s     r<   __sub__BinopTester.__sub__   r   r>   c                     gNmatrix on the leftre   r   s     r<   __radd__BinopTester.__radd__       #r>   c                     gr   re   r   s     r<   __rmul__BinopTester.__rmul__   r   r>   c                     gr   re   r   s     r<   __rsub__BinopTester.__rsub__   r   r>   c                     gr   re   r   s     r<   
__matmul__BinopTester.__matmul__   r   r>   c                     gr   re   r   s     r<   __rmatmul__BinopTester.__rmatmul__   r   r>   re   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__re   r>   r<   r   r      s*    %%%$$$%$r>   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)BinopTester_with_shape   c                     Xl         g r@   _shape)r   shapes     r<   __init__BinopTester_with_shape.__init__   s    r>   c                     U R                   $ r@   r   r   s    r<   r   BinopTester_with_shape.shape   s    {{r>   c                 ,    [        U R                  5      $ r@   )lenr   r   s    r<   ndimBinopTester_with_shape.ndim   s    4;;r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__add__   r   r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__mul__   r   r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__sub__   r   r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__radd__   r   r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__rmul__   r   r>   c                     gr   re   r   s     r<   r   BinopTester_with_shape.__rsub__   r   r>   c                     gr   re   r   s     r<   r   !BinopTester_with_shape.__matmul__   r   r>   c                     gr   re   r   s     r<   r   "BinopTester_with_shape.__rmatmul__   r   r>   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   re   r>   r<   r   r      s9     %%%$$$%$r>   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ComparisonTester   c                     g)Neqre   r   others     r<   __eq__ComparisonTester.__eq__       r>   c                     g)Nnere   r   s     r<   __ne__ComparisonTester.__ne__   r   r>   c                     g)Nltre   r   s     r<   __lt__ComparisonTester.__lt__   r   r>   c                     g)Nlere   r   s     r<   __le__ComparisonTester.__le__   r   r>   c                     g)Ngtre   r   s     r<   __gt__ComparisonTester.__gt__   r   r>   c                     g)Ngere   r   s     r<   __ge__ComparisonTester.__ge__   r   r>   re   N)r   r   r   r   r   r   r   r   r   r  r   re   r>   r<   r   r      s     r>   r   c                   V    \ rS rSrSr\r\r\	r
\r\r\r\r\" \5      rS rS rS rSrg)_MatrixMixini	  z8mixin to easily allow tests of both sparray and spmatrixc                    [        U R                  R                  S5      R                  5       U R                  S/S S 24   5        [        U R                  R                  S5      R                  5       U R                  S/S S 24   5        g N   )r   datspgetrowr   datr   s    r<   test_getrow_MatrixMixin.test_getrow  sd    4::,,Q/779488QCF;KL4::,,R088:DHHbT1W<MNr>   c                    [        U R                  R                  S5      R                  5       U R                  S S 2S/4   5        [        U R                  R                  S5      R                  5       U R                  S S 2S/4   5        g r  )r   r
  getcolr   r  r   s    r<   test_getcol_MatrixMixin.test_getcol  sd    4::,,Q/779488AsF;KL4::,,R088:DHHQW<MNr>   c                    U R                  [        SSS9R                  SS5      5      n[        UR	                  5       R
                  [        R
                  " S5      5        [        UR	                  5       R                  UR                  5        [        UR                  S5      R	                  5       R
                  [        R
                  " S5      5        [        UR                  S	5      R	                  5       R
                  [        R
                  " S	5      5        UR	                  5       nUR	                  5       n[        X#L 5        g )
N   r]   rA   rj      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyperA   rL   formatry   r   )r   rT   rU   Cs       r<   test_asfptype_MatrixMixin.test_asfptype  s    NN6!'2::1Q?@QZZ\''))<=QZZ\((!((3QXXg&//177)9LMQXXl+446<<bhh|>TUJJLJJLr>   re   N)r   r   r   r   __doc__r    bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr1   asdenser  r  r   r   re   r>   r<   r  r  	  sC    BMMMMMMM8$GOO
r>   r  c                      \ rS rSrSr\r\r\	r
\r\r\r\r\r\r\S 5       rS rS rS rS rS rS	 rS
 rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1\2Rf                  Rh                  S 5       r5S r6S r7S  r8S! r9S" r:S# r;S$ r<S% r=S& r>S' r?S( r@S) rAS* rBS+ rCS, rDS- rE\FS. 5       rG\FS/ 5       rH\FS0 5       rI\FS1 5       rJS2 rKS3 rL\FS4 5       rM\FS5 5       rNS6 rOS7 rPS8 rQS9 rRS: rSS; rTS< rUS= rVS> rWS? rXS@ rYSA rZSB r[SC r\SD r]SE r^SF r_SG r`SH raSI rbSJ rcSK rdSL reSM rfSN rgSO rhSP riSQ rjSR rkSS rlST rmSU rnSV roSW rpSX rqSY rrSZ rsS[ rtS\ ruS]rvg^)__TestCommoni+  z6test common functionality shared by all sparse formatsc                    [        / SQ/ SQ/ SQ/S5      U l        U R                  U R                  5      U l        [	        [
        5      R                  U R                  5      U l        0 U l	        0 U l
        U R                   Hb  nU R                  R                  U5      U R                  U'   U R                  U R                  R                  U5      5      U R                  U'   Md     [        U R                  U R                  [        R                     5        [        U R                  R                  5       U R                  [        R                     R                  5       5        [!        U R                  ["        5      U l        g )N)r  r   r   rj   )r  r   r  r   )r   rj   r   r   d)r   r  r  r
  setr.   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesry   r   rL   r  r   rK   r+   is_array_test)clsrA   s     r<   
init_class_TestCommon.init_class8  s    |\BCHMM#''*	
 !!1288I''E$'GGNN5$9CNN5!&)mmCGGNN54I&JCU# ( 	SWWcnnRZZ89SYY&&(%%bjj199;	= 'syy':r>   c                    ^  U 4S jn[        T [        5      (       a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                    > TR                   U    n[        [        [        U5        [	        TR                  S//5      5        [	        TR                  S//5      (       + 5        g )Nr  r   )r5  assert_raises
ValueErrorboolr   r  )rA   r
  r   s     r<   check$_TestCommon.test_bool.<locals>.checkQ  sL    %%e,E*dE2DNNQC5)*u--.r>   z%Cannot create a rank <= 2 DOK matrix.)rK   TestDOKpytestskipr3  r   r?  rA   s   `  r<   	test_bool_TestCommon.test_boolP  s;    	/ dG$$KK?@((E%L )r>   c                     [        SS//5      nU R                  U5      n[        S5       H  nX"-   nX-   nM     [        XR	                  5       5        g )NTFrY   )r   r  ranger   r   )r   r  r
  _s       r<   test_bool_rollover_TestCommon.test_bool_rollover]  sN     dE]O$s#rAME)C  	30r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 b  > T	R                   U    nT	R                  U    nUR                  5       nSUS S 2S4'   T	R                  U5      nT	R	                  U5      nT	R                  U5      nT	R                  U5      nT	R                  U5      n[        X:H  X$:H  R                  5       5        [        X:H  XT:H  R                  5       5        [        X:H  Xd:H  R                  5       5        [        X:H  Xt:H  R                  5       5        [        X:H  X:H  R                  5       5        [        X:H  XA:H  5        [        US:H  US:H  R                  5       5        [        US:H  US:H  R                  5       5        [        U[        R                  :H  U[        R                  :H  R                  5       5        g Nr   r  )r4  r5  copyr  r#  r&  r%  r)  rE   r   rL   nan)
rA   r  r
  dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r<   r?  "_TestCommon.test_eq.<locals>.checkl  sm    //%(C%%e,E88:DD1I^^D)F'',F'',F'',F'',F %S[5?2K2K2MN$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S]FMB$SAX
/C/C/EF$SAX
/C/C/EF$SBFF]&+rvvo%>%>%@Br>   bsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.	r   filterr*   sup_complexr
  r  rB  rC  r3  r   supr?  rA   s   `   r<   test_eq_TestCommon.test_eqh  sm    !

*+			B 
 
	B4 ::$99KKRS((E%L )r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                   > T	R                   U    nT	R                  U    nUR                  5       nSUS S 2S4'   T	R                  U5      nT	R	                  U5      nT	R                  U5      nT	R                  U5      nT	R                  U5      n[        X:g  X$:g  R                  5       5        [        X:g  XT:g  R                  5       5        [        X:g  Xd:g  R                  5       5        [        X:g  Xt:g  R                  5       5        [        X:g  X:g  R                  5       5        [        X:g  XA:g  5        [        US:g  US:g  R                  5       5        [        US:g  US:g  R                  5       5        [        SU:g  SU:g  R                  5       5        [        SU:g  SU:g  R                  5       5        [        U[        R                  :g  U[        R                  :g  R                  5       5        g rN  )r4  r5  rO  r  r#  r%  r&  r)  rE   r   rL   rP  )
rA   r  r
  rQ  rR  rS  rU  rT  rV  r   s
            r<   r?  "_TestCommon.test_ne.<locals>.check  s    //%(C%%e,E88:DD1I^^D)F'',F'',F'',F'',F %S[5?2K2K2MN$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S]FMB$SAX
/C/C/EF$SAX
/C/C/EF$Q#XU
/C/C/EF$Q#XU
/C/C/EF$SBFF]&+rvvo%>%>%@Br>   rX  r\  r]  r`  s   `   r<   test_ne_TestCommon.test_ne  sm    !

*+			B 
 
	B8 ::$99KKRS((E%L )r>   c                    U R                   R                  S;  a  [        R                  " S5        U R                   U R                   R                  :H  SL d   eU R                   U R                   R                  :g  SL d   eg )NrX  r\  FT)r
  r  rB  rC  Tr   s    r<   test_eq_ne_different_shapes'_TestCommon.test_eq_ne_different_shapes  s`    ::$99KKRS

djjll*u444

djjll*t333r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 N  > TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      nUR	                  [
        5      nSUS S 2S4'   TR                  U5      nTR                  U5      nTR                  U5      nTR                  U5      n	TR                  U5      n
[        X:  X$:  R                  5       5        [        XS:  Xd:  R                  5       5        [        X:  Xt:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X1:  XG:  R                  5       5        [        X1:  XH:  R                  5       5        [        X1:  XI:  R                  5       5        [        X1:  XJ:  R                  5       5        [        X:  X#:  5        [        XS:  Xc:  5        S HU  n[        R                  " U5      n[        X+:  R                  5       X:  5        [        X:  R                  5       X:  5        MW     [        R                  " SS9   [        U[        R                  :  R                  5       U[        R                  :  5        S S S 5        TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      n[        X:  X#:  5        g ! , (       d  f       Ng= fNr         ?      ?)rj   r  r   r	  ignoreinvalidr4  r5  rO  r  ry   complexr#  r%  r&  r)  rE   r   rL   rk   errstaterP  rA   r  r
  rQ  rR  
datcomplexdatspcomplexrS  rU  rT  rV  valr   s               r<   r?  "_TestCommon.test_lt.<locals>.check  s    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %SZ%.1I1I1KL$Z%6&2&;%D%D%FH %SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$SZ>$Z%68KL(hhsm(%+)>)>)@#)L(#+)>)>)@#)L )
 X.(%"&&.)A)A)C),rvv7 /
 //%(C%%e,E88:DD1I^^D)F %S\5<@ /.   8=L
L$rX  r\  r]  r`  s   `   r<   test_lt_TestCommon.test_lt  sn    !

*+		2	A 
 
2	Ah ::$99KKRS((E%L )r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 N  > TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      nUR	                  [
        5      nSUS S 2S4'   TR                  U5      nTR                  U5      nTR                  U5      nTR                  U5      n	TR                  U5      n
[        X:  X$:  R                  5       5        [        XS:  Xd:  R                  5       5        [        X:  Xt:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X1:  XG:  R                  5       5        [        X1:  XH:  R                  5       5        [        X1:  XI:  R                  5       5        [        X1:  XJ:  R                  5       5        [        X:  X#:  5        [        XS:  Xc:  5        S HU  n[        R                  " U5      n[        X+:  R                  5       X:  5        [        X:  R                  5       X:  5        MW     [        R                  " SS9   [        U[        R                  :  R                  5       U[        R                  :  5        S S S 5        TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      n[        X:  X#:  5        g ! , (       d  f       Ng= fro  ru  rx  s               r<   r?  "_TestCommon.test_gt.<locals>.check  s    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %SZ%.1I1I1KL$Z%6&2&;%D%D%FH %SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$SZ>$Z%68KL(hhsm(%+)>)>)@#)L(#+)>)>)@#)L )
 X.(%"&&.)A)A)C),rvv7 /
 //%(C%%e,E88:DD1I^^D)F %S\5<@ /.r}  rX  r\  r]  r`  s   `   r<   test_gt_TestCommon.test_gt  sn    !

*+		1	A 
 
1	Af ::$99KKRS((E%L )r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 z  > TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      nUR	                  [
        5      nSUS S 2S4'   TR                  U5      nTR                  U5      nTR                  U5      nTR                  U5      n	TR                  U5      n
[        X:*  X$:*  R                  5       5        [        XS:*  Xd:*  R                  5       5        [        Xt:*  R                  5       X:*  5        [        X:*  R                  5       X:*  5        [        X:*  R                  5       X:*  5        [        X:*  R                  5       X:*  5        [        XG:*  R                  5       X1:*  5        [        XH:*  R                  5       X1:*  5        [        XI:*  R                  5       X1:*  5        [        XJ:*  R                  5       X1:*  5        [        X#:*  X:*  5        [        Xc:*  XS:*  5        S HU  n[        R                  " U5      n[        X+:*  R                  5       X:*  5        [        X:*  R                  5       X:*  5        MW     TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      n[        X:*  X#:*  5        g Nr   rp  )rj   r  r	  rq  r4  r5  rO  r  ry   rv  r#  r%  r&  r)  rE   r   rL   rk   rx  s               r<   r?  "_TestCommon.test_le.<locals>.check<  c    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %S[5?2K2K2MN$Z%7&2&<%E%E%GI %f&6%?%?%A3;O$f&6%?%?%A3;O$f&6%?%?%A3;O$f&6%?%?%A3;O$f&6%?%?%A4;O$f&6%?%?%A4;O$f&6%?%?%A4;O$f&6%?%?%A4;O$U]CK@$\%9:;MN%hhsm(%,)?)?)A3:N(#,)?)?)A3:N & //%(C%%e,E88:DD1I^^D)F %S]EMBr>   rX  r\  r]  r`  s   `   r<   test_le_TestCommon.test_le8  n    !

*+		-	C 
 
-	C^ ::$99KKRS((E%L )r>   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 z  > TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      nUR	                  [
        5      nSUS S 2S4'   TR                  U5      nTR                  U5      nTR                  U5      nTR                  U5      n	TR                  U5      n
[        X:  X$:  R                  5       5        [        XS:  Xd:  R                  5       5        [        Xt:  R                  5       X:  5        [        X:  R                  5       X:  5        [        X:  R                  5       X:  5        [        X:  R                  5       X:  5        [        XG:  R                  5       X1:  5        [        XH:  R                  5       X1:  5        [        XI:  R                  5       X1:  5        [        XJ:  R                  5       X1:  5        [        X#:  X:  5        [        Xc:  XS:  5        S HU  n[        R                  " U5      n[        X+:  R                  5       X:  5        [        X:  R                  5       X:  5        MW     TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      n[        X:  X#:  5        g r  r  rx  s               r<   r?  "_TestCommon.test_ge.<locals>.checkv  r  r>   rX  r\  r]  r`  s   `   r<   test_ge_TestCommon.test_ger  r  r>   c                    [        U R                  S5      R                  5       [        S5      5        [        U R                  S5      R                  S5        [        U R                  S5      R                  5       S5        U R                  R                  S;   a4  [        U R                  S5      R                  SS9[        / SQ5      5        g g )Nr  r  r   coor[  rZ  lilaxisr   r   r   )	r   r  r   r   nnzcount_nonzeror
  r  r   r   s    r<   
test_empty_TestCommon.test_empty  s    T^^F+335uV}ET^^F+//3T^^F+99;Q?:: <</==1=EuYGWX =r>   c                    U R                   R                  S;   nU(       a  / SQOS /nU R                   U R                   R                  4 HH  nU H?  n[        R                  " UR                  5       US9n[        UR	                  US9U5        MA     MJ     U(       d1  [        [        SS9   U R                   R	                  SS9  S S S 5        g g ! , (       d  f       g = f)Nr  )Nr   r  r	  rq  r  znot implemented .* formatmatchr   )	r
  r  rj  rL   r  r   r   r<  NotImplementedError)r   axis_supportaxesrT   axexpecteds         r<   test_count_nonzero_TestCommon.test_count_nonzero  s    zz((,HH'3#$**djjll+A++AIIKbAQ__"_5x@  ,
 2:UV

((a(0 WV VVs   +C
Cc                     [        [        U R                  S5        [        [        U R                  S5        [        [        U R                  S5        g )Nr	  r  r  r	  r	  r	  )r<  r=  r  r   s    r<   test_invalid_shapes_TestCommon.test_invalid_shapes  s2    j$..&9j$..&9j$..':r>   c                 `   U R                  / SQ/ SQ/ SQ/5      nUR                  S:X  a  SOUR                  S:X  a  SOSn[        UR                     u  p4U R                  (       a  S	OS
nSU SU SUR                   SUR
                   SU SUR                   S3n[        U5      U:X  d   eg )Nr  r   r   r  r   r   rq  dia(1 diagonals) rY  (blocksize=1x1)  r   r2   < sparse  of dtype ''
	with  stored elements 
and shape >)r  r  r-   r6  rA   r  r   reprr   r
  extrarI  fmt
sparse_clsr  s          r<   	test_repr_TestCommon.test_repr  s    	9jAB % 5',||u'<# 	
 %,,' $ 2 2W
uHZLEKK= Aii[ 1%
5;;-qR 	 E{h&&&r>   c                 4   U R                  [        R                  " S5      R                  SS5      5      nUR                  S:X  d   e[        [        U5      R                  S5      5      S:X  d   e[        R                  " S5      R                  SS5      nU R                  U5      nUR                  S:X  a  S	OUR                  nU R                  US
S9n[        [        U5      R                  S5      5      US-   :X  d   e[        [        U5      R                  S5      5      S:X  d   eU R                  USSSSS9nU R                  USSSSS9n[        R                  " [        SS9   U R                  USSSS5        S S S 5        g ! , (       d  f       g = f)NK         2   
6   r  r     r  )maxprintrY   )r  r  iF   )r   rA   rO  r  z'positional argument|unpack non-iterabler  )r  rL   r   r  r  r   strsplitr  r  rB  r   	TypeError)r   r
  r  	nnz_small	datsp_mp6s        r<   test_str_maxprint_TestCommon.test_str_maxprint  sT   ryy}44Q;<~~###3u:##D)*f444iim##Aa(s#,,%/BUYY	NN3N3	3u:##D)*i!m;;;3y>''-.%777 s&%RSTsFCC]]9,UVNN3UA6 WVVs   *F		
Fc                    U R                  / SQ/ SQ/ SQ/5      nUR                  S:w  a  g UR                  S:X  a  SOUR                  S:X  a  SOS	n[        UR                     u  p4U R                  (       a  S
OSnSU SU SUR
                   SUR                   SU SUR                   S3n[        U5      U:X  d   eg )Nr  r  r  rj   r  r  rY  r  r  r   r2   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r  r  r  r-   r6  rA   r   r  r  s          r<   test_str_TestCommon.test_str  s    	9jAB99> % 5',||u'<# 	
 %,,' $ 2 2W
uHZLEKK= Aii[ 1%
5;;- P 	 5zX%%%r>   c                    Sn[         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      [         R                  " S5      4 H  nU R                  XS9nX3-   nSU-  nX3R                  5       -  nX3R	                  5       -  nX3R                  5       -  nX4XVXx4 Hv  n	[        U	R                  5       UR                  5       UR                  5       -  5        [        U	R                  U5        [        U	R                  5       R                  U5        Mx     M     g )	Nr  r  r]   r  r  	complex64r  r  rj   )rL   rA   r  tocsctocsrtocoor   r   )
r   r   mytyperP   rV   cr/  efms
             r<   test_empty_arithmetic!_TestCommon.test_empty_arithmetic  s    xx("((9*=#RXXk%:&(F u3AAAAGGIAGGIAGGIA!a]QYY[!))+aiik*ABQWWV,QYY[..v6	 #(r>   c                     [        / SQ/ SQ/ SQ/ SQ/S5      n[        [        U5      [        U R                  U5      5      R	                  5       5        g )Nr	  r      r   r   r  r   r  r/  )r   r   absr  r   r   rT   s     r<   test_abs_TestCommon.test_abs  s<    ;
J	BCHSVS!23;;=>r>   c                     Sn[        SS/SS//S5      n[        [        R                  " X!S9[	        U R                  U5      US9R                  5       5        g )	Nr  ggQ?g     @1@gQr/  )decimals)ndigits)r   r   rL   aroundroundr  r   )r   decimalrT   s      r<   
test_round_TestCommon.test_round  sP    E4=5%.137RYYq34>>!,g>FFH	Jr>   c                    [        / SQ/ SQ/ SQ/S5      n[        [        R                  " US5      U R	                  U5      R                  S5      R                  5       5        [        [        U R	                  U5      R                  U5        g )N)r  rq  r	  r   r  rj   r  r  r/  rj   )r   r   rL   powerr  r   r<  r  r  s     r<   test_elementwise_power"_TestCommon.test_elementwise_power  sd    <Y7=RXXa^T^^A%6%<%<Q%?%G%G%IJ 	)4>>!+<+B+BAFr>   c                     [        / SQ/ SQ/ SQ/ SQ/S5      n[        U* U R                  U5      * R                  5       5        [        / SQ/ SQ/5      n[	        [
        U R                  U5      R                  5        g )Nr  r  r  r  r/  )TFF)FFT)r   r   r  r   r<  r  __neg__r  s     r<   test_neg_TestCommon.test_neg   se    ;
J	BCHaR4>>!,,5578 ')=>?)4>>!+<+D+DEr>   c                     [        SS//5      nU R                  U5      n[        UR                  R	                  5       UR                  5        g N      ?      @y       @      )r   r  r   realr   r   DrT   s      r<   	test_real_TestCommon.test_real(  ;    FF#$%NN1QVV^^%qvv.r>   c                     [        SS//5      nU R                  U5      n[        UR                  R	                  5       UR                  5        g r  )r   r  r   imagr   r  s      r<   	test_imag_TestCommon.test_imag-  r  r>   c           
         / nUR                  / SQ/5        UR                  S/S/S//5        UR                  SS/SS/SS//5        UR                  / SQ/ SQ/ SQ/5        UR                  SS/SS//5        UR                  [        US   SS//5      5        UR                  [        US   S/S//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   / S
Q/5      5        U H  n[        U5      R                  u  p4U R	                  U5      n[        U* S-
  US-   5       H#  n[        UR                  US9[        X&S95        M%     [        UR                  SS9[        USS95        [        UR                  SS9[        USS95        M     [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  S5      [        R                  " S5      5        g )Nr  r   rj   r  r   rj   r  r   r   r  )r   r   rj   r   r  r   r  r  rj   r  r  krY   i)(   i?  r  r   r   )r  r   r   r  )rN   r   r   r   r  rH  r   diagonalr   rL   r   empty)r   matsr  rowscols
sparse_matr  s          r<   test_diagonal_TestCommon.test_diagonal2  sg   WIaS!aSM"aUAa5!A'(WWW-.aUAa5M"Da1Q%)*Da1#qc+,Da1Q%1/0Da1Q%1/0Da1Q%1/0Da)-.AqJD*JD57DF+Z00105tA|D , ,,r,2DbMB,,s,3T!s^D  	T^^K099;RXXb\J 	T^^F+446DT^^G,557!ET^^F+44R8"((1+Fr>   c                    [         R                  " / SQ/ SQ/ SQ/5      nU R                  U5      n[        SS5       H)  n[	        UR                  US9UR                  US95        M+     [         R                  " / SQ/ SQ/5      nU R                  U5      n[        SS5       H)  n[	        UR                  US9UR                  US95        M+     g )Nr  rj   r  r  r  r  )      	   rq  r  )offsetr	  )rL   r   r  rH  r   trace)r   rT   rU   r  s       r<   
test_trace_TestCommon.test_traceS  s    HHiI67NN1r1A*AGG1G,=>  HHi+,NN1r1A*AGG1G,=> r>   c           
         U R                  / SQ/ SQ/ SQ/ SQ/5      nS HN  nS HE  n[        UR                  X2S9R                  5       UR                  5       R                  X2S95        MG     MP     U R                  / SQ/ S	Q/ S
Q/5      nUR                  S5      n/ SQ/ SQ/n[        UR                  5       U5        UR                  S5      n[        UR                  5       U5        UR                  S5      n[        UR                  5       U5        [	        [
        UR                  S5        UR                  SS5      n[        UR                  5       U5        [	        [        UR                  SSSS9  UR                  S5      n[        XAL 5        UR                  SSS9n[        XAL5        [        UR                  S5        U R                  (       a  [	        [        SS9   SUl        S S S 5        O!SUl        [        UR                  5       U5        [	        [
        UR                  UR                  45        [	        [
        UR                  SUR                  S45        g ! , (       d  f       N]= f)N)r  r   r&  r  r  )r   r   r  )r  F))   r  )r  r/  orderr   rY   r   r   r   r   r   r   r         r  rj   r  )r   rY   r   r   r   r   )r   r   r   r5  r6  r  rj   r	  )r	  r  r  rj   r  r  )
not_an_argr  r  TrO  zhas no setter|n't set attributer  )r  r   r  r   r<  r=  r  r   r   r6  AttributeErrorrp   )r   rB   r1  srC   desireds         r<   test_reshape_TestCommon.test_reshape`  s   NNIy)YGHE'"199Q9#<#D#D#F#$99;#6#6q#6#FH (   NNM<IJIIf&(=>199;0 IIg199;0IIg199;0j!))X6 IIaO199;0iAqQ? IIfIIf4I(
 	177F+~5VW  XW AGqyy{G4 	j!))affY7j!))a^< XWs   %I&&
I4c                   ^ U4S jmU4S jn[         R                  R                  S5        / SQn[         R                  [         R                  4 H  nU H  u  pE[         R
                  " U* S-   US-
  5      nU Ht  n[         R                  " XE4US9nU R                  XE4US9n	U" XU5        [         R                  R                  U[        [        U5      S5      S9 H  n
U" XU
5        M     Mv     M     M     g )	Nc                   > [         R                  " U5      nUS:  a  [        U R                  S   U R                  S   U-
  5      nUR                  S:w  a  [        U[        U5      5      nUS U n[         R                  " SU5      n[         R                  " X"U-   5      nXXE4'   g US:  a  T" U R                  X* 5        g g rN  )rL   r   rs   r   r   r   r   rj  )rP   vr  nr  jdense_setdiags         r<   rF  =_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag  s    

1AAv
AGGAJN366Q;As1vA"1AIIaOIIaQ'!#Qacc1b) r>   c                   > S[        [        R                  " X5      5      SS4 GH#  nUS:  a*  [        R                  R	                  [        SS5      5      nO[        R                  R                  SSUS9nT" XU5        [        5        nUR                  [        S5        UR                  XB5        S S S 5        [        R                  " X5      n[        R                  " U5      R                  S:X  a  [        XdS	S
9  O/[        [        U5      [        U5      5      n[        US U US U S	S
9  [        UR                  5       U S	S
9  GM&     g ! , (       d  f       N= f)Nr	  rj   r6  r   r  r5  rp   zChanging the sparsity structuz	{msg} {r}err_msg)r   rL   r   r   choicerH  rl   r   r^  r*   setdiagr   r   r   rs   r   )	rP   rV   r  rrC  ra  r/  rD  rF  s	           r<   check_setdiag=_TestCommon.test_setdiag_comprehensive.<locals>.check_setdiag  s	    #bggam,a4q5		((q"6A		))!Ra)8AaA&&(CJJ68WXIIaO )
 GGAM::a=%%*&q[ACFCF+A&q!uae[I"199;;G' 5 )(s   (E
E	rg   )r  r  r   r  r  r  r  r  r  r  r  rI  )rL   r   rh   r   r  r   r   r  rL  rs   r   )r   rO  shapesrA   r  rD  ksr  rP   rV   k2rF  s              @r<   test_setdiag_comprehensive&_TestCommon.test_setdiag_comprehensive  s    	*	H2 			t4ggrzz*EYYr!tQqS)A!u5AvU;A!!* !ii..rCGQ.H%aB/ I   +r>   c           
         U R                  [        R                  " S5      5      nU R                  S5      n/ SQn[        5        nUR	                  [
        S5        [        [        UR                  USS9  UR                  U5        [        UR                  5       U5        UR                  USS9  [        UR                  5       [        R                  " / SQ/ S	Q/ S
Q/5      5        UR                  USS9  [        UR                  5       [        R                  " / SQ/ S	Q/ SQ/5      5        UR                  SSS9  [        UR                  5       S   S5        UR                  SSS9  [        UR                  5       S   S5        UR                  S/SS9  [        UR                  5       S   / SQ5        UR                  SS/SS9  [        UR                  5       S S / SQ/ SQ/5        S S S 5        g ! , (       d  f       g = f)Nr  r  r  )r  rj   r  Changing the sparsity structurer  r  r  )r  r  r   )r   rj   rj   r  rq  r  r   r  )r(  rj   r   rj   r(  rj   r   r   r   r   r  r   )r   r   r   r  )r  rL   r(   r   r^  r*   r<  r=  rM  r   r  r   r   )r   r  m2rJ   ra  s        r<   test_setdiag_TestCommon.test_setdiag  s   NN266!9%^^F# CJJ.0QR*aii1=IIfqzz|V4IIfI"qyy{BHHi6?6?6A -B C IIfI#qyy{BHHi6?6?6A -B C IIdaI qyy{3/3IIdbI!qyy{3/3JJsaJ rzz|A=JJ1vJ#rzz|BQ/,2>2@ A- !  s   F)G77
Hc                 @   [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR                  5       5       Vs1 s H  n[	        U5      iM     nn[        UR                  5       5       Vs1 s H  n[	        U5      iM     nn[        XE5        g s  snf s  snf Nr  r   r  r   r  r  r  )r   r  r   nonzerotupler   r   rT   AspijA_nzAsp_nzs         r<   test_nonzero_TestCommon.test_nonzero  s{    9Yy12nnQ$-aiik$:;$:bb	$:;&/&>?&>%)&>?T" <?s   B3Bc                 X   [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        [        R                  " U5      5       Vs1 s H  n[        U5      iM     nn[        [        R                  " U5      5       Vs1 s H  n[        U5      iM     nn[        XE5        g s  snf s  snf rd  )r   r  r   rL   rg  rh  r   ri  s         r<   test_numpy_nonzero_TestCommon.test_numpy_nonzero  s    9i34nnQ$-bjjm$<=$<bb	$<=&/

3&@A&@%)&@AT" >As   B"?B'c                   ^ ^	 [         R                  R                  S5        [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R	                  SS5      n[         R                  " / /5      n[         R
                  " S5      n[        R                  " SSSS9R                  5       nXX4U/m	U	U 4S	 jnT R                   H&  n[        [        T	5      5       H  nU" Xx5        M     M(     g )
Nrg   r   r  rj   r  r  r  r&  r(  r  )r  r  g{Gz?)densityc           	      F  > TR                  TU   U S9nTR                  X S9n[        R                  " SS9   [	        UR                  5       UR                  5       5        [        UR                  5       R                  UR                  5       R                  5        [        [        R                  " UR                  S S95      5        [	        UR                  S S9UR                  S S95        [        UR                  S S9R                  UR                  S S9R                  5        [	        UR                  SS9UR                  SS95        [        UR                  SS9R                  UR                  SS9R                  5        [	        UR                  SS9UR                  SS95        [        UR                  SS9R                  UR                  SS9R                  5        [	        UR                  SS9UR                  SS95        [        UR                  SS9R                  UR                  SS9R                  5        [	        UR                  SS9UR                  SS95        [        UR                  SS9R                  UR                  SS9R                  5        [	        UR                  S	S9UR                  S	S95        [        UR                  S	S9R                  UR                  S	S9R                  5        S S S 5        g ! , (       d  f       g = f)
Nr  rr  )overr  r   r  rq  r	  r   r  )
r+  r  rL   rw  r   sumr   rA   r   isscalar)rA   rE  r  r
  matricesr   s       r<   r?  #_TestCommon.test_sum.<locals>.check  sW   ,,x{%,8CNN3N4E(+)#'')UYY[ASWWY__eiik.?.?@EII4I$89:)#''t'*<eiiTi>RSSWW$W/55uyydy7K7Q7QR)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''v'*>		v	@VWSWW&W1779O9U9UV ,++s   KL
L )rL   r   rh   r   randr   r   r   r3  rH  r   )
r   dat_1dat_2dat_3dat_4dat_5r?  rA   rE  r~  s
   `        @r<   test_sum_TestCommon.test_sum  s    
		t)""$ % 		q!$""Aq$/779%6	W( ((E3x=)e * )r>   c                 4   [         R                  " S5      n[        / SQ/ SQ/ SQ/5      nU R                  U5      n[	        [
        SS9   UR                  SS9  S S S 5        [	        [
        SS9   UR                  S	S9  S S S 5        [	        [        S
S9   UR                  SS9  S S S 5        [	        [
        SS9   UR                  SUS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       NX= f! , (       d  f       g = fNr  r  rt  ru  rv  zaxis out of ranger  r  r  r   r  zaxis must be an integer      ?z&do.*n.t match.*shape|wrong.*dimensionsr  r  out)	rL   r   r   r  r<  r=  r|  r  meanr   r  r  r
  s       r<   test_sum_invalid_params#_TestCommon.test_sum_invalid_params  s    hhvY! " s#:-@AII1I B:-@AII6I" B9,EFII3I G :-UVJJA3J' WV BAAAFF WVs0   
C0C'C8<D	
C$'
C58
D	
Dc                    ^^ [        / SQ/ SQ/ SQ/5      mU R                  T5      mUU4S jnU R                   H  nU" U5        M     g )Nrt  ru  rv  c                    > TR                  U S9nTR                  U S9n[        X5        [        UR                  UR                  5        g Nr  )r|  r   r   rA   )rA   dat_sum	datsp_sumr  r
  s      r<   r?  )_TestCommon.test_sum_dtype.<locals>.check1  s=    ggEg*G			.I%g9	8r>   r   r  r3  r   r?  rA   r  r
  s      @@r<   test_sum_dtype_TestCommon.test_sum_dtype+  sH    Y! " s#	9 ((E%L )r>   c                    U R                   (       + n[        / SQ/ SQ/ SQ/5      nU R                  U5      nU R                   (       a  [        S5      O[        S//5      nU R                   (       a  [        S5      O[        S//5      nUR	                  XAS9  UR	                  US9  [        XE5        U R                   (       a  [        R                  " S5      O[        R                  " S5      nU R                   (       a  [        R                  " S5      O[        [        R                  " S5      5      nUR	                  S	XAS
9  UR	                  S	US9  [        XE5        [        [        SS9   UR	                  [        S/5      S9  S S S 5        [        [        SS9   UR	                  [        U R                   (       a  S//OS5      S9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nrt  ru  rv  r   r  keepdimsr  r  r  r  r  r  r  r  r  zoutput parameterr  )
r6  r   r  r2   r|  r   rL   r   r<  r=  r   keepr  r
  dat_out	datsp_outs         r<   test_sum_out_TestCommon.test_sum_out;  sk   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	G+		i	 !'5$($6$6"((4.BHHV<L&*&8&8BHHTNfRXXfEU>V	QG3		qi	(!'5 :-?@II%*I% A:-?@II%););!CID A@ A@@@   .G.G&
G#&
G4c                     [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        R                  " U5      n[        R                  " U5      n[	        X45        [        UR                  UR                  5        g Nrt  ru  rv  )r   r  rL   r|  r   r   rA   )r   r  r
  r  r  s        r<   test_numpy_sum_TestCommon.test_numpy_sumV  s]    Y! " s#&&+FF5M	!'5W]]IOO4r>   c                    [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR                  5       5      (       d   eU R                  (       a  [
        O[        R                  n[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   eg Nrt  ru  rv  r   r  r  )
r   r  r/   r|  r6  r
   rL   r2   rK   r  )r   r  r
  matrix_or_arrays       r<   test_sum_mean_container_type(_TestCommon.test_sum_mean_container_typec  s    Y! " s#EIIK((((%)%7%7'RYY%)))+_====%)))+_====EJJL))))%**!*,o>>>>%**!*,o>>>>r>   c                 n   ^ ^ T R                   (       + mUU 4S jnT R                   H  nU" U5        M     g )Nc                   > [        / SQ/ SQ/ SQ/U S9nTR                  XS9n[        UR                  5       UR                  5       5        [	        UR                  5       R
                  UR                  5       R
                  5        [        [        R                  " UR                  S S95      5        [        UR                  S TS9UR                  S S95        [	        UR                  S S9R
                  UR                  S S9R
                  5        [        UR                  STS9UR                  SS95        [	        UR                  SS9R
                  UR                  SS9R
                  5        [        UR                  STS9UR                  SS95        [	        UR                  SS9R
                  UR                  SS9R
                  5        [        UR                  S	TS9UR                  S	S95        [	        UR                  S	S9R
                  UR                  S	S9R
                  5        [        UR                  S
TS9UR                  S
S95        [	        UR                  S
S9R
                  UR                  S
S9R
                  5        [        UR                  STS9UR                  SS95        [	        UR                  SS9R
                  UR                  SS9R
                  5        g )Nrt  r  r  r  )r  r&  r(  r  r  r  r  r   r  rq  r	  r{  )	r   r  r   r  r   rA   r   rL   r}  )rA   r  r
  r  r   s      r<   r?  $_TestCommon.test_mean.<locals>.checkt  su   ""$+02C NN3N4E%chhj%**,?))5::<+=+=>BKK


 567%dT2EJJDJ4I t,22EJJDJ4I4O4OP%a$/1C q)//1C1I1IJ%a$/1C q)//1C1I1IJ%b40%**"*2E r*00%**"*2E2K2KL%b40%**"*2E r*00%**"*2E2K2KL%ft4ejjfj6M v.44ejjfj6M6S6STr>   )r6  r3  )r   r?  rA   r  s   `  @r<   	test_mean_TestCommon.test_meanr  s1    %%% 	UF ((E%L )r>   c                 R   U R                  [        R                  " S5      5      n[        / SQ/ SQ/ SQ/5      nU R	                  U5      n[        [        SS9   UR                  SS9  S S S 5        [        [        SS9   UR                  S	S9  S S S 5        [        [        S
S9   UR                  SS9  S S S 5        [        [        SS9   UR                  SUS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       NX= f! , (       d  f       g = fr  )	r+  rL   r   r   r  r<  r=  r  r  r  s       r<   test_mean_invalid_param#_TestCommon.test_mean_invalid_param  s    ll288F+,Y! " s#:-@AJJAJ B:-@AJJFJ# B9,EFJJCJ  G :-UVJJA3J' WV BAAAFF WVs0   C%?C6%DD%
C36
D
D
D&c                    ^^ [        / SQ/ SQ/ SQ/5      mU R                  T5      mUU4S jnU R                   H  nU" U5        M     g )Nrt  ru  rv  c                    > TR                  U S9nTR                  U S9n[        X5        [        UR                  UR                  5        g r  )r  r   r   rA   )rA   dat_mean
datsp_meanr  r
  s      r<   r?  *_TestCommon.test_mean_dtype.<locals>.check  s?    xxex,H%0J%h;)9)9:r>   r  r  s      @@r<   test_mean_dtype_TestCommon.test_mean_dtype  sH    Y! " s#	; ((E%L )r>   c                    U R                   (       + n[        / SQ/ SQ/ SQ/5      nU R                  U5      nU R                   (       a  [        S5      O[        S//5      nU R                   (       a  [        S5      O[        S//5      nUR	                  XAS9  UR	                  US9  [        XE5        U R                   (       a  [        R                  " S5      O[        R                  " S5      nU R                   (       a  [        R                  " S5      O[        [        R                  " S5      5      nUR	                  S	XAS
9  UR	                  S	US9  [        XE5        [        [        SS9   UR	                  [        S/5      S9  S S S 5        [        [        SS9   UR	                  [        U R                   (       a  S//OS5      S9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nrt  ru  rv  r   r  r  r  r  r  r  r  z"output parameter.*wrong.*dimensionr  )
r6  r   r  r2   r  r   rL   r   r<  r=  r  s         r<   test_mean_out_TestCommon.test_mean_out  sk   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	W,

y
!!'5$($6$6"((4.BHHV<L&*&8&8BHHTNfRXXfEU>V	aW4

y
)!'5 :-QRJJ5!:J& S:-QRJJ5$*<*<1#!DJE SR SRRRr  c                     [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        R                  " U5      n[        R                  " U5      n[	        X45        [        UR                  UR                  5        g r  )r   r  rL   r  r   r   rA   )r   r  r
  r  r  s        r<   test_numpy_mean_TestCommon.test_numpy_mean  s_    Y! " s#773<WWU^
!(7X^^Z%5%56r>   c                    [        / SQ/ SQ/ SQ/[        5      nU R                  US[        S9n[        R                  R                  U5      n[        / SQ/ SQ/ SQ/5      nU R                  US[        S9n[        R                  R                  U5      n[        5        nUR                  [        S	5        UR                  [        S
5        UR                  [        S5        [        U5      R                  5       n[        U5      R                  5       n	S S S 5        [        WU-
  [        S5      5        [        W	U-
  [        S5      5        g ! , (       d  f       N?= f)Nr  r   r   r  r  r  r  r  r   rA   )      @              ?)r         @r  )r  r  r  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr  r   linalgr4   r   r^  r*   r   r   r   )
r   MsMMexpNsNNexpra  sMexpsNexps
             r<   	test_expm_TestCommon.test_expm  s   9i4e<^^AU%^8||  #<|<=^^AU%^8||  # CJJ'8 JJ'U JJ'@ H$$&EH$$&E !  	"54<%-@!54<%-@# ! s    A5E
Ec                 >   ^  U 4S jn[         4 H  nU" U5        M     g )Nc                   > [        / SQ/ SQ/ SQ/U 5      n[        5        nUR                  [        S5        UR                  [        S5        UR                  [        S5        TR	                  USU S9n[        U5      nS S S 5        [        WR                  W5      R                  5       [        R                  " S	5      5        [        [        [
        U5        g ! , (       d  f       Na= f)
Nr  r  r  r  r  r  r  r  r  )r   r   r^  r*   r  r5   r   r   r   rL   r(   r<  r  )rA   r  ra  r  sMinvr   s        r<   r?  #_TestCommon.test_inv.<locals>.check   s    y)Z8%@A"$

2KN

29; 

2CF^^AU%^@B % &eiim&;&;&=rvvayI)S!, %$s   AC
C))r  rD  s   `  r<   test_inv_TestCommon.test_inv  s    	- WE%L r>   c                 l   [        / SQ/ SQ/ SQ/ SQ/5      n[        U R                  U5      R                  5       U5        [        / SQ/ SQ/ SQ/5      n[        U R                  U5      R                  5       U5        [        U R                  USS9R                  5       UR	                  S5      5        g 	Nr  r  )r   r  r   r  )r  r   r   )r         @r   r  r  )r   r   r  r   ry   r  s     r<   test_from_array_TestCommon.test_from_array  s    7777344>>!,446:#"  	4>>!,446:4>>!7>;CCEahhwFWXr>   c                    U R                  / SQ/ SQ/ SQ/ SQ/5      n[        U R                  U5      R                  5       U5        U R                  / SQ/ SQ/ SQ/5      n[        U R                  U5      R                  5       U5        [        U R                  USS9R                  5       UR	                  S5      5        g r  )r+  r   r  todensery   r  s     r<   test_from_matrix_TestCommon.test_from_matrix  s    LL)Y	9EF4>>!,446:LL*)#% & 	4>>!,446:NN1GN,4468I	
r>   c                 l   / SQ/ SQ/ SQ/ SQ/n[        U R                  U5      R                  5       U5        / SQ/ SQ/ SQ/n[        U R                  U5      R                  5       [        U5      5        [        U R                  USS9R                  5       [        U5      R	                  S5      5        g r  )r   r  r   r   ry   r  s     r<   test_from_list_TestCommon.test_from_list)  s    WWW-4>>!,446: 	4>>!,446aANN1GN,446a8P	
r>   c                    [        / SQ/ SQ/ SQ/ SQ/5      nU R                  U5      n[        U R                  U5      R	                  5       U5        U R                  U5      n[        U R                  U5      R	                  5       U5        [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        U R                  U5      R	                  5       U5        [        U R                  USS9R	                  5       UR                  S5      5        U R                  U5      n[        U R                  U5      R	                  5       U5        [        U R                  USS9R	                  5       UR                  S5      5        g r  )r   r&  r   r  r   ry   r   r	  Ss      r<   test_from_sparse_TestCommon.test_from_sparse6  s3   777734q!4>>!,446:NN14>>!,446:#"  q!4>>!,446:4>>!7>;CCE88G,	.NN14>>!,446:4>>!7>;CCE88G,	.r>   c                    U R                   R                  5       n[        XR                  (       a  [        R
                  O[        R                  5      (       d   e[        XR                  5        [        UR                  R                  UR                  R                  :g  5        U R                   R                  SS9n[        XR                  5        [        UR                  R                  5        [        UR                  R                  (       + 5        U R                   R                  SS9n[        XR                  5        [        UR                  R                  (       + 5        [        UR                  R                  5        [        R                  " U R                   R                  U R                   R                  S9nU R                   R                  US9n[        U R                  U5        [        U R                  U5        [        R                   " X5      (       d   eU R#                  [        R                  " U R                   R                  U R                   R                  S95      nU R                   R                  US9n[        U R                  U5        [        U R                  U5        [        R                   " X5      (       d   e[%        / SQ/5      nX0R                  -  nX0R                   R                  5       -  n[        XE5        [%        / SQ/5      R&                  nU R                  U-  nU R                   R                  5       U-  n[        XG5        U R)                  U R                  [*        S9nU R                  R-                  [*        5      n	[        UR                  5       U	5        g )Nr  r0  r.  r  r  r  r  r  r  r  r        @)r
  r  rK   r6  rL   r
   r2   r   r  r   flagsc_contiguousf_contiguousr   r   rA   rS   r+  r   rj  r  r>  ry   )
r   chkr  rP   dense_dot_denser?  rV   check2spboolmatbools
             r<   test_todense_TestCommon.test_todenseN  s   jj  "#-?-?rzzRYYOOOO3)		&&#))*@*@@Ajj  s +3)		&&'CII***+jj  s +3)CII***+		&&'hhtzz''tzz/?/?@jj  S )488S)488S)""3,,,,ll288DJJ$4$4DJJ<L<LMNjj  S )488S)488S)""3,,,,:,hh,JJ&&((?2=/"$$((Q,##%)?35((//$'6>>+W5r>   c                 H   [        U R                  5      nU R                  R                  5       n[	        X!5        [        UR                  R                  UR                  R                  :g  5        U R                  R                  SS9n[	        X!5        [        UR                  R                  5        [        UR                  R                  (       + 5        U R                  R                  SS9n[	        X!5        [        UR                  R                  (       + 5        [        UR                  R                  5        [        R                  " U R                  R                  U R                  R                  S9nU R                  R                  US9  [	        X!5        SUS'   U R                  R                  US9  [	        X!5        [        / SQ5      n[        XA5      n[        X@R                  R                  5       5      n[	        XV5        [        / S	Q5      n[        X5      n[        U R                  R                  5       U5      n[	        XX5        U R                  U R                  [         S9n	UR#                  [         5      n
[	        U	R                  5       U
5        g )
Nr  r0  r.  r  r  r  .r  r  )r   r  r
  r   r   r   r  r  r  rL   r   r   rA   r   r   r  r>  ry   )r   r  r   r  rP   r  r?  rV   r  r  arrbools              r<   test_toarray_TestCommon.test_toarrayw  s   dhhjj  "3$		&&#))*@*@@Ajj  s +3$		&&'CII***+jj  s +3$CII***+		&&'hhtzz''tzz/?/?@

s#3$C

s#3$*a+Azz))+,?2- c+TZZ'')1-?35**T"6>>+W5r>   c                   ^^	 [        / SQ/ SQ/ SQ/5      nU R                  U5      n[         GH1  nUR                  U5      nS Hl  nUR                  X5S9m[	        TR
                  UR
                  5        [	        TR                  5       U5        [	        TR                  UR                  5        Mn     [        TR                  USS9TL 5        TR                  USS9m	[        T	TL5        UU	4S jnTR                  S	;   a  S
 H  nU" U5        M     M  TR                  S:X  a  S H  nU" U5        M     GM  TR                  S:X  d  GM   S H  nU" U5        M     GM4     g )Ny       @      @r   r   r   y      @      @r   r  )TFr;  FTc                    > [        TU 5      n[        TU 5      n[        X5        [        XL5        SUR                  -  nX#   nX#   (       + X#'   [        X   X#   :g  5        XBU'   g )N)r   )r   r   r   r   )	attributerP   rV   r  b_iS_castedS_copieds        r<   (check_equal_but_not_same_array_attributeI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute  sc    Hi0Hi0"1(
#166Md4x%!r>   r[  rZ  rY  )indicesindptrdatar  )rowcolr  r  )offsetsr  )	r   r  r.   ry   r   rA   r   r  r   )
r   r	  r  rB   D_castedrO  r  r  r  r  s
           @@r<   test_astype_TestCommon.test_astype  s3   ##  NN1!!Axx{H%88A81X^^X^^<X--/:X__ahh7	 & HOOAEO2h>?qt4HHH,-	 "77!>I<YG "?E)!7I<YG "8E)!4I<YG "5? "r>   c                    [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        US5      (       a  SUR                  R                  l        UR                  S;   a6  SUR                  R                  l        SUR                  R                  l        [         HE  nUR                  U5      nUR                  U5      n[        UR                  UR                  5        MG     g )Nr  r  r  r  Fr  )r   r  hasattrr  r  	writeabler  r  r  r.   ry   r   rA   )r   r	  r  rB   r  r  s         r<   test_astype_immutable!_TestCommon.test_astype_immutable  s    ##  NN11f%*AFFLL"88,,',AHHNN$(-AIIOO%!Axx{Hxx{H8 "r>   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    n[        US-  US-  R                  5       5        [        US-  US-  R                  5       5        g Nrj   L1@r4  r5  r   r   rA   r  r
  r   s      r<   r?  *_TestCommon.test_mul_scalar.<locals>.check  sW    //%(C%%e,Es1uuQw&7&7&9:s4x%*)=)=)?@r>   r2  rD  s   `  r<   test_mul_scalar_TestCommon.test_mul_scalar  "    	A %%E%L &r>   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    n[        SU-  SU-  R                  5       5        [        SU-  SU-  R                  5       5        g r&  r(  r)  s      r<   r?  +_TestCommon.test_rmul_scalar.<locals>.check  sW    //%(C%%e,Equqw&7&7&9:tCx$u*)=)=)?@r>   r+  rD  s   `  r<   test_rmul_scalar_TestCommon.test_rmul_scalar  r.  r>   c                     U R                   [        R                     n[        [        5         S U-    S S S 5        g ! , (       d  f       g = fr@   )r5  rL   r  r<  r  )r   r
  s     r<   test_rmul_scalar_type_error'_TestCommon.test_rmul_scalar_type_error  s1    !!"**-9%5L &%%s	   <
A
c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                   > TR                   U    nTR                  U    nUR                  5       nSUS'   UnXC-   n[        XTR	                  5       U-   5        XDR                  5       -   n[        UR	                  5       UR	                  5       UR	                  5       -   5        XCS   -   n[        XTR	                  5       US   -   5        g )Nr  r]  r   )r4  r5  rO  r   r   r  rA   r  r
  rP   rV   r  r   s         r<   r?  #_TestCommon.test_add.<locals>.check  s    //%(C%%e,E
AAcFAAq))+/2GGIAqyy{ yy{QYY[8: aDAq))+!"45r>   r+  rD  s   `  r<   test_add_TestCommon.test_add  s!    	6$ %%E%L &r>   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    nUR                  5       nSUS'   UnX4-   n[        XSUR	                  5       -   5        g )Nr  r]  )r4  r5  rO  r   r   r9  s         r<   r?  $_TestCommon.test_radd.<locals>.check  sS    //%(C%%e,E
AAcFAAqaiik/2r>   r+  rD  s   `  r<   	test_radd_TestCommon.test_radd  s!    	3 %%E%L &r>   c                    ^  U 4S jnT R                    H'  nU[        R                  " S5      :X  a  M  U" U5        M)     g )Nc                   > TR                   U    nTR                  U    n[        X"-
  R                  5       [        R
                  " S5      5        [        US-
  R                  5       U5        TR                  [        R                  " / SQ/ SQ/ SQ/S5      5      n[        X#-
  R                  5       XR                  5       -
  5        [        X2-
  R                  5       UR                  5       U-
  5        [        X!S   -
  XS   -
  5        g )Nr:  r   r  r   r   r  r	  r   r   r   r   r'  r   r  r/  )r4  r5  r   r   rL   r   r  r   rA   r  r
  rT   r   s       r<   r?  #_TestCommon.test_sub.<locals>.check  s    //%(C%%e,E668"((6:JK	224c:,}EsKA 	224cIIK6GH	224aiikC6GH u1v~sV|<r>   r>  r2  rL   rA   rD  s   `  r<   test_sub_TestCommon.test_sub  s5    	=  %%E((%L &r>   c                    ^  U 4S jnT R                    H'  nU[        R                  " S5      :X  a  M  U" U5        M)     g )Nc                 j  > TR                   U    nTR                  U    n[        X-
  / SQ/ SQ/ SQ/5        [        X!-
  / SQ/ SQ/ SQ/5        [        SU-
  R                  5       U* 5        TR	                  / SQ/ SQ/ SQ/SS9n[        X-
  XR                  5       -
  5        [        X1-
  UR                  5       U-
  5        [        UR                  5       U-
  UR                  5       U-
  5        [        X#R                  5       -
  XR                  5       -
  5        [        US   U-
  US   U-
  5        g )Nr3  r   rD  rE  rF  r/  r  )r4  r5  r   r   r  rG  s       r<   r?  $_TestCommon.test_rsub.<locals>.check.  s    //%(C%%e,Ei	)-LMi	)-LME	224sd;	*Z@sKA#		*;<!))+*;<qyy{U2AIIK#4EFuyy{2C))+4EF s1v~s1v|<r>   r>  rI  rD  s   `  r<   	test_rsub_TestCommon.test_rsub-  s5    	=" %%E((%L &r>   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                 d  > TR                   U    nTR                  U    n[        US-   R                  5       U5        [	        [        SS5       Vs/ s H  o3U-  PM	     sn5      n[	        [        SS5       Vs/ s H  o3U-  PM	     sn5      n[        UR                  5       U5        g s  snf s  snf )Nr   r  r  )r4  r5  r   r   r|  rH  r   )rA   r  r
  r  sumSsumDr   s         r<   r?  $_TestCommon.test_add0.<locals>.checkG  s    //%(C%%e,E 	224c:5A;7;aE	;78Dq!5AC56D5 85s   B(8B-r+  rD  s   `  r<   	test_add0_TestCommon.test_add0F  s!    		6 %%E%L &r>   c                    [        / SQ/ SQ/5      n[        / SQ/ SQ/5      nU R                  U5      nU R                  U5      nUR                  S;   a  UR                  OSnUR                  U5      R                  U:X  d   e[	        UR                  U5      R                  5       X-  5        [	        UR                  U5      R                  5       X-  5        [        / SQ/ SQ/5      n[        / S	Q/ S
Q/5      nU R                  U5      nU R                  U5      n	[	        UR                  U	5      R                  5       Xg-  5        [	        UR                  U5      R                  5       Xg-  5        [	        UR                  U	5      R                  5       X-  5        [	        UR                  U5      R                  5       X-  5        g )N)r  r   r(  )rj   r  r  )r   r&  r   )r   r  r   )rZ  r  rY  r[  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r(  )r   r  r  multiplyr   r   )
r   rT   rU   rj  Bspout_fmtr  r	  CspDsps
             r<   test_elementwise_multiply%_TestCommon.test_elementwise_multiplyU  sa   78$%78$%nnQnnQ #

.C C#**S!))W444CLL-557=CLLO335qs; $^45$^45nnQnnQCLL-557=CLLO335qs; 	CLL-557=CLLO335qs;r>   c                 2   [        S/5      n[        S//5      n[        / SQ5      n[        / SQ/5      n[        S/S/S//5      n[        / SQ/ S	Q/ S
Q/5      n/ SQn[        R                  " S5      nUR                  n	[        S//5      n
[        SS/SS///5      nU R	                  U5      nU R	                  U5      nU R	                  U5      nU R	                  U5      nU R	                  U5      nU R	                  US   5      nU R	                  U	5      nU R	                  U	S S 2SS 4   5      nU R	                  U
5      nXX4XVXxXU/nXXUUUUU/	nU HY  nU HP  n UR                  5       UR                  5       -  nUR                  U5      n[        UR                  5       U5        MR     M[     U Hj  nU Ha  n UR                  5       U-  n UR                  U5      n[        U5      (       a  [        UR                  5       U5        MU  [        UU5        Mc     Ml     g ! [         a    [        [        UR                  U5         M  f = f! [         a     M  [         a    [        [        UR                  U5         M  f = f! [         a     M  f = f)Nr  r  r	  r   )r&  r(  re  r  rj   r  )r'  r  r  )r  r  rj   )r  r  r  r$  r:  r   r   N)r   rL   onesrj  r  r   r=  r<  r]  r   r  r)   )r   rT   rU   r  r	  Er.  GHJKLr^  ra  EspFspHspHsppJspJsppKspr~  
spmatricesr  rE  
dense_multsp_mults                              r<   #test_elementwise_multiply_broadcast/_TestCommon.test_elementwise_multiply_broadcastm  sd   1#JB4&M(O8*A3sA3- 78G,-GGFOCCA3%LQqE1Q%=/" nnQnnQnnQnnQnnQ~~ai(nnQ~~a!Dk*nnQ!aA!4#tS$D
 A!"qyy{!:J **Q-#GOO$5zB    A!"qJjjmG G$$'(9:F'<   " !*ajj!< ! ! !*ajj!<
 " s<   !H$>IJ$%II
J$JJ
JJc           	         S[         R                  [         R                  S/S[         R                  S[         R                  /[         R                  S[         R                  [         R                  //n[        [        U R                  U R                  -  5      U5        U R                  / SQ/ SQ/ SQ/SS9nS[         R                  [         R                  S/S[         R                  [        [         R                  /[         R                  S	[         R                  S
//n[        [        U R                  U-  5      U5        [        / SQ/ SQ/5      n[        / SQ/ SQ/5      nU R                  U5      nU R                  U5      n[        [        XV-  5      X4-  5        [        / SQ/ SQ/5      n[        / SQ/ SQ/5      nU R                  U5      nU R                  U5      n[         R                  " SS9   [        [        XV-  5      X4-  5        S S S 5        [        S
S/SS
//5      n[        SS
/SS
//5      nU R                  U5      nU R                  U5      n[         R                  " SSS9   [        [         R                  " [        XV-  5      5      X4-  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  rD  rE  rF  r/  r        ?r  g      ?r   rY  rZ  r[  r\  r$  )r  rj   r  rt  )r   rq  r  rr  )divide)r}  rt  )
rL   rP  r   r   r
  r  r   r   r   rw  )r   r  denomrT   rU   rj  r^  s          r<   test_elementwise_divide#_TestCommon.test_elementwise_divide  s   rvvbffQ'rvva'VVAbffRVV,. 	74::

#:;XF	*Z@sKrvvbffS)s266*VVD*, 	74::#56A $^45$^45nnQnnQGCI.4 78$%78$%nnQnnQ[[)wsy1159 * Aa5!A- Aa5!A- nnQnnQ[[(;rxx	(:;QUC <; *) <;s   9J+4.J<+
J9<
K
c                    [        / SQ/ SQ/ SQ/ SQ/5      nU R                  U5      nU R                  (       a  S HE  nX#-  nX-  n[        UR	                  5       U5        [        UR                  UR                  5        MG     [        [        UR                  S5        [        [        UR                  S5        U R                  US S2S S 24   5      n[        US	-  R	                  5       UR	                  5       5        g S
 H`  nX#-  n[        R                  R                  X5      n[        UR	                  5       U5        [        UR                  UR                  5        Mb     S H  n[        [        UR                  U5        M      U R                  US S2S S 24   5      n[        [        UR                  S	5        g )Nr  r   rj   r   )r   r  r  r   )r   r  r   r   )r   r  r&  r'  )r  rj   皙@r  r  r   r	  r  r  r   r  rj   r  )r	  r  r  )r   r  r6  r   r   r   rA   r<  r  __pow__r=  rL   r  matrix_powerr  )r   rT   rU   exponentret_spret_nps         r<   test_pow_TestCommon.test_pow  sQ   <|\JKNN10"6>>#3V<V\\6<<8	 1 -qyy!<*aii4 q!Aw'A!Q$)199;7%//<"6>>#3V<V\\6<<8	 & .j!))X> . q!Aw'A)QYY2r>   c                     U R                  / SQ/ SQ/ SQ/ SQ/5      n[        / SQU-  [        / SQUR                  5       5      5        [	        / SQ/5      n[        X!-  X!R                  5       -  5        g )Nr  r   r   r   r  r   rj   r   r  rj   r  r   r  )r  r   r   r   r   )r   r  r  s      r<   test_rmatvec_TestCommon.test_rmatvec  sU    NNGGIg>?!)a-Y		1LMYK !#'3+<=r>   c                 6   U R                  S/S/S//5      n[        [        U[        S5      -  5      5        [	        U[        S5      -  R                  5       S/S/S//5        [	        U[        S/5      -  [        / SQ5      5        [	        U[        S//5      -  [        S/S/S//5      5        [	        U[        R                  " S5      -  [        S/S/S//5      5        [	        U[        R                  " S5      -  [        R                  " S5      5        g )Nr  rj   r  r$  r  r  r  r   r  r   )r  r   r)   r   r   r   rL   rh  r  s     r<   test_small_multiplication%_TestCommon.test_small_multiplication  s    NNQCQC=)U1X&'a%(l++-aS1#?Qs^U9%56Qu%uqcA3_'=>Q(%!qcA3*@AQ("''&/:r>   c                 <   [         R                  " S/S/S//5      nU R                  U5      nU R                  (       aZ  [	        U[         R
                  " S5      -  R                  5       U5        [	        U[        S//5      -  R                  5       U5        g [        U[        S/5      -  [        / SQ5      5        [        U[        S//5      -  [        S/S/S//5      5        [        U[         R
                  " S5      -  [         R
                  " S5      5        g )Nr  rj   r  r  r$  r  r  )rL   r   r  r6  r   rh  r   r   )r   rT   rj  s      r<   -test_star_vs_at_sign_for_sparray_and_spmatrix9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrix  s    HHqcA3_%nnQ%sRWWV_'<&E&E&GK%sUQC5\'9&B&B&DaHuaSz)5+;<uqcU|+UQC!qc?-CDrwwv.@r>   c                 &   U R                  S/S/S//5      n[        5       n[        X-   S5        [        X-
  S5        [        X-  S5        [        X!-   S5        [        X!-
  S5        [        X!-  S5        [        X-  S5        [        X!-  S5        g )Nr  rj   r  r   r   )r  r   r   r   rT   rU   s      r<   test_binop_custom_type"_TestCommon.test_binop_custom_type
  s    
 NNQC!qc?+MQU01QU01QU01QU12QU12QU12QU01QU12r>   c                 (   U R                  S/S/S//5      n[        S5      n[        X-   S5        [        X-
  S5        [        X-  S5        [        X!-   S5        [        X!-
  S5        [        X!-  S5        [        X-  S5        [        X!-  S5        g )Nr  rj   r  r  r   r   )r  r   r   r  s      r<   !test_binop_custom_type_with_shape-_TestCommon.test_binop_custom_type_with_shape  s    NNQC!qc?+"5)QU01QU01QU01QU12QU12QU12QU01QU12r>   c                      " S S5      nSnU R                  S/S/S//5      nU" U5      nX2-  nX4-  n[        UR                  5       UR                  5       5        [        UR                  UR                  5        g )Nc                        \ rS rSrS rS rSrg)0_TestCommon.test_mul_custom_type.<locals>.Customi)  c                     Xl         g r@   scalar)r   r  s     r<   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__*  s    $r>   c                     XR                   -  $ r@   r  r   s     r<   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__-  s    {{**r>   r  N)r   r   r   r   r   r   r   re   r>   r<   Customr  )  s    %+r>   r  rj   r  r  )r  rE   r   r   r  )r   r  r  rT   r  A_scalarA_cs          r<   test_mul_custom_type _TestCommon.test_mul_custom_type(  so    	+ 	+ NNQCQC=)6N:e !1!1!3S[[]CX__cjj1r>   c                     U R                  S/S/S//5      n[        5       n[        X:H  S5        [        X:g  S5        [        X:  S5        [        X:  S5        [        X:  S5        [        X:*  S	5        g )
Nr  rj   r  r   r   r   r   r   r  )r  r   r   r  s      r<   test_comparisons_custom_type(_TestCommon.test_comparisons_custom_type8  sl    NNQC!qc?+QVT"QVT"QUD!QVT"QUD!QVT"r>   c           	          U R                  [        / SQ/ SQ/ SQ/ SQ/5      5      nSnUR                  U5      nX-  n[        UR	                  5       UR	                  5       5        g )Nr  r  r  r  rY   )r  r   r   r   r   )r   r  r  actualr  s        r<   test_dot_scalar_TestCommon.test_dot_scalarB  sQ    NN5'')G!DEFv:((*:*:*<=r>   c           	         U R                  [        / SQ/ SQ/ SQ/ SQ/5      5      nU R                  [        SS/SS/SS//S5      5      n[        / S	Q/5      R                  n[        R                  n[        U" X5      UR                  5       U-  5        [        U" X5      R                  5       X-  R                  5       5        [        U" UR                  5       U5      X-  R                  5       5        [        U" XR                  5       5      X-  R                  5       5        [        [        XAS5        [        [        USU5        g )
Nr  r  r  r  r   r  rj   r/  r$  )	r  r   rj  operatormatmulr   r   r<  r=  )r   r  rU   r  r  s        r<   test_matmul_TestCommon.test_matmulJ  s    NN5'')G!DEFNN51Q%1qe!4S9:WI  !&.!))+2CD 	"&,"6"6"815//:KL!&a"815//:KL!&IIK"815//:KL 	j&Q/j&!Q/r>   c           
      X   U R                  / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/5      R                  n[        X-  UR	                  5       U-  5        [        U[        / SQ5      -  R                  S5        [        U[        S/S/S	//5      -  R                  S
5        [        U[        S/S/S	//5      -  R                  S
5        [        [        U[        / SQ5      -  [        5      5        U R                  (       a  [        O[        R                  n[        [        U[        / SQ5      R                  -  U5      5        [        SS/5      [        / SQ5      [        S/S//5      [        / SQ5      [        S/S//5      /nU H  n[        [        UR                  U5        M      [!        U[        / SQ5      -  [#        UR	                  5       / SQ5      5        [!        US/S/S	//-  [        R$                  " [#        UR	                  5       / SQ5      5      R                  5        g )Nr  r  r  r  r$  )r  r  rj   r  )r  r  r  )r  r   rj  r   r   r   r   r2   r   rK   r
   r6  rL   r<  r=  r   r   r   
atleast_2d)r   r  r  r  bad_vecsrB   s         r<   test_matvec_TestCommon.test_matvec\  s   NNGGIg>?WI  !!'199;+<= 	a%.(//5a%!aS!..55e<a&1#qc1#//66u= 	
1uW~-w78%)%7%7'RYY
1vg000/BC 1Q%L%	"2EA3s)4D7OVaS!I%68A*allA6 
 	AeGn,c!))+g.FGAsA3smOR]]3qyy{7;S-T-V-VWr>   c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      n[        SS/SS/SS//S5      nU R                  U5      nU R                  U5      n[        XE-  R	                  5       X-  5        [        XC-  X-  5        [        X-  X-  5        [        X%-  X-  5        UR                  5       nUnX-  n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        UR                  5       n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        UR                  5       n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        S	n	S
n
[        R                  " S5        [        U	S45      n[        U	5       H9  n[        S5       H'  n[        R                  " 5       nX:  d  M  X-  XU4'   M)     M;     U R                  U5      nXR                  -  n[        UR	                  5       UR	                  5       UR                  R	                  5       -  5        [        UR	                  5       UR	                  5       UR	                  5       R                  -  5        U R                  SS/SS//5      nU R                  SS/SS/SS//5      n[        [        UR                  U5        U R                   (       a  [        [        UR"                  U5        g g )Nr  r  r  r  r   r  rj   r/  r6  g333333?r  r  r  r  )r2   r   r  r   r   r  r  r  r   rh   r   rH  rj  r<  r=  r   r6  r   )r   rP   a2rV   aspbspcspr  wantrn  fracrT   r  rE  rN  rU   s                   r<   test_matmat_sparse_TestCommon.test_matmat_sparse{  s   GGIg67GGIg67QqE1Q%1&s+nnQnnQ!39"5"5"7?!#'151!!'151!"(AE2 iiku!39"5"5"7>!#'40!!'40!"(D1iik!39"5"5"7>!#'40!!'40!"(D1iik!39"5"5"7>!#'40!!'40!"(D1 A1Q%LqA1XMMO8VAcF   NN1G!!))+qyy{QSS[[]/JK!!))+qyy{QYY[]]/JK NNQqE1Q%=)NNQqE1Q%1./j!,,2*aii3 r>   c           	      j   / SQ/ SQ/ SQ/ SQ/nU R                  U5      n[        SS/SS/S	S
//5      [        SS/SS/S	S
//5      /nU Hf  nX$-  n[        [	        XPR
                  (       a  [        O
[        U5      5      5        [        UR                  S5        [        U[        X5      5        Mh     g )Nr  r  r  r  r  rj   r  r  r  r  r  rj   )r  r   r2   r   rK   r6  r
   typer   r   r   )r   rP   r  bsrV   results         r<   test_matmat_dense_TestCommon.test_matmat_dense  s    WYw/nnQ aUAa5!A'(&1Q%1qe1D*EFAWFJv2D2Dw$q'RSu-Q*	 r>   c                    [         R                  " / SQ/ SQ/ SQ/SS/SS//5      nUR                  5       nU R                  U5      nS H  nUR	                  U5      n[        UR                  U5        [        UR                  5       U5        U R                  US	-   5      R	                  U5      n[        UR                  U5        [        UR                  5       US	-   5        U R                  U5      R	                  U5      n[        UR                  U5        [        UR                  5       U5        M     S
 HP  nUR	                  U5      n[        XB5        U R                  US	-   5      R	                  U5      n[        XRS	-   5        MR     g )Nr  r   r  r  )r  r   r   r  rj   r   r  )rY  r  rZ  r[  r  rF   r                @)r   dense)r   r   r   r  asformatr   r  r   )r   rT   r	  r  rP   rV   r  s          r<   test_sparse_format_conversions*_TestCommon.test_sparse_format_conversions  s6   KK1QqE1Q%=AIIKNN1AF

6"A&)qyy{A.qt$--f5A&)qyy{AbD1q!**62A&)qyy{A. B )F

6"Aq$qt$--f5AqB$' )r>   c           	         [        / SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        X5      nU R                  U5      nS HC  n[        USU-   5      nS H+  nS	 H"  n[	        U" Xx4S
9R                  5       U5        M$     M-     ME     g )Nr  r3  r   r   r  r  rt  r  r   r  )rY  to)r  rj   r  r  )r  rj   r  r  r  r/  	blocksize)r   r   r  r   r   r   )	r   rB   rC   rT   rj  r  fnXYs	            r<   
test_tobsr_TestCommon.test_tobsr  s    9Yy1277#$InnQFdVm,B!,A qf!5!=!=!?C - " r>   c                   ^ ^ T R                   n[        R                  " / /5      nX/mUU 4S jnT R                  S5      n[	        [        R
                  " U5      R                  5       [        R
                  " [        S5      5      5        [	        UR                  R                  5       [        S5      5        [        [        UR
                  SS9  T R                   H&  n[        [        T5      5       H  nU" XV5        M     M(     g )Nc                   > [        TU   U S9nTR                  U5      nUR                  5       nUR                  5       n[        UR	                  5       U5        [        UR                  5       R	                  5       U5        [        UR                  SS9R	                  5       U5        [        UR                  UR                  5        g )Nr  r  r  )r   r  r   r   r   r   rA   )rA   rE  r  r
  rP   rV   r~  r   s         r<   r?  )_TestCommon.test_transpose.<locals>.check  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqI!''*r>   r:  r  r  r   r  )r  rL   r   r  r   r   r   r   rj  r<  r=  r3  rH  r   )r   r  r  r?  r  rA   rE  r~  s   `      @r<   test_transpose_TestCommon.test_transpose  s    ">
	+ v&2<<.668<<f6	8577??,eFm<j%//:((E3x=)e * )r>   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    nX-   n[        X1U-   5        X!-   n[        XAU-   5        g r@   )r4  r5  r   rA   r  r
  sum1sum2r   s        r<   r?  )_TestCommon.test_add_dense.<locals>.check  sI    //%(C%%e,E ;Dt3Y/;Dt3Y/r>   r+  rD  s   `  r<   test_add_dense_TestCommon.test_add_dense  s!    	0 %%E%L &r>   c                    ^  U 4S jnT R                    H'  nU[        R                  " S5      :X  a  M  U" U5        M)     g )Nc                   > TR                   U    nTR                  U    nUR                  [        :X  a%  X-
  n[	        X1U-
  5        X!-
  n[	        XAU-
  5        g X-   U-   U-
  n[	        X1U-   5        X"-   U-   U-
  n[	        XAU-   5        g r@   )r4  r5  rA   r>  r   r  s        r<   r?  )_TestCommon.test_sub_dense.<locals>.check  s    //%(C%%e,E yyD {"4s3{"4s3 	C50"4s3-4"4s3r>   r>  rI  rD  s   `  r<   test_sub_dense_TestCommon.test_sub_dense  s5    	4$ %%E((%L &r>   c           	        ^ ^^^ [         R                  " / SQ/ SQ/ SQ/5      m[         R                  " / SQ/ SQ/ SQ/5      m[         R                  " / SQ/ SQ/ SQ/5      mUUUU 4S	 jnT R                   Ht  n[         R                  [         R                  [         R
                  4 H>  nS
 H5  nU" [         R                  " U5      [         R                  " U5      U5        M7     M@     Mv     g )N)r  r   r  )r   r  r  r  )r  r  rj   )r   r  r  rf  )r   y      @       @r  )r                 ?y             c                   > [         R                  " U [         R                  5      (       a!  TR                  TR	                  U 5      5      nO TR                  T
R	                  U 5      5      nUS:X  a  UR                  S5      nOaUS:X  a  UR                  S5      nOIUS:X  a  TR	                  U5      nO1US:X  a!  TR                  TR	                  U5      5      nO
[        5       e[        5        nUR                  [        S5        UR                  U5      nUR                  U5      nS S S 5        [         R                  " [        U5      [        U5      5      n[        [        W5      U5        [        UR                  UR                  5        [         R                  " [        U5      [        U5      5      n	[        [        W5      U	5        [        UR                  U	R                  5        g ! , (       d  f       N= f)Nr  r  scalar2r	  r  r   zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rL   rq   complexfloatingr  ry   r  r=  r   r^  r*   maximumminimumr   r   r   rA   )rA   dtype2btyperT   rU   ra  max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s             r<   r?  /_TestCommon.test_maximum_minimum.<locals>.check0  si   }}UB$6$677NN;#5#5e#<=NN7>>%#89 KKN)#KKO'!NN6*("NN7>>&#9: l""$

278 		!		! % JJwqz71:6Ewu~u5ekk2JJwqz71:6Ewu~u5ekk2 %$s   09G..
G<)r  r  r  r   )rL   r   r2  r   r  r  rA   )r   r?  rA   r  r   r  r  r  s   `    @@@r<   test_maximum_minimum _TestCommon.test_maximum_minimum*  s    ((Iy)<=((Iy*=>hh	<FG	3 	3@ %%E77BJJ>EE"((5/288F+;UC F ? &r>   c                    U R                   n[        UR                  5       R                  UR                  5        [        UR	                  USS9R                  UR                  5        [        UR	                  USS9R                  UR                  5        [        UR                  5       R                  5       UR                  5       5        [        UR	                  USS9R                  5       UR                  5       5        [        UR	                  USS9R                  5       UR                  5       5        [        USUR                  -   5      n[        U" 5       UL 5        [        U" SS9UL 5        [        U" SS9R                  UR                  5        [        U" SS9R                  5       UR                  5       5        [        [        UR                  5       U5      (       + 5        g )NTr;  Fr  )	r
  r   rO  r  	__class__r   r   r   rW   )r   rT   toselfs      r<   	test_copy_TestCommon.test_copyU  sZ   JJ 	QVVX__ahh/Q[[[-44ahh?Q[[[.55qxx@QVVX%%'5Q[[[.668!))+FQ[[[/779199;G 4!((?+AE"a'(V&--qxx8V&..0!))+> 	+AFFHa889r>   c                     U R                  [        R                  " S5      R                  SS5      5      nU R	                  U5      n[        X!5       H  u  p4[        UR                  5       U5        M!     g )Nr  r  rY   )r+  rL   r   r  r  zipr   r   )r   rU   rT   rB   rC   s        r<   test_iterator_TestCommon.test_iteratorm  sS    LL2..q"56NN1IDAa( r>   c                 t   [        / 5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      n[        R                  " SS/5      nU R	                  U5      nU R	                  U5      n	U R	                  U5      n
U R	                  U5      nU R	                  U5      nU R	                  U5      n[        UR                  U5      R                  5       [        R                  " X"5      5        [        U	R                  U5      R                  5       [        R                  " X55      5        [        UR                  U	5      R                  5       [        R                  " XS5      5        [        U
R                  U5      R                  5       [        R                  " XF5      5        [        U
R                  U5      R                  5       [        R                  " XG5      5        [        UR                  U
5      R                  5       [        R                  " Xd5      5        [        UR                  U
5      R                  5       [        R                  " XT5      5        [        UR                  U5      R                  5       [        R                  " Xv5      5        [        [        UR                  U5        [        [        UR                  U5        [        UR                  U5      R                  5       [        R                  " X"5      5        [        U	R                  U	5      R                  5       [        R                  " X35      5        [        UR                  U5      R                  5       [        R                  " XU5      5        [        UR                  U5      R                  5       [        R                  " X"5      5        [        U	R                  U5      R                  5       [        R                  " X35      5        [        UR                  U5      R                  5       [        R                  " XU5      5        [        UR                  S5      R                  5       [        R                  " US5      5        [        U	R                  S5      R                  5       [        R                  " US5      5        [        UR                  S5      R                  5       [        R                  " US5      5        [        [        UR                  U5        [        [        UR                  U5        [        UR                  U5      R                  5       UR                  U5      5        [        U	R                  U	5      R                  5       UR                  U5      5        [        UR                  U5      R                  5       UR                  U5      5        [        [        UR                  U5        [        [        U	R                  U5        g )Nr  r{  r  r  rQ  r  r  )r   r  rL   rh  r  r   r   r   r<  r=  r]  r   )r   r   rP   rV   r  r/  r  r  r  r  r  dspespfsps                 r<    test_size_zero_matrix_arithmetic,_TestCommon.test_size_zero_matrix_arithmetict  s    BiKKKKKKKKKKGGQFOnnQnnQnnQnnQnnQnnQ 	3773<//1266!<@3773<//1266!<@3773<//1266!<@3773<//1266!<@3773<//1266!<@3773<//1266!<@3773<//1266!<@3773<//1266!<@ 	j#''1-j#''1- 	3<<,446A8IJ3<<,446A8IJ3<<,446A8IJ3<<?224bkk!6GH3<<?224bkk!6GH3<<?224bkk!6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH 	j#,,2j#,,2 	3;;s+335qyy|D3;;s+335qyy|D3;;s+335qyy|D 	j#++s3j#++s3r>   c                    [        / 5      nUR                  S5      nUR                  S5      nUR                  S5      nX#U4 GH  nU R                  U5      n[        UR	                  5       R                  5       U5        [        UR                  5       R                  5       U5        [        UR                  5       R                  5       U5        [        UR                  5       R                  5       U5        [        UR                  5       R                  5       U5        [        UR                  5       R                  5       U5        GM     g )Nr  r  rQ  )r   r  r  r   r  r   r  r  toliltodoktobsr)r   r   rP   rV   r  r  spms          r<   test_size_zero_conversions&_TestCommon.test_size_zero_conversions  s    BiKKKKKKA..#Csyy{224a8syy{224a8syy{224a8syy{224a8syy{224a8syy{224a8 r>   c                    [         R                  " / SQ/ SQ/[         R                  S9n[        [        SS9   U R                  U5        S S S 5        U R                  UR                  [         R                  5      5      n[        [        SS9   U R                  U[         R                  S9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)N)g      @r   g?r  r  zdoes not support dtyper  )rL   r   float16r<  r=  r  ry   r  )r   rP   A32s      r<   test_dtype_check_TestCommon.test_dtype_check  s    HHmY/rzzB:-EFNN1 G nnQXXbjj12:-EFNN3bjjN1 GF	 GF GFs   B6C6
C
Cc                 t   ^ ^ SS K m[        5       nUR                  [        5        UUU 4S j5       nU" 5         g )Nr   c                    > TR                   R                  5       n [        TR                  5       GHX  nTR	                  TR                  XS95      n[        U R                  UR                  5        [        U R                  5       UR                  5       5        [        U R                  UR                  5        U R                  R                  5        H  u  p4[        U[        R                  5      (       a  [        XBR                  U   5        M>  [        U[         5      (       aC  U(       a<  [        US   [        R                  5      (       a  [        XBR                  U   5        M  [#        XBR                  U   :H  5        M     GM[     g )N)protocolr   )r
  rO  rH  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r  rI   itemsrK   rL   r
   rh  r   )r
  r(  sploadedkeyr{  pickler   s        r<   r?  &_TestCommon.test_pickle.<locals>.check  s
   JJOO%E!&"9"9:!<<U(NOU[[(..9"5==?H4D4D4FGU\\8??; !& 4 4 6HC!#rzz22*30A0A#0FG$S%00S(Q<<*30A0A#0FG'8'8'= => !7 ;r>   )r/  r   r^  r*   )r   ra  r?  r/  s   `  @r<   test_pickle_TestCommon.test_pickle  s4    !

*+		? 
	?( 	r>   c                 4   ^  U 4S jnS H  nU" U5        M     g )Nc                   > U S:X  a  [         R                  " S5        TR                  R                  S;   a  [         R                  " S5        [	        [
        U 5      nTR                  [
        R                  " S5      R                  SS5      S-  5      nU" UR                  5       5      nU" U5      n[        UR                  5       U5        g )	Nsignz2sign conflicts with comparison op support on Numpy)rF   r  z%Unary ops not implemented for dok/lilr5  r  r        4@)rB  rC  r
  r  r   rL   r  r   r  r   r   )r   ufuncr  X0X2r   s        r<   r?  5_TestCommon.test_unary_ufunc_overrides.<locals>.check  s    v~ / 0zz  N2CDB%Eryy}44Q:S@AAqyy{#BqBrzz|R0r>   )sintanarcsinarctansinhtanharcsinharctanhrintr5  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  re   )r   r?  r   s   `  r<   test_unary_ufunc_overrides&_TestCommon.test_unary_ufunc_overrides  s    	1D $K	r>   c                    [         R                  " / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR	                  S5      S L 5        [        UR                  5       SS/SS/SS//5        UR	                  S	5        [        UR                  5       SS/SS//5        UR	                  S5        [        UR                  5       SS/SS/SS//5        UR	                  S
5        [        UR                  5       / SQ/ SQ/ SQ/5        UR	                  S
5        [        UR                  5       / SQ/ SQ/ SQ/5        UR	                  SS5        [        UR                  5       SS/SS/SS//5        U R                  (       a"  UR                  S;   a  UR	                  S5        O&[        [        [        [        4UR                  S5        S H  n[        [        UR                  U5        M      g )Nr  r   r  r  rj   r   r   r   r  r   r   r   r  rj   r  r   rj   r  rj   rj   r  r  )rj   r   r   r  )r  r[  ))r	  rj   r8  r$  )rL   r   r  r   resizer   r   r6  r  r<  r=  r  
IndexError)r   r	  r  	bad_shapes       r<   test_resize_TestCommon.test_resize  s   HHl""$ % NN1 D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)2)2)4 	5 	
199;)2)2)4 	5
 	
A199;!Q*+Q*+Q)1 	2 !((n"<HHQK:':JGSTU6I*ahh	: 7r>   c                 $   U R                   nUR                  nUR                  USS9n[        UR	                  5       UR	                  5       5        U[
        ;  a  [        [        X5      5        UR                  XR                  SS9n[        UR	                  5       UR	                  5       5        U[
        ;  a  [        [        X5      5        UR                  U[        R                  SS9n[        UR	                  5       UR	                  5       5        UR                  USS9n[        UR	                  5       UR	                  5       5        [        [        X5      (       + 5        S H  nXB:X  a  M
  UR                  U5      nUR                  USS9n[        UR	                  5       UR	                  5       5        UR                  USS9n[        UR	                  5       UR	                  5       5        [        [        XS5      (       + 5        M     g )NFr;  )rA   rO  T)r[  rZ  r  r  rF   r  )r
  r  r  rE   r   NON_ARRAY_BACKED_FORMATSr   rW   rA   rL   r  r   r  )r   rT   self_formatr  other_formatrU   s         r<   test_constructor1_base"_TestCommon.test_constructor1_base 	  s   JJhhKKK& aiik:66+A12KKuK5 aiik:66+A12KK%K8199;		4KKK% aiik:+A112FL*

<(AAE*A$QYY[!))+>AD)A$QYY[!))+>/556 Gr>   re   N)wr   r   r   r   r"  r.   r2  r'   r#  r$   r$  r!   r%  r"   r&  r&   r'  r#   r(  r%   r)  r   r+  classmethodr8  rE  rJ  rb  rg  rk  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r!  r+  r?  rB  markslowrW  ra  rn  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r_  r  r  r  r  r  r	  r  r"  r,  r2  r5  r;  r@  rJ  rO  rV  rb  ry  r  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  rL  rW  r]  r   re   r>   r<   r-  r-  +  s   @"KMMMMMMMG; ;.	1#J%N4=~<|8t8tY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F(" E65?&P(" F67A8$ Y Y 

 

 

 

 . ..'6R#6J &H &HP 9 9		
,02<08=t!DF3B>
;A3"32 #>0$X>64p+(2
D 86)DV:0)84t928*';R7r>   r-  c                   ,    \ rS rSrS rS rS rS rSrg)_TestInplaceArithmeticiB	  c                    [         R                  " S5      nU R                  U5      nUR                  5       nUR                  5       nX1-  nXB-  n[	        X45        UR                  5       nUR                  5       nX1-  nXB-  n[	        X45        U R
                  (       ag  UR                  5       nUR                  5       n[        [        SS9   X2R                  -  nS S S 5        X1-  nXB-  n[	        X4R                  5       5        OoUR                  5       nUR                  5       n[        [        SS9   X2-  nS S S 5        UR                  UR                  5      nXBR                  -  n[	        X45        UR                  5       nXBR                  -  nUR                  5       nUR                  5       n[        [        SS9   X2-  nS S S 5        UR                  UR                  5      nXBR                  -  n[	        X45        [        [        SS9   X2-  nS S S 5        g ! , (       d  f       GNI= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr:  inconsistent shapesr  zdimension mismatchunsupported operand)rL   rh  r  rO  r   r6  r<  r=  rj  r   r   r  )r   rP   rV   rB   rC   s        r<   test_inplace_dense)_TestInplaceArithmetic.test_inplace_denseC	  s   GGFONN1FFHFFH		1 FFHFFH		1 AAz1FGSS HAFAq))+. AAz1EF Gacc
AHAq$ FFH	SSFFHFFH:-ABFA CEE!##J	SS1  9,ABGA CB7 HG GF CB CBs0   H4H0II
H-0
H>
I
I c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                   > TR                   U    nTR                  U    n[        R                  " [        U SS9(       aC  UR                  5       nUS-  nUR                  5       nUS-  n[        XCR                  5       5        [        R                  " [        U SS9(       aD  UR                  5       nUS-  nUR                  5       nUS-  n[        XCR                  5       5        g g N	same_kind)castingrj   r'  	r4  r5  rL   can_castintrO  r   r   r  rA   r  r
  rP   rV   r   s        r<   r?  6_TestInplaceArithmetic.test_imul_scalar.<locals>.checkv	  s    //%(C%%e,E {{3{;JJLQHHJQ"1iik2{{5%=JJLT	HHJT	"1iik2 >r>   r+  rD  s   `  r<   test_imul_scalar'_TestInplaceArithmetic.test_imul_scalaru	  s!    	3& %%E%L &r>   c                    ^  U 4S jnT R                    HA  n[        R                  " U[        R                  " [        5      5      (       a  M9  U" U5        MC     g )Nc                   > TR                   U    nTR                  U    n[        R                  " [        U SS9(       aC  UR                  5       nUS-  nUR                  5       nUS-  n[        XCR                  5       5        [        R                  " [        U SS9(       aD  UR                  5       nUS-  nUR                  5       nUS-  n[        XCR                  5       5        g g rk  rn  rq  s        r<   r?  6_TestInplaceArithmetic.test_idiv_scalar.<locals>.check	  s    //%(C%%e,E{{3{;JJLQHHJQ"1iik2{{5%=JJLT	HHJT	"1iik2 >r>   )r2  rL   ro  rA   rp  rD  s   `  r<   test_idiv_scalar'_TestInplaceArithmetic.test_idiv_scalar	  s<    	3$ %%E ;;ubhhsm44e	 &r>   c                    U R                  [        R                  " S5      5      nU R                  [        R                  " S5      5      nU R                  [        R                  " S5      5      nX!-  nX1-   n[        UR	                  5       UR	                  5       5        U R
                  (       a0  X!-  nX1-  n[        UR	                  5       UR	                  5       5        X!-  nX1-  n[        UR	                  5       UR	                  5       5        X!-  nX1-
  n[        UR	                  5       UR	                  5       5        [        [        SS9   X-  nS S S 5        g ! , (       d  f       g = f)Nr  rf  r  )r  rL   r(   r   r   r6  r<  r  )r   rP   rV   bps       r<   test_inplace_success+_TestInplaceArithmetic.test_inplace_success	  s     NN266!9%NN266!9%^^BFF1I&	V		RZZ\2FABAIIK6	V		RZZ\2	V		RZZ\29,ABGA CBBs   E
E+re   N)	r   r   r   r   rg  rs  rx  r|  r   re   r>   r<   rc  rc  B	  s    0d.2r>   rc  c                   2    \ rS rSrS rS rS rS rS rSr	g)	_TestGetSeti	  c                 d   ^  U 4S jn[          H  nU" [        R                  " U5      5        M!     g )Nc                 l  > [        / SQ/ SQ/ SQ/ SQ/U S9nTR                  U5      nUR                  u  p4[        U* U5       H+  n[        U* U5       H  n[	        X%U4   XU4   5        M     M-     [	        [        US   5      U 5        S H$  n[        [        [        4UR                  U5        M&     g )Nr  r  r  r   r   rj   r   r  r  r  r  r  )r  r   r  )r  r	  r$  )
r   r  r   rH  r   r  r<  rU  r  __getitem__)	rA   r	  rT   r  r  r  rE  rk  r   s	           r<   r?  *_TestGetSet.test_getelement.<locals>.check	  s    w  (-.A q!A''CAA2q\r1A Q3Q30 & " afu-Bz95q}}bI Cr>   r.   rL   rA   rD  s   `  r<   test_getelement_TestGetSet.test_getelement	  s%    	J$ &E"((5/" &r>   c                 d   ^  U 4S jn[          H  nU" [        R                  " U5      5        M!     g )Nc                   > TR                  SU S9n[        5        nUR                  [        S5        U R	                  S5      US'   U R	                  S5      US'   U R	                  S5      US	'   U R	                  S
5      US'   U R	                  S5      US'   U R	                  S5      US'   U R	                  S5      US	'   S S S 5        U [
        R                  :w  a#  [        UR                  5       / SQ/ SQ/ SQ/5        S H  n[        [        UR                  US5        M!     / SQ[        / SQ5      4 H  n[        [        UR                  SU5        M!     [
        R                  " U [
        R                  5      (       d;  U [
        R                  :w  a&  S H  n[        [         UR                  SU5        M!     g g g ! , (       d  f       GN= f)Nr:  r  r[  r   r  r  r  rj   r  r{  r  r^  r'  r   r	  r&  r	  rq  r  )r   r  r   r'  )r   r   r  r   )rj   r   r&  r   ))r   r  )r	  r  r  r:  r  g     ^@r$  )r  )r  r   r^  r*   r  rL   bool_r   r   r<  rU  __setitem__r   r=  rq   r  r  )rA   rT   ra  rk  rC  r   s        r<   r?  *_TestGetSet.test_setelement.<locals>.check	  so   uE2A"$

24UV**Q-$**S/$**Q-$**S/$**Q-$ ::a=%**Q-$ %  "IIK$$$ 8j!--UC 8 uW~.j!--B / MM%););<<RXX%A!)Q]]E1E  & =5 %$s   B#F==
Gr  rD  s   `  r<   test_setelement_TestGetSet.test_setelement	  s&    	FB &E"((5/" &r>   c                 p   ^  U 4S jnT R                    H  nU" [        R                  " U5      5        M!     g )Nc                    > TR                  SU S9n[        5        nUR                  [        S5        SUS'   S S S 5        [	        US   S5        g ! , (       d  f       N= f)N)r  rY   r  r[  r  )r   r  )r  r   r^  r*   r   rA   rT   ra  r   s      r<   r?  9_TestGetSet.test_negative_index_assignment.<locals>.check 
  sT    we4A"$

24UV% % 51% %$s   A
ArI  rD  s   `  r<   test_negative_index_assignment*_TestGetSet.test_negative_index_assignment	  s*    	& %%E"((5/" &r>   c           	         ^ ^^ Su  mmUUU 4S jnSSS[        S5      S4S[        S5      4[        S5      [        S5      44 H  u  p#U" X#S5        M     g )	Nr  rY   c                   > U < SU< SU< 3nTR                  TT45      n[        5        nUR                  [        S5        SX@U4'   S S S 5        [	        UR                  5       X#S9  [	        X@U4   SUS9  g ! , (       d  f       N6= f)Nz ; r[  r  rJ  )r  r   r^  r*   r   r|  )	r  rE  nitemsr8   rT   ra  r  rD  r   s	         r<   	_test_set3_TestGetSet.test_scalar_assign_2.<locals>._test_set
  s    EQEVJ/C1v&A"$

24UVQ$ %  =Q$C8	 %$s   A99
Brj   r  r	  r'  r  r	  rq  r  )r   r   r  r  rE  r  rD  s   `   @@r<   test_scalar_assign_2 _TestGetSet.test_scalar_assign_2

  sV    1	9 WhrB"eBiBir+-DAaA-r>   c                 ,   U R                  S5      n[        R                  " S5      n[        5        nUR	                  [
        S5        X4 H  nSUS'   SUS'   SUS'   M     S S S 5        [        UR                  5       U5        g ! , (       d  f       N)= f)Nr  r[  r  r{  r  r  r(  r  rL   r   r   r^  r*   r   r   r   rT   rU   ra  r  s        r<   test_index_scalar_assign$_TestGetSet.test_index_scalar_assign
  s}    NN6"HHV CJJ.0QRV###  ! 	199;* ! s   0B
Bre   N)
r   r   r   r   r  r  r  r  r  r   re   r>   r<   r  r  	  s    #,##J#"	+r>   r  c                       \ rS rSrS rSrg)
_TestSolvei'
  c                    Sn[         R                  R                  S5        [        X4[        S9n[         R                  R                  U5      n[         R                  R                  US-
  5      S[         R                  R                  US-
  5      -  -   n[         R                  R                  U5      n[        [        U5      5       H  nX6   X&U4'   M     [        [        U5      5       H"  nXF   X&US-   4'   [        XF   5      X&S-   U4'   M$     U R                  U5      n[        5        nUR                  [        S5        [        U5      R                  U5      nS S S 5        [        X#-  U5        g ! , (       d  f       N= f)Nr5  r   r  r  r  r  )rL   r   rh   r   rv  r  rH  r   r   r  r   r^  r*   r3   solver   )r   rD  rT   rB   rC   rN  r  ra  s           r<   
test_solve_TestSolve.test_solve)
  s,    
		q1%w'IINN1IINN1Q3299>>!A##6 66IINN1s1vATAcF s1vAtA!eH Ac!eH  NN1 CJJ.?AQa A ! 	AE!$	 ! s   /1E77
Fre   N)r   r   r   r   r  r   re   r>   r<   r  r  '
  s    %r>   r  c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	5      S
 5       rS rS rS rS rS rSrg)_TestSlicingi?
  c                 <   [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R
                  S9SSS24   R                  [        R
                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        g )Nr  rY   r  r   r  r  )r   r  rL   r  rA   r]   r  r  r   s    r<   test_dtype_preservation$_TestSlicing.test_dtype_preservation@
  s    T^^F"((^;AacEBHH"((ST^^F"((^;AacEBHH"((ST^^F"**^=a!eDJJBJJWT^^F"**^=a!eDJJBJJWr>   c                    [         R                  [         R                  [         R                  [         R                  4 H  nU R                  SUS9n[        US S 2SSS24   R                  U5        [        USSS2S S 24   R                  U5        [        USSSS24   R                  U5        [        USSS2S4   R                  U5        M     g )NrR  r  r   rj   rL   r  r]   r  r  r  r   rA   r   dtrT   s      r<   #test_dtype_preservation_empty_slice0_TestSlicing.test_dtype_preservation_empty_sliceF
  s     88RXXrzz2::>BvR0A1a!e8**B/1Qq5!8**B/1a!e8**B/1Qq5!8**B/ ?r>   c           	         U R                  [        S5      R                  SS5      5      nU R                  U5      nU R                  (       a  SOS/S/S/4u  p4n[        XS S 24   USS S 24   R                  5       5        [        XSS24   USSS24   R                  5       5        U R                  / SQ/ S	Q/ S
Q/ SQ/5      nU R                  U5      n[        XdSS24   USSS24   R                  5       5        U R                  / SQ/ SQ/ S
Q/ SQ/5      nU R                  U5      n	[        XSS24   U	SSS24   R                  5       5        [        XSS 24   U	SSS 24   R                  5       5        [        [        UR                  [        S 5      S45        [        [        UR                  S[        SS5      45        g )N      I@r  rY   rt  r   r  rj   r  rj   r  r  r   r  r  r  r  r  r   r   rq     r  r&  )r+  r   r  r  r6  r   r   r<  rU  r  slice)
r   rU   rT   r0r1r2r  r	  ri  r.  s
             r<   test_get_horiz_slice!_TestSlicing.test_get_horiz_sliceP
  s   LL,,Qr23NN1"&"4"4YA3aS/
1U8Qq!tW__%6711W:qAaCy'8'8':;LL)Y	9EFNN111W:qAaCy'8'8':; LL)Y	9EFNN111W:qAaCy'8'8':;1W:qBCy'8'8':; 	j!--%+r1BCj!--!U1a[1ABr>   c           	         [        S5      R                  SS5      nU R                  U5      nU R                  (       a  SOS/S/S/4u  p4n[	        USS2U4   USS2S4   R                  5       5        [	        US S 2U4   US S 2S4   R                  5       5        [        / SQ/ S	Q/ S
Q/ SQ/5      nU R                  U5      n[	        USS2U4   USS2S4   R                  5       5        [	        US S 2U4   US S 2S4   R                  5       5        [        / SQ/ SQ/ S
Q/ SQ/5      nU R                  U5      n	[	        US S 2U4   U	S S 2S4   R                  5       5        [	        USS 2U4   U	SS 2S4   R                  5       5        [        [        UR                  [        S 5      S45        [        [        UR                  S[        SS5      45        g )Nr  r  rY   rt  r   r  rj   r  r  r  r  r  re  r  rq  r  r  r&  )r   r  r  r6  r   r   r   r<  rU  r  r  )
r   rU   rT   c0c1c2r  r	  ri  r.  s
             r<   test_get_vert_slice _TestSlicing.test_get_vert_slicee
  s   3K2&NN1"&"4"4YA3aS/
1QqS"W:q1ay'8'8':;1QU8Qq!tW__%679iI>?NN11QqS"W:q1ay'8'8':;1QU8Qq!tW__%67 9iI>?NN11QU8Qq!tW__%671RS"W:qay'8'8':; 	j!--%+r1BCj!--!U1a[1ABr>   c                 d   [        S5      R                  SS5      nU R                  U5      n[        USS2SS24   R	                  5       USS2SS24   5        [        USS 2S S24   R	                  5       USS 2S S24   5        [        US S2SS 24   R	                  5       US S2SS 24   5        [        / S	Q/ S
Q/ SQ/ SQ/5      nU R                  U5      n[        USS2SS24   USS2SS24   R	                  5       5        [        US S 2SS 24   US S 2SS 24   R	                  5       5        g )Nr  r  rY   rj   r   r  r  r	  re  r  r  r  )r   r  r  r   r   r   )r   rU   rT   ri  r.  s        r<   test_get_slices_TestSlicing.test_get_slices{
  s4   3K2&NN11QqS!A#X;..0!AaC1H+>1QR"W:--/12ss7<1SbS!"W:--/3B37< 9iI>?NN11QqS!A#X;!A#qs((;(;(=>1QU8Qq!"uX%5%5%78r>   c                    [         R                  R                  SS5      n U R                  U5      SSS2SSS24   n[        UR                  5       USSS2SSS24   5        g ! [         a    [
        R                  " S5      ef = f)Nr  r      rj   r6  r  feature not implemented)	rL   r   r  r  r=  rB  rC  r   r   )r   v0rC  s      r<    test_non_unit_stride_2d_indexing-_TestSlicing.test_non_unit_stride_2d_indexing
  s    YY^^B#	9r"1R61R6>2A
 	199;1R61R6>(:;	  	9++788	9s   A$ $!Bc                    U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US   US   5        [	        US   US   5        [	        US   US   5        [	        U[        S5      S4   US   5        [	        US[        S5      4   US   5        [	        U[        S5      [        S5      4   US   5        [	        US	S S 24   R                  5       US	S S 24   5        [	        US	SS24   R                  5       US	SS24   5        [	        U[        S	5      SS24   R                  5       US	SS24   5        [	        US S 2S	4   R                  5       US S 2S	4   5        [	        US
S2S4   R                  5       US
S2S4   5        [	        USS2S4   R                  5       USS2S4   5        [	        US	S2S
4   R                  5       US	S2S
4   5        [	        US	S2[        S
5      4   R                  5       US	S2S
4   5        [	        USS	2SS	24   R                  5       USS	2SS	24   5        [	        USS 2S
S 24   R                  5       USS 2S
S 24   5        [	        US S2S S24   R                  5       US S2S S24   5        [	        US	S2S S24   R                  5       US	S2S S24   5        [	        USS S 24   R                  5       USS S 24   5        [	        USS S 24   R                  5       USS S 24   5        [	        U[        S5      S S 24   R                  5       USS S 24   5        [	        USS R                  5       USS 5        [	        USS R                  5       USS 5        [        [        S	5      [        S5      S 5      n[	        X#S S 24   R                  5       US	S2S S 24   5        [	        US S 2U4   R                  5       US S 2S	S24   5        g )Nr  r  rY   r  r  r  r	  rq  rj   r  r  r(  r  r  )	r+  r   r  r  r   r   r   r  r   )r   rU   rT   r=  s       r<   test_slicing_2_TestSlicing.test_slicing_2
  s   LL++Ab12NN1 	QsVQsV$QtWag&QuXah'QuRy|_QuX.Qr%)|_QuX.QuRyr*+AeH5 	Qq!tW__&!Q$0Qq!B$wZ'')1Q"W:6QuQx2~&..0!AqtG*= 	Qq!tW__&!Q$0QqsAvY&&(!AaCF)4QqsBwZ'')1QqS"W:6QqtQwZ'')1QrT1W:6QqtU1X~&..0!AbD!G*= 	QqsAaCx[((*Aac1Q3hK8Qqr12vY&&(!ABF)4Qrr2A2vY&&(!BQBF)4QqtRaRx[((*AadBQBhK8 	Qq!tW__&!Q$0Qr1uX%%'2q52QuRy!|_,,."a%9 	QqV^^%q1v.QqW__&!B0 $q'$q'$'Q!tW__&!A#q&	2Qq!tW__&!QqS&	2r>   rj   c                   ^^ U R                  [        S5      R                  SS5      5      mU R                  T5      m[        R
                  nUS S USS USS  USS S2   USS USS US	SS
2   USS S2   US SS
2   SSUS S  USS S
SS[        S
5      [        R                  " S5      /nUU4S jn[        U5       H  u  pEU" U5        M     UU4S jn[        U5       H!  u  pu[        U5       H  u  pHU" XX5        M     M#     / n	[        R                  " S/S-  6  H)  u  pXn
U
S:X  a  M  U	R                  [        XXU
5      5        M+     U	 H  nU" XU5        U" US5        U" SU5        M     g )Nr  r  rY   rj   r  r  r  r5  r'  r	  r  rq  r   r  r  c                    > TU    nTU    nUR                   S:X  a  [        X[        U 5      5        g UR                  S:X  a  UR                  S:X  a  g [	        UR                  5       U[        U 5      5        g Nre   r   )r   r   r  rp   r   r   )rP   rB   rC   rT   rU   s      r<   check_1,_TestSlicing.test_slicing_3.<locals>.check_1
  s\    !A!Aww"}Q47+66Q;166Q;&qyy{AtAw?r>   c                   > [        U [        R                  5      (       a  [        U 5      nOU n[        U[        R                  5      (       a  [        U5      nOUnTX4   nTX#4   nUR                  S:X  a  [        XE[        X45      5        g UR                  S:X  a  UR                  S:X  a  g [        UR                  5       U[        X45      5        g r  )
rK   rL   r
   rp  r   r   r  rp   r   r   )rP   rV   aibirB   rC   rT   rU   s         r<   check_2,_TestSlicing.test_slicing_3.<locals>.check_2
  s     !RZZ((V!RZZ((V!$A"&	Aww"}Q4<066Q;166Q;&qyy{AtQF|Dr>   )
Nr   r  rj   r  r  r	  rq  r  i)r+  r   r  r  rL   s_r   r   	enumerate	itertoolsproductrN   r  )r   r  slicesr  rE  rP   r  r  rV   extra_slicesr  rT   rU   s              @@r<   test_slicing_3_TestSlicing.test_slicing_3
  s   LL++Ab12NN1UURa&"Qq'2ab62add8R)R!WQqV*bBiEQrEQ1r!AwB)RWWR[	*		@ f%DAAJ &	E0 f%DA!&) * &
  (( -= ,>>?,@ BGA!AvaA/	B AAMArNBN r>   c                 N   U R                  [        S5      R                  SS5      5      nU R                  U5      nUS   R                  S:X  d   eUS SSS24   R
                  S:X  d   eUS	   R
                  S
:X  d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   eUS SS S 24   R
                  S:X  d   eUSS S S 24   R
                  S:X  d   eUSS S 2S 4   R
                  S:X  d   eUS SS2S4   R
                  US SS2S4   R
                  s=:X  a  S:X  d   e   eUSS2S S4   R
                  USS2S S4   R
                  s=:X  a  S:X  d   e   eUSS2SS 4   R
                  USS2SS 4   R
                  s=:X  a  S:X  d   e   eUS SSS24   R
                  US SSS24   R
                  s=:X  a  S:X  d   e   eUSS SS24   R
                  USS SS24   R
                  s=:X  a  S:X  d   e   eUSSS2S 4   R
                  USSS2S 4   R
                  s=:X  a  S:X  d   e   eU R                  (       a  USS2S4   R
                  USS2S4   R
                  s=:X  a  S:X  d   e   eUSSS24   R
                  USSS24   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eg USSS24   R
                  USSS24   R
                  s=:X  a  S:X  d   e   eUSS2S4   R
                  USS2S4   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eg )Nr  r  rY   r  r   r  rj   r  )Nr  rj   Nr  )Nr  r  )r  N)rY   r  r  rj   r  )rj   )Nr  rj   )r  )r  Nrj   )r  rj   N)r+  r   r  r  r   r   r6  )r   rU   rT   s      r<   test_None_slicing_TestSlicing.test_None_slicing  s   LL++Ab12NN1w||q   q!A#$$...!"((F222 z7***z7***q!}""g---D!}""g---At}""g---qsA$$$!Q,(=(=GGGGGG1dA$$!A#tQ,(=(=GGGGGG1a$$!A#q$,(=(=GGGGGGq!A#$$$1Q3,(=(=GGGGGGD!A#$$!T1Q3,(=(=GGGGGGAaC$$!QqS$,(=(=GGGGGG QqS!V9??a!Qioo======Q!V9??a1Q3ioo======Z=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEQ!V9??a1Q3ioo??????QqS!V9??a!Qioo??????Z=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGr>   c                    U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [        R                  " [        S	S
9   US     S S S 5        [        R                  " [        SS
9   US     S S S 5        [        R                  " [        S	S
9   UR                  S     S S S 5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        US S2S4   R                  5       US S2S4   5        [	        USS S24   R                  5       USS S24   5        [	        US S2S4   R                  5       US S2S4   5        [	        USS S24   R                  5       USS S24   5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        USS 2SS4   R                  5       USS 2SS4   5        [	        USSSS 24   R                  5       USSSS 24   5        [	        USSSS 24   R                  5       USSSS 24   5        [	        US S2SS4   R                  5       US S2SS4   5        [	        USSS S24   R                  5       USSS S24   5        [	        USSS S24   R                  5       USSS S24   5        [        US   US   5        [        US   US   5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)Nr  r  rY   .).)r  .).r  ).r  zindex .5. out of ranger  )r  .zindex .10. out of range).rY   r  rj   )r  r  .)r  .r  )r+  r   r  r  r   r   rB  r   rU  rj  r   r   rV   rP   s      r<   test_ellipsis_slicing"_TestSlicing.test_ellipsis_slicing'  s   LL++Ab12NN11S6>>+QsV41T7??,ag61V9,,.&	:1V9,,.&	:1V9,,.&	:]]:-EFfI G]]:-FGgJ H]]:-EFCCK G 	1QRW:--/12s7<1S!"W:--/37<1RaRW:--/2A2s7<1S"1"W:--/37< 	1RaRW:--/2A2s7<1S"1"W:--/37<1QRW:--/12s7<1S!"W:--/37<1RS#X;..0!BCH+>1S"#X;..0!CH+> 	1QRCZ=002Aab!SjMB1QQRZ=002AaabjMB1S!QRZ=002AaabjMB1RaRCZ=002Abqb!SjMB1QRaRZ=002AabqbjMB1S!RaRZ=002AabqbjMBQy\1Y<0Qy\1Y<0; GFGGFFs$   5PPP0
P
P-0
P?c                    U R                  [        S5      R                  SS5      5      nU R                  U5      n/ SQnS/S-  U-   nX3-   nU/S-  n[	        [        X&S4   5      XS4   5        [	        [        USU4   5      USU4   5        [	        [        X#S4   5      XS4   5        [	        [        USU4   5      USU4   5        [	        [        X#SU4   5      XSU4   5        [	        [        USX44   5      USX44   5        [	        [        X#US4   5      XUS4   5        [        [        SS9   X#U4     S S S 5        g ! , (       d  f       g = f)	Nr  r  rY   )TFTFTF.zshape mismatchr  )r+  r   r  r  r   r   r<  r=  )r   numpy_arP   ix5ix10
ix10_6Truefull_ixs          r<   test_ellipsis_fancy_bool%_TestSlicing.test_ellipsis_fancy_boolP  sR   ,,vbz11!R89NN7#.w{S Y
&1*71c\?3Wc\5JK71S'\?3WS'\5JK71#X;/c1BC71S$Y<0'#t)2DE71#t^#45wC~7NO71S#^#45wsC~7NO71$^#45wD#~7NO:-=>:o ?>>s   6E
Ec           	         U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US/S4   R                  5       US/S4   5        [	        USS/S4   R                  5       USS/S4   5        [	        USS/4   R                  5       USS/4   5        [	        USSS/4   R                  5       USSS/4   5        [	        US/SS4   R                  5       US/SS4   5        [	        USS/SS4   R                  5       USS/SS4   5        [	        US/SS4   R                  5       US/SS4   5        [	        USS/S4   R                  5       USS/S4   5        [	        [        USS/SSS/4   5      USS/SSS/4   5        [	        [        USSS/SS/4   5      USSS/SS/4   5        g )Nr  r  rY   r  .rj   r  )r+  r   r  r  r   r   r  s      r<   test_ellipsis_fancy_slicing(_TestSlicing.test_ellipsis_fancy_slicingf  s   LL++Ar23NN11aS#X;..0!QCH+>1aVS[>113Q1vs{^D1S1#X;..0!C!H+>1S1a&[>113QsQF{^D1aS!S[>113QsAs{^D1aVQ^,4461a&!S.8IJ1aS#q[>113QsC{^D1S1#q[>113QsQC{^D71aVS1a&%8#9:Aq!fcAq6>Q<RS71S1a&1a&%8#9:AcAq6Aq6>Q<RSr>   c                 8   U R                  [        S5      R                  SS5      5      n[        R                  " [
        SS9   US     S S S 5        [        R                  " [
        SS9   US     S S S 5        g ! , (       d  f       N6= f! , (       d  f       g = f)Nr  r  rj   z(an index can only have a single ellipsisr  )..).r  .)r  r   r  rB  r   rU  r   rP   s     r<   test_multiple_ellipsis_slicing+_TestSlicing.test_multiple_ellipsis_slicingw  s    NN6!9,,Q23]]:!KMhKM ]]:!KMkNM MM MM Ms   A:+B:
B
Bre   N)r   r   r   r   r  r  r  r  r  r  r  rB  r`  	fail_slowr  r  r  r  r  r  r   re   r>   r<   r  r  ?
  sl    X0C*C,9	<+3Z [[1@ @D"HH'1R,T"r>   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)_TestSlicingAssigni  c                 n   U R                  S5      n[        R                  " S5      n[        5        nUR	                  [
        S5        X4 H3  nSUSS2S4'   SUSS2S4'   SUSS2S4'   SUSSS 24'   SUSS S2SS 24'   M5     S S S 5        [        UR                  5       U5        g ! , (       d  f       N)= f)	Nr  r[  r  r   r  r  r(  r	  r  r  s        r<   test_slice_scalar_assign+_TestSlicingAssign.test_slice_scalar_assign  s    NN6"HHV CJJ.0QRV!A#a%!A#a%!A#a%!AB$!%R%(  ! 	199;* ! s   AB&&
B4c                    ^ ^^ Su  mmUUU 4S jnS[        S5      4S[        S SS5      4S[        SS5      4[        S5      [        SS5      44 H  u  p#U" X#5        M     g )	Nr  c                 ,  > SU < SU< 3nTR                  TT45      n[        5        nUR                  [        S5        SX0U4'   S S S 5        [        R
                  " TT45      nSXPU4'   [        UR                  5       XRS9  g ! , (       d  f       NE= f)Nzi=z; j=r[  r  rJ  )r  r   r^  r*   rL   r   r   r   )	r  rE  r8   rT   ra  rU   r  rD  r   s	         r<   r  9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set  s    qe4u%C1v&A"$

24UVQ$ % !Q AAdG%aiik1B %$s   B
Brj   r  rY   r  r  rq  )r  r   r  s   `   @@r<   test_slice_assign_2&_TestSlicingAssign.test_slice_assign_2  sc    1	C q]QdB(:$;aq"=NAha-/DAaO/r>   c                    U R                  S5      n[        5        nUR                  [        S5        SUS'   SUS'   SUS'   S	US
'   US	-  nUSS S 24   USS S 24'   [	        USS S 24   R                  5       USS S 24   R                  5       5        US	-  nUS S2S S24   US S 2S S 24'   [	        [        R                  " S5      US   -   UR                  5       5        US	-  nUS SS S 24   R                  US S2S4'   [	        USS S 24   R                  5       R                  US S2S4   R                  5       5        S S S 5        g ! , (       d  f       g = f)Nr  r[  rj   r  r&  r  r  r  rY   r  r   r  r	  )	r  r   r^  r*   r   r   rL   r   rj  )r   rU   ra  rT   s       r<   test_self_self_assignment,_TestSlicingAssign.test_self_self_assignment  sA   NN5! CJJ.0QRAcFAcFAcFAcFBAqsVAacFq1v~~/1Q31ABBArr"1"uXAacFrxx37EBAa{}}Acrc!eHq1v~~/111SbSU83C3C3EF# !  s   D#E
Ec                    U R                  S5      n[        / SQ/ SQ/ SQ/ SQ/5      nSS/SS//n[        5        nUR                  [        S	5        S
US'   SUS'   SUS'   X-   US S 2S S 24'   [        UR                  5       U5        U R                  [        U5      5      US S2S S24'   [        UR                  5       S S2S S24   U5        S S S 5        g ! , (       d  f       g = f)Nr  rY   r   r   )r   r   r  )r   r  r   r  r  r   r  r[  r  r  r  r  r&  r  rj   )r  r   r   r^  r*   r   r   r%  )r   rU   r  blockra  s        r<   test_slice_assignment(_TestSlicingAssign.test_slice_assignment  s    NN5!(!"!# $ A!u CJJ.0QRAcFAcFAcFSAacFqyy{H5))%,7Abqb!eHqyy{2A2rr62E: !  s   BC
C%c                 t   U R                  S5      n[        5        nUR                  [        S5        SUS'   SUS'   SUS'   S	US
'   U R	                  [
        R                  " S5      5      US S& S S S 5        [        / SQ/ SQ/ SQ/ SQ/5      n[        UR                  5       U5        g ! , (       d  f       N@= f)Nr  r[  r  r  r  r  r&  r  rY   r  r  r  r  r  )
r  r   r^  r*   r&  rL   r(   r   r   r   )r   rU   ra  r  s       r<   "test_sparsity_modifying_assignment5_TestSlicingAssign.test_sparsity_modifying_assignment  s    NN5! CJJ.0QRAcFAcFAcFAcF&&rvvay1AbqE ! '''(;<199;1 ! s   AB))
B7c                 H   U R                  S5      n[        [        S[        5      5      n[        R
                  nUS S USS USS  USS S2   USSS2   USS S2   US S	S2   S
SUS S  USS	 SSS[        S5      [        R                  " S5      /n[        5        nUR                  [        S5        [        U5       H1  u  pgXaU'   XbU'   [        UR                  5       U[        U5      5        M3     [        U5       Hb  u  p[        U5       HN  u  piSU-  SUS-   -  -   XU	4'   SU-  SUS-   -  -   X'U	4'   [        UR                  5       U[        Xy45      5        MP     Md     [        SSS5      US
SSS24'   [        SSS5      US
SSS24'   [        UR                  5       U5        [        R                  " SS	S5      S S 2S 4   USS	S2S
4'   [        R                  " SS	S5      S S  USS	S2S
4'   [        UR                  5       U5        S S S 5        [!        ["        UR$                  S['        [        S5      5      5        [!        ["        UR$                  S[        S5      5        [!        ["        UR$                  S
[)        S 5      4['        [        S5      5      5        [!        ["        UR$                  [)        S 5      S4['        [        S5      5      5        [!        ["        UR$                  [)        S 5      S4UR+                  5       5        [!        ["        UR$                  / SQ/ SQ// SQ4/ SQ5        [!        ["        UR$                  / SQ/ SQ/ SQ// SQ/ SQ/4/ SQ5        [!        ["        UR$                  [)        S5      S
4SS/SS//5        g ! , (       d  f       GN= f)Nr  rj   r  r  r'  r	  r  rq  r  r   r  r  r[  rY     r  d   r$  r  r  )r  r  r  r  rj   r  )r   r  r  r  )r  r   r   r  rL   r  r   r   r^  r*   r  r   r   r  rH  r   r<  r=  r  listr  rO  )
r   rT   rU   r  r  ra  rE  rP   r  rV   s
             r<   test_set_slice!_TestSlicingAssign.test_set_slice  s5   NN6"%'(UURa&"Qq'2ab62add8QqV*bBiEQrEQ1r!AwB)RWWR[*
  CJJ.0QR!&)!!"199;47; *
 "&)%f-DATD!A#J.AcFTD!A#J.AcF&qyy{AtQF|D . * !B?Aa2aiL B?Aa2aiLqyy{A.))Aq!,QW5Aa!eQhK))Aq!,Q/Aa!eQhKqyy{A.% !* 	j!--eCj9IJj!--Ej!--!U4[1A5:&	(j!--%+q1A5:&	(j!--%+q1A1668Lj!--!9-y9<	Ij!--!9i8!9-/09	; 	j!--%(A1v1v&	(C ! s   E0N
N!c                     U R                  [        R                  " S5      5      nU R                  S5      nX!SS S24'   [        UR	                  5       / SQ/ SQ/5        g )Nr  r  r  rj   r  r  r  r  )r  rL   rh  r   r   r  s      r<   test_assign_empty$_TestSlicingAssign.test_assign_empty  sJ    NN2776?+NN6"!RaR%199;I(>?r>   c                     U R                  [        R                  " S5      5      n[        R                  " S5      nX!S S 2S4'   X!SS S 24'   [	        UR                  5       / SQ/ SQ/ SQ/5        g )Nr  r  r   r  rf  r  )r  rL   rh  r   r   r   r   rT   rB   s      r<   test_assign_1d_slice'_TestSlicingAssign.test_assign_1d_slice
  sR    NN2776?+HHQK!Q$!Q$199;Iy(IJr>   re   N)r   r   r   r   r  r  r  r  r  r  r"  r&  r   re   r>   r<   r  r    s.    +"G,;&2+(Z@Kr>   r  c                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)_TestFancyIndexingi  z~Tests fancy indexing features.  The tests for any matrix formats
that implement these features should derive from this class.
c                    [         R                  [         R                  [         R                  [         R                  4 H  nU R                  SUS9n[        US S 2SS/4   R                  U5        [        U/ SQS S 24   R                  U5        [        US S 2/ 4   R                  U5        [        U/ S S 24   R                  U5        M     g )NrR  r  F)FFFr  r  s      r<   #test_dtype_preservation_empty_index6_TestFancyIndexing.test_dtype_preservation_empty_index  s     88RXXrzz2::>BvR0A1uen,-33R80!34::B?1b5,2q5, ?r>   c                 8   U R                  [        R                  " SS/5      5      n[        [        [
        [        4UR                  S5        [        [        [
        [        4UR                  S5        [        [        [
        4UR                  / SQ/ SQ45        g )Nr  foorj   r.  r$  r  )r  rL   r   r<  rU  r=  r  r  r  s     r<   test_bad_index!_TestFancyIndexing.test_bad_index!  sh    NN288QF+,z:y91==%Pz:y91==*Uz:. ,/	1r>   c           
         U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US/   R                  5       US/   5        [	        USS/   R                  5       USS/   5        [	        USS/4   R                  5       USS/4   5        [	        USSS/4   R                  5       USSS/4   5        [	        USSS/4   R                  5       USSS/4   5        [	        U[        S5      SS/4   R                  5       USSS/4   5        [	        US[        SS/5      4   R                  5       USSS/4   5        [	        U[        S5      [        SS/5      4   R                  5       USSS/4   5        [	        US S 2/ S	Q4   R                  5       US S 2/ S	Q4   5        [	        USS
2S/4   R                  5       USS
2S/4   5        [	        USS
2SS/4   R                  5       USS
2SS/4   5        [	        USS
2[        SS/5      4   R                  5       USS
2SS/4   5        [	        US/S4   R                  5       US/S4   5        [	        USS/S4   R                  5       USS/S4   5        [	        USS/S4   R                  5       USS/S4   5        [	        U[        SS/5      S4   R                  5       USS/S4   5        [	        USS/[        S5      4   R                  5       USS/S4   5        [	        U[        SS/5      [        S5      4   R                  5       USS/S4   5        [	        US/S S 24   R                  5       US/S S 24   5        [	        USS/S S 24   R                  5       USS/S S 24   5        [	        USS/SS24   R                  5       USS/SS24   5        [	        U[        SS/5      SS24   R                  5       USS/SS24   5        [	        [        US/S
/4   5      US/S
/4   5        [	        [        USS/SS
/4   5      USS/SS
/4   5        [	        [        USS/SS/4   5      USS/SS/4   5        [	        [        U[        SS/5      SS/4   5      USS/SS/4   5        [	        [        USS/[        SS/5      4   5      USS/SS/4   5        [	        [        U[        SS/5      [        SS/5      4   5      USS/SS/4   5        [	        US/S//SS
/4   R                  5       US/S//SS
/4   5        [	        US/S/S//SS/4   R                  5       US/S/S//SS/4   5        [	        U[        S/S/S//5      SS/4   R                  5       US/S/S//SS/4   5        [	        US/S/S//[        SS/5      4   R                  5       US/S/S//SS/4   5        [	        U[        S/S/S//5      [        SS/5      4   R                  5       US/S/S//SS/4   5        [	        USS/   R                  5       USS/   5        [	        USS/   R                  5       USS/   5        [	        U[        SS/5         R                  5       USS/   5        [	        US/S S 24   S S 2S
/4   R                  5       US/S S 24   S S 2S
/4   5        [	        USS/S S 24   S S 2SS
/4   R                  5       USS/S S 24   S S 2SS
/4   5        [	        USS/S S 24   S S 2SS/4   R                  5       USS/S S 24   S S 2SS/4   5        [	        U[        SS/5      S S 24   S S 2[        SS/5      4   R                  5       USS/S S 24   S S 2SS/4   5        [	        USSS//4   SS//S4   R                  5       USSS//4   SS//S4   5        [	        USSS//4   SS//S4   R                  5       USSS//4   SS//S4   5        [        R                  " [        SS9   US S2SS//4     S S S 5        [        R                  " [        SS9   USS//S S24     S S S 5        [	        US S 2SS/4   SS
/S S 24   R                  5       US S 2SS/4   SS
/S S 24   5        [	        US S 2SS/4   SS/S S 24   R                  5       US S 2SS/4   SS/S S 24   5        [	        US S 2[        SS/5      4   [        SS/5      S S 24   R                  5       US S 2SS/4   SS/S S 24   5        [        [        S5      [        S
5      S 5      n[	        X#S S 24   R                  5       USS
2S S 24   5        [	        US S 2U4   R                  5       US S 2SS
24   5        [        R                  " S//[        S9n[	        X$U4   R                  5       XU4   5        [	        U/ // /4   R                  5       U/ // /4   5        g ! , (       d  f       GN= f! , (       d  f       GN= f)Nr  r  rY   r  r  r	  rj   r  )rj   r'  r  r	  r  r(  r  r'  r  rq  r   zOnly 1D or 2D arrays allowedr  r  )r+  r   r  r  r   r   r   rB  r   rU  r  r   rL   rp  )r   rU   rT   r=  r  s        r<   test_fancy_indexing&_TestFancyIndexing.test_fancy_indexing(  sF   LL++Ab12NN1 	QsV^^%q!v.Q1vY&&(!QF)4 	Qq1#vY&&(!AsF)4Qq1a&y\))+Qq1a&y\:QrAr7{^++-qaW~>QuRy1b')*224aQGnEQr5!R>)*224aQGnEQuRy%B.0199;QrAr7{^L 	Qq-'(002Aa6F4GHQqsQCx[((*AacA3hK8QqsRH}%--/1Q3R=1ABQqsE2r(O+,446!A#Bx-8HI 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w{^++-q!R"~>QuaW~r)*224aBnEQ2wb	)*224aBnEQuaW~uRy0199;Q2w{^L 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w"}%--/Ar7AbD=1ABQuaW~qt+,4461b'1R4-8HI 	WQsQCx[)1aS1#X;7WQ1v1v~./Aq6Aq6>1BCWQBx!R012Ar2hB6G4HIAeRHo2w./0!RHq"g4E2F	
 	Ar2hq"g./0!RHq"g4E2F	
 	AeRHouaW~567B8aW;L9M	

 	QaSzAq6)*224a!qc
QF8J6KLtbTB4 1b')*224tbTB4 1b')*	
 	ebTB4"&'!R0199;tbTB4 1b')*	
 	tbTB4 %B.0199;tbTB4 1b')*	
 	ebTB4"&'2w78@@BtbTB4 1b')*	
 	Q1vY&&(!QF)4QBx[((*Ar2hK8Qub"X'//11b"X;? 	QsAvYq1#v&..0!QCF)AsF2CDq!faiLQF#++-q!Q|A1vI/F	
 	r2hkN1q"g:&..0!RHaK.QG2L	
 	eRHoq !!UAr7^"34<<>r2hkN1q"g:&	
 	a1a&kNQF8Q;'//11Q!Q[>Aq6(A+3N	
 	a2r(mq"gY\*224aRH:6FByRS|6T	
 ]]:-KLbqbAq6(lO M]]:-KL1vhlO M 	a!QiL!Q#++-qQF|QFAI/F	
 	a"bkNAr7A:&..0!ABxK.!R!2L	
 	aBx !%B.!"34<<>a"bkNAr7A:&	
 $q'$q'$'Q!tW__&!A#q&	2Qq!tW__&!QqS&	2 HHqcU#&Q!tW__&Q$0 	QtbTz]**,ard
m<9 MLLLs   
h18i1
i 
ic                 p   [         R                  R                  S5        SnSnSnU R                  [         R                  R	                  X#5      5      n[         R
                  " XDS:  5      n[         R                  R                  U* S-   X!S9n[         R                  R                  U* S-   X1S9nU R                  U5      nXuU4   n[        U5      (       a  UR                  5       n[        XXV4   5        XR-   n	Xc-
  n
[        [        UR                  X45        [        [        UR                  XZ45        g )Nrg   r  r  r  r|  r  rI  )rL   r   rh   r+  r  r]  rl   r  r)   r   r   r<  rU  r  )r   NUM_SAMPLESr  r  r	  Irl  r  SIJI_badJ_bads              r<   test_fancy_indexing_randomized1_TestFancyIndexing.test_fancy_indexing_randomized  s    
		tLL,-KKs7#IIqb1fa:IIqb1fa:NN1!fC==++-CSAC&!j!--%;j!--!;r>   c                    Su  pU R                  [        X-  5      R                  X5      5      nU R                  U5      n[        R
                  " US-   [        S9n[        R
                  " US-
  [        S9n[        R
                  " US-   [        S9n[        R
                  " US-
  [        S9nSn	[        R                  " XV[        S 5      4Xx[        S 5      45       HY  u  p[        U
[        5      (       a  [        U[        5      (       a  M1  [        R                  " [        U	S9   XJU4   nS S S 5        M[     g ! , (       d  f       Mm  = f)Nr  r  r  rj   z(bool index .* has shape .* instead of .*r  )r+  r   r  r  rL   rh  r>  r  r  r  rK   rB  r   rU  )r   r  r  rU   rT   row_long	row_shortcol_long	col_shortr  r  rE  rI  s                r<   test_missized_masking(_TestFancyIndexing.test_missized_masking  s   LL..q45NN1 771q5-GGAE.	771q5-GGAE.	8%%%+.%+.
DA !U##
1e(<(<z7dG 87
 87s   *D>>
E	c                    [         R                  R                  S5        U R                  [	        S5      R                  SS5      5      nU R                  U5      n[         R                  " [         R                  R                  SSSS9[        S9n[         R                  " [         R                  R                  SSSS9[        S9n[         R                  " [         R                  R                  SSS	S9[        S9n[        [        X#   5      X   5        [        [        US S 2U4   5      US S 2U4   5        [        [        X%   5      X   5        [        [        X!S
:     5      XS
:     5        [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        X#U4   5      XU4   5        [         R                  " S[        S9n[         R                  " S[        S9nSUS'   [         R                  " S[        S9nSUS'   [        [        UR                  U5        [        [        UR                  U5        [        [        UR                  U5        [        [        [         4UR                  US45        g )Nrg   r  r  rY   r   rj   rI  r  r  r(  )TFTTF)
FTTFTFFFFF)r  r  Tr  )r	  r   r  )rL   r   rh   r+  r   r  r  r   rl   r>  r   r   r   r<  rU  r  r=  )	r   rU   rT   r7  rl  r  Z1Z2Z3s	            r<   test_fancy_indexing_boolean._TestFancyIndexing.test_fancy_indexing_boolean  s   
		tLL++Ab12NN1HHRYY&&q!!&4DAHHRYY&&q!"&5TBHHRYY&&q!'&:$GWQT]AD)WQq!tW%qAw/WQT]AD)WQ1uX&a%1HH56HH 9 : 	WQ!tW%qAw/XXgT*XXgT*4XXgT*4j!--4j!--4j!--4z:.1vFr>   c                    [         R                  R                  S5        U R                  [	        S5      R                  SS5      5      nU R                  U5      n[         R                  " [         R                  R                  SSSS9[        S	9nU R                  U5      n[        [        X$   5      X   5        [        [        X"S
:     5      XS
:     5        [         R                  " [         R                  R                  SSSS9[        S	9n[         R                  " [         R                  R                  SSSS9[        S	9nU R                  U5      nU R                  U5      n[        [        UR                  U5        [        [        UR                  U5        [        [        [         4UR                  US45        g )Nrg   r  r  rY   r   rj   r  rI  r  r(  )r  r  )r  rY   r  )rL   r   rh   r+  r   r  r  r   rl   r>  r&  r   r   r<  rU  r  r=  )	r   rU   rT   r  XspZr  ZspYsps	            r<   "test_fancy_indexing_sparse_boolean5_TestFancyIndexing.test_fancy_indexing_sparse_boolean  sG   
		tLL++Ab12NN1HHRYY&&q!'&:$G  #WQV_ad+WQ1uX&a%1HHRYY&&q!'&:$GHHRYY&&q!'&:$G  #  #j!--5j!--5z:.QxHr>   c                     U R                  [        / SQ/ SQ/ SQ/5      5      n[        R                  " UR	                  S5      5      S:  n[        US S 2U4   R                  5       SS/SS/SS//5        g )Nr  r  r   r  )r  r   rL   ravelr|  r   r   )r   r   desired_colss      r<   #test_fancy_indexing_regression_30876_TestFancyIndexing.test_fancy_indexing_regression_3087  sf    nnUIw#@ABxx
+a/SL)113q!fq!fq!f5MNr>   c           	          U R                  [        SS/SS//5      5      n[        [        UR                  S[
        R                  " SS/5      5        g )Nr  r   r  rj   )r  r   r<  r=  r  rL   r   s     r<   test_fancy_indexing_seq_assign1_TestFancyIndexing.test_fancy_indexing_seq_assign  s@    nnUQFQF#345j#//6288QqE?Kr>   c                 (   U R                  [        SS/SS//5      5      n[        5        nUR                  [        S5        USS/SS/4   USS/SS/4'   S S S 5        [        [        U5      [        SS/SS//5      5        g ! , (       d  f       N3= f)Nr  r   rj   r  r[  )r  r   r   r^  r*   r   r   )r   r   ra  s      r<   test_fancy_indexing_2d_assign0_TestFancyIndexing.test_fancy_indexing_2d_assign  s    nnUQFQF#345 CJJ.0QR"%q!fq!fn"5CAA ! 	WS\51a&1a&)9#:; ! s   +B
Bc                 `   U R                  [        S5      R                  SS5      5      nSUSS S 24'   SUS S 2S4'   SUS'   U R                  U5      n[        R
                  " / SQ5      n[        [        X#   5      X   5        [        R
                  " / [        S	9n[        [        X#   5      X   5        [        [        X#U4   5      XU4   5        [        R
                  " / S
Q[        S	9S S 2S 4   n[        [        X#U4   5      XU4   5        [        [        X$U4   5      XU4   5        g )Nr  r  rY   r   r  rj   r  r  FFFFFr  r   r  rj   r  r  	r+  r   r  r  rL   r   r   r   rp  r   rU   rT   rm  rl  s        r<   test_fancy_indexing_empty,_TestFancyIndexing.test_fancy_indexing_empty  s    LL++Ab12!A#!A##NN1HH89WQT]AD)HHRs#WQT]AD)WQ!tW%qAw/HH_C048WQ!tW%qAw/WQ!tW%qAw/r>   re   N)r   r   r   r   r"  r+  r0  r3  r;  rB  rH  rO  rT  rW  rZ  rb  r   re   r>   r<   r)  r)    sE    -1{=z<4,G@I.O
L<0r>   r)  c              #      #    [        U S5      (       a  U R                  (       d  Sv   gSv   U R                  R                  5       nSU l        U R	                  5         [        XR                  S5        g7f)zIChecks that sorted indices property is retained through an operation
    has_sorted_indicesNFz'Expected sorted indices, found unsorted)r   re  r  rO  sort_indicesr   )r  r  s     r<   check_remains_sortedrg  .  sZ      1*++13G3G	iinnG ANNw		@Bs   A4A6c                   2    \ rS rSrS rS rS rS rS rSr	g)	_TestFancyIndexingAssigni=  c                     U R                  [        R                  " SS/5      5      n[        [        [
        [        4UR                  SS5        [        [        [
        [        4UR                  SS5        g )Nr  r.  rj   r/  )r  rL   r   r<  rU  r=  r  r  r  s     r<   test_bad_index_assign._TestFancyIndexingAssign.test_bad_index_assign>  sQ    NN288QF+,z:y91==%QRSz:y91==*VWXr>   c                 T  ^ ^^ Su  mmUUU 4S jnS[        S SS5      4[        R                  " S5      [        SS5      4[        S	S5      [        SS5      44 H  u  p#U" X#5        M     [        R                  " S5      [        R                  " S5      4S
4 H  u  p#U" X#5        M     g )Nr  c                   > TR                  TT45      nTR                  [        R                  " TT45      5      n[	        5        nUR                  [        S5        SX0U4'   [        U5         SX U4'   S S S 5        S S S 5        [        UR                  5       U5        g ! , (       d  f       N1= f! , (       d  f       N:= fNr[  r  )
r  r+  rL   r   r   r^  r*   rg  r   r   )r  rE  rT   rU   ra  r  rD  r   s        r<   _test_set_sliceI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_sliceF  s    1v&ARXXq!f-.A"$

24UVQ$)!,AdG - %
 &aiik15 -, %$s$   (B1.B 5B1 
B.	*B11
B?r  rY   r  r  r  rq  rj   )r  r  )r  rL   r   r   rp  r  rE  r  rD  s   `   @@r<   test_fancy_indexing_set0_TestFancyIndexingAssign.test_fancy_indexing_setC  s    1	6  tR!34iilE!RL1Aqk5B<02DA A!2 iilBIIaL13IJDAA! Kr>   c                 d   ^  U 4S jn[          H  nU" [        R                  " U5      5        M!     g )Nc                 V  > TR                  SU S9n[        5        nUR                  [        S5        U R	                  S5      USS/SS/4'   [        UR                  5       U R	                  S5      S-  5        U R	                  S5      USS2SS24'   [        UR                  5       U R	                  S5      S-  5        U R	                  S5      US	'   [        UR                  5       U R	                  S5      S-  U R	                  S5      -   5        S S S 5        g ! , (       d  f       g = f)
Nr  r  r[  r  r   rj   r  r  rS  )r  r   r^  r*   r  r   r|  r  s      r<   r?  D_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.checkX  s    vU3A"$

24UV!&A1Q%1+QUUWejjmAo6"ZZ_!A#ac'
QUUWejjmAo6C#QUUWejjmAo

1&EF %$$s   C5D
D(r  rD  s   `  r<   test_fancy_assignment_dtypes5_TestFancyIndexingAssign.test_fancy_assignment_dtypesW  s%    		G &E"((5/" &r>   c                    U R                  S5      nU R                  [        SS5      5      n/ SQnSn[        U5      n[        5        nUR	                  [
        S5        [        U5         X#S4   R                  USU4'   X$S4   R                  USU4'   X%S4   R                  USU4'   S S S 5        [        UR                  5       UR                  R                  5       5        U R                  S	5      n[        U5         S
S/USSS24'   S S S 5        [        UR                  5       / SQ/ SQ/5        U R                  S5      n[        U5         S
/S//USS2S4'   S S S 5        [        UR                  5       SS/SS
/SS//5        U R                  S5      nU R                  [        R                  " S5      5      n[        U5         X4 H  n/ SQU/ SQ/ SQ4'   M     S S S 5        [        UR                  5       U5        U R                  S5      n[        U5         / SQUS'   S S S 5        [        UR                  5       S5        U R                  [        R                  " S5      5      n/ SQUS'   [        UR                  5       U5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r  rt  r[  r   r  rj   r  rY   r5  r  )r   rY   r5  rR  r  r%  r$  )r$  rt  r  )r  r(   r   r   r^  r*   rg  rj  r   r   r+  rL   r   r   r|  )r   rT   rU   i0i1i2ra  r  s           r<   test_sequence_assignment1_TestFancyIndexingAssign.test_sequence_assignmentf  sd   NN5!NN3q8$2Y CJJ.0QR%a(qD'))!B$qD'))!B$qD'))!B$ ) qyy{ACCKKM: u%A%a(r7!AaC% )qyy{Y,DE u%A%a(D";!A#a% )qyy{aVaWq"g,FG u%ARXXe_-A%a(A*1Agw&'   ) qyy{A. v&A%a(*3&' )+RXXf-.A&/A"#qyy{A.G ! (( )( )( )( )(= ! s   "K1*A J*AK1 J+AK1J=A,K1
K">K1 K (A(K1
J(	#K1+
J:	5K1=
K	K1
K	K1 
K.	*K11
K?c                 T   U R                  [        S5      R                  SS5      5      nSUSS S 24'   SUS S 2S4'   SUS'   U R                  U5      n[        R
                  " / SQ5      nS	X#'   [        [        U5      U5        [        R
                  " / [        S
9nS	X#'   [        [        U5      U5        S	X#U4'   [        [        U5      U5        [        R
                  " / SQ[        S
9S S 2S 4   nS	X#U4'   [        [        U5      U5        S	X$U4'   [        [        U5      U5        g )Nr  r  rY   r   r  rj   r]  r^  *   r  r_  r`  ra  s        r<   test_fancy_assign_empty0_TestFancyIndexingAssign.test_fancy_assign_empty  s    LL++Ab12!A#!A##NN1HH89WQZ#HHRs#WQZ#A#WQZ#HH_C048A#WQZ#A#WQZ#r>   re   N)
r   r   r   r   rk  rs  rx  r~  r  r   re   r>   r<   ri  ri  =  s    Y
"(#+/Z$r>   ri  c                       \ rS rSrS rSrg)_TestFancyMultidimi  c           
      t   [         R                  " S/S/S//5      [         R                  " / SQ5      4[         R                  " S/S/S//5      [         R                  " / SQ/5      4[         R                  " / SQ/5      [         R                  " S/S/S//5      4[         R                  " / SQ5      [         R                  " S/S/S//5      4[         R                  " / SQ/ SQ/5      [         R                  " / SQ/ SQ/5      4/nU GH*  u  p#[         R                  R                  S	5        U R	                  [         R                  R                  S
S5      5      nU R                  U5      nXRU4   n[        U5      (       a  UR                  5       n[        XdX#4   5        US
-   nUS-   n[        [        UR                  Xs45        [        [        UR                  X(45        [        [        UR                  X"/[        S 5      45        [        [        UR                  [        S 5      X3/45        GM-     g )Nr  rj   r  r  r  rj   r$  r  r  r  r  rj   r  r  rg   r  r&  )rL   r   r   rh   r+  r  r  r)   r   r   r<  rU  r  r  )	r   setsr7  rl  r	  r  r8  r9  r:  s	            r<   test_fancy_indexing_ndarray._TestFancyMultidim.test_fancy_indexing_ndarray  s   XXsQC!o&(;<XXsQC!o&)(=>XXyk"BHHqcA3_$=>XXi "((QC!qc?";<XXy),-XXy),-/ DAIINN4 RYY^^Aq12Aq!AaC&C}}kkmf%EEEE*ammeY?*ammaY? *ammqfeDk5JK*ammeDkA65JK% r>   re   N)r   r   r   r   r  r   re   r>   r<   r  r    s    Lr>   r  c                   ,    \ rS rSrS rS rS rS rSrg)_TestFancyMultidimAssigni  c                    [         R                  R                  S5        U R                  [         R                  R	                  SS5      5      nU R                  U5      n[         R                  R	                  SS5      n[         R                  " / SQ/ SQ/5      n[         R                  " / SQ/ S	Q/5      n[        U5         X2XE4'   S S S 5        X1XE4'   [        UR                  5       U5        US-   nUS-   n/ SQn[        U5         XXE4'   S S S 5        XXE4'   [        UR                  5       U5        [        U5         SX$U4'   S S S 5        SXU4'   [        UR                  5       U5        [        [        UR                  Xe4U5        [        [        UR                  XG4U5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f
Nrg   r  r&  rj   r  r$  r  r  r  )rL   r   rh   r+  r  r  r   rg  r   r   r<  rU  r  )	r   r	  r  r  r7  rl  r9  r:  r  s	            r<   test_fancy_assign_ndarray2_TestFancyMultidimAssign.test_fancy_assign_ndarray  sb   
		tLL1-.NN1IINN1a HHi+,HHi+,!!$acF %!#QYY[!$AA!!$acF %!#QYY[!$!!$AcF %A#QYY[!$j!--%A>j!--!A>+ %$ %$
 %$s$   F+	F<G+
F9<
G

Gc                    ^ ^^ Su  mmUUU 4S jn[         R                  " SS/SS//5      SS/4[         R                  " SS/5      SS/SS//4/ SQ/ S	Q// S
Q/ SQ/44 H  u  p#U" X#5        M     g )Nr  c                   > TR                  TT45      n[        U5         [        5        nUR                  [        S5        SX U4'   S S S 5        S S S 5        TR                  [        R                  " TT45      5      nSX@U4'   [        UR                  5       U5        g ! , (       d  f       N^= f! , (       d  f       Ng= fro  )
r  rg  r   r^  r*   r+  rL   r   r   r   )r  rE  rT   ra  rU   r  rD  r   s        r<   rp  R_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_slice  s    1v&A%a(*;*=

24UVQ$ +>( RXXq!f-.AAdG%aiik15 +>*=((s"   B1B B1 
B.	*B11
B?r  rj   r  r   r  r$  r   rj   r  )r   r  r  )r  r  rj   )rL   r   rr  s   `   @@r<    test_fancy_indexing_multidim_set9_TestFancyMultidimAssign.test_fancy_indexing_multidim_set  s    1	6 hhAA/01a&91a&)QFQF+;<#Y/)Y1GHJDA A!Jr>   c           	      >   [         R                  R                  S5        U R                  [         R                  R	                  SS5      5      nU R                  U5      n[         R                  R	                  SS5      n/ SQ/ SQ/n/ SQ/ S	Q/nX2XE4'   X1XE4'   [        UR                  5       U5        U VVs/ s H  of Vs/ s H  owS-   PM	     snPM     nnnU V	V
s/ s H  o V
s/ s H  oS-   PM	     sn
PM     nn	n
/ SQnXXE4'   XXE4'   [        UR                  5       U5        SX$U4'   SXU4'   [        UR                  5       U5        [        [        UR                  X4U5        [        [        UR                  XK4U5        g s  snf s  snnf s  sn
f s  sn
n	f r  )rL   r   rh   r+  r  r  r   r   r<  rU  r  )r   r	  r  r  r7  rl  r  iir9  rE  jjr:  r  s                r<   test_fancy_assign_list/_TestFancyMultidimAssign.test_fancy_assign_list  sT   
		tLL1-.NN1IINN1a 	"	"!#!#QYY[!$/01q!1%1Rq&1%q1/01q!1%1Rq&1%q1!#!#QYY[!$A#A#QYY[!$j!--%A>j!--!A> &1%1s0   9	FF	F	F(F6F	FFc                    [         R                  R                  S5        U R                  [         R                  R	                  SS5      5      nU R                  U5      n/ SQn/ SQnU Vs/ s H  oUS-   PM	     nnU Vs/ s H  owS-   PM	     nn/ SQn	[         R                  " S5      S S 2S 4   n
[        [        UR                  U[        S 5      4U	5        [        [        UR                  [        S 5      U4U
5        g s  snf s  snf )Nrg   r  r&  )r  rj   r  r  r  rj   )r  r  r  rj   r  r  )r  rj   r  r  r  r  r&  )rL   r   rh   r+  r  r  r   r<  rU  r  r  )r   r	  r  r7  rl  r  r9  r  r:  C1C2s              r<   test_fancy_assign_slice0_TestFancyMultidimAssign.test_fancy_assign_slice  s    
		tLL1-.NN1"#$!Ba!$"#$!Ba!$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,D  Dre   N)	r   r   r   r   r  r  r  r  r   re   r>   r<   r  r    s    ?B""?:Kr>   r  c                   f    \ rS rSrSrS r\R                  R                  S5      S 5       r	S r
Srg)	_TestArithmetici0  z
Test real/complex arithmetic
c                    [        / SQ/ SQ/ SQ/ SQ/S5      n[        / SQ/ SQ/ SQ/ S	Q/S
5      n[        / SQ/ SQ/ SQ/ SQ/S5      Ul        [        US-  R                  S5      SU-  5        [        UR                  S-  R                  S5      SUR                  -  5        [        UR                  S-  R                  S5      SUR                  -  5        U R                  U5      nU R                  U5      nXX44$ )N)g      g      @r         @r   r   )g      	@g     g      ?r   r   r   )r   r         r  r   r   )r   r   g      @r   r   r   r  )g      ?r   r   r   r  g      @)g     ,@g      r   r   r  r   )r   g      @r   r   r   r   )g     2@      r   r   r   r   r  )g      ?r   r   r   r  g      )r       @r   r   r   g      @)r   r  r   r   r   r   )r  r   r   r   r   r      r]   )r   r  r   ry   r  r  )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r<   __arith_init_TestArithmetic.__arith_init4  s    /9302 4=> .9/57 9EF 4;579 ;DE 	CF??73BsF;CHHRK//8CHHECHHRK//8CHHEs#s#%%r>   r5  c                 &   U R                  5       u  pp4[        X4-   R                  5       X-   5        [         GH  n[        R
                  " SS9   UR                  U5      nS S S 5        U R                  W5      n[         GHc  n[        R                  " U[        R                  5      (       d9  [        R
                  " SS9   UR                  R                  U5      n	S S S 5        OUR                  U5      n	U R                  W	5      n
Xi-   nXz-   n[        UR                  UR                  5        [        UR                  5       U5        [        Xy-   U5        [        Xj-   U5        [        R                  " S5      XX4;   a  GM  Xi-
  nXz-
  n[        UR                  UR                  5        [        UR                  5       U5        [        Xy-
  U5        [        Xj-
  U5        GMf     GM     g ! , (       d  f       GN= f! , (       d  f       GN= f)Nrr  rs  r>  )_TestArithmetic__arith_initr   r   r.   rL   rw  ry   r  rq   r  r  r   rA   r   r  r  r  r  rB   rT   rj  rC   rU   r^  D1S1s                r<   test_add_sub_TestArithmetic.test_add_subL  s   !%!2!2!4% 	]##%sy	

 "!AX.JJqM /..#C%%}}Q(:(:;;X6HHOOA. 76 

1AnnQ' UYRXXbhh/"2::<4"372."172. 88F#v-UYRXXbhh/"2::<4"372."172.9 &	 "..
 76s   G/H/
G>	
Hc           
      r   U R                  5       u  pp4[        X4R                  -  R                  5       XR                  -  5        [         GHD  n[
        R                  " SS9   UR                  U5      nS S S 5        U R                  W5      n[         H  n[
        R                  " U[
        R                  5      (       a  UR                  U5      n	O8[
        R                  " SS9   UR                  R                  U5      n	S S S 5        U R                  W	5      n
XiR                  -  nXzR                  -  n[        UR                  5       US[        U5      R                  5       -  S9  [        UR                   UR                   5        M     GMG     g ! , (       d  f       GN'= f! , (       d  f       N= f)Nrr  rs  g+=)atol)r  r   rj  r   r.   rL   rw  ry   r  rq   r  r  r   r  r\   r   rA   r  s                r<   test_mu_TestArithmetic.test_mux  s/   !%!2!2!4% 	EGGO446%%K	) "!AX.JJqM /..#C%==B$6$677

1AX6HHOOA. 7nnQ'W55[

b%*3r7;;=%8:RXXbhh/ &	 ".. 76s   $F(F(
F%	(
F6re   N)r   r   r   r   r"  r  rB  r`  r  r  r  r   re   r>   r<   r  r  0  s5    &0 [[2)/ )/V0r>   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)_TestMinMaxi  c                    [         R                  [         R                  [         R                  [         R                  [         R
                  4 GHJ  n[         R                  " SUS9R                  SS5      nU R                  U5      n[        UR                  5       S5        [        UR                  5       S5        [        UR                  5       R                  U5        [        UR                  5       R                  U5        US-  nU R                  U5      n[        UR                  5       S5        [        UR                  5       S5        US-  nU R                  U5      n[        UR                  5       S	5        [        UR                  5       S5        GMM     U R                  [         R                  " S
S5      R                  SS5      5      n[        UR                  5       S
5        [        UR                  5       R                  UR                  5        [        UR                  SS9S
5        U* n[        UR                  5       S5        [        UR                  SS9S5        U R                  [         R                  " S5      5      n[        UR                  5       S5        [        UR                  5       S5        [        UR                  5       R                  UR                  5        [         R                  " S[        S9R                  SS5      nSUSS2S S 24'   U R                  U5      n[        UR                  5       S5        [        UR                  5       S5        [         R                  " S5      [         R                  " S5      [         R                  " S5      4 HH  nU R                  U5      n[        [         UR                  5        [        [         UR                  5        MJ     g )Nr5  r  r  r  r      r	  iir  rY   r  Texplicitr  rj   r  r   rY   rY   r   )rL   r  r  r]   rk   r  r   r  r  r   rs   r\   rA   r   r  r<  r=  )r   rA   r	  r  rL  s        r<   test_minmax_TestMinMax.test_minmax  s   jj"**bhh"--PE		"E*221Q7Aq!A!$"%..GAq!A#&!$FAq!A#&!$# Q( NN299Q+33Aq9:QUUWa QUUW]]AGG,QUUDU)1-BQUUWb!QUUDU)2. NN288F+,QUUWa QUUWa QUUW]]AGG, IIb&..q3!A#q&	NN1QUUWa QUUWb! ((6"BHHW$5rxx7HIAq!A*aee,*aee, Jr>   c           	         U R                   (       + n[        R                  " S5      R                  SS5      nSUSS S 24'   SUS S 2S4'   SUS'   SUS	'   U R	                  U5      nSS
/nSS/nXT-    Hk  n[        UR                  US9R                  5       UR                  XaS95        [        UR                  US9R                  5       UR                  XaS95        Mm     U H  n[        UR                  USS9R                  5       U R                  / SQ5      5        [        R                  " UR                  S:H  5      (       a  U R                  / SQ5      nOU R                  / SQ5      n[        UR                  USS9R                  5       U5        M     U H  n[        R                  " / SQ5      n[        R                  " / SQ5      n	U R                   (       d"  UR                  S5      nU	R                  S5      n	[        UR                  USS9R                  5       U5        [        UR                  USS9R                  5       U	5        M     [        R                  " SS5      R                  SS5      nU R	                  U5      nXT-    Hk  n[        UR                  US9R                  5       UR                  XaS95        [        UR                  US9R                  5       UR                  XaS95        Mm     [        UR                  SS9UR                  SUS95        U H  nUSS S 24   nUSS S 24   n	U R                   (       d  US SS S 24   nUS SS S 24   n	[        UR                  USS9R                  5       U5        [        UR                  USS9R                  5       U	5        M     U H  nUS S 2S4   nUS S 2S4   n	U R                   (       d  US S 2SS 4   nUS S 2SS 4   n	[        UR                  USS9R                  5       U5        [        UR                  USS9R                  5       U	5        M     U R                  [        R                  " S5      5      nU R	                  U5      nXE-    Hm  n[        UR                  USS9R                  5       UR                  US95        [        UR                  USS9R                  5       UR                  US95        Mo     U R                  [        R                  " S5      5      nU R	                  U5      nSS/n
[        [         R"                  " XJ5      5      n[        [         R"                  " XZ5      5      nU H7  u  pm[%        [&        UR                  XmS9  [%        [&        UR                  XmS9  M9     U Hm  u  pm[        UR                  XmS9R                  5       UR                  US95        [        UR                  XmS9R                  5       UR                  US95        Mo     U R                  [        R                  " S5      5      nU R	                  U5      nU H7  u  pm[%        [&        UR                  XmS9  [%        [&        UR                  XmS9  M9     U Hm  u  pm[        UR                  XmS9R                  5       UR                  US95        [        UR                  XmS9R                  5       UR                  US95        Mo     g )Nr  r  rY   r   r  r(  r  r	  rS  rq  r  r  Tr  r  )
r  )   r  +   ,   -   .   /   0   r   )
r5  r  r	  r  r  r  r   r&  r'  r   )
r5  r  r	  r  r  r  r  r&  r'  r   )r'  r      &   r  )r  r   r	  r6  r  rS  3   r{  )rY   r  r  Fr  )r6  rL   r   r  r  r   r\   r   rs   r   r+  anyr  r   r   r  r  r  r<  r=  )r   r  r	  r  	axes_evenaxes_oddr  r  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r<   test_minmax_axis_TestMinMax.test_minmax_axis  s   %%%IIbM!!!R(!Q$!Q$$$NN1G	r7(D4 ((*AEEtE,K 4 ((*AEEtE,K	 ) D4$/779DE vvaffk""<<(HI<<(HID48@@BHM  D88$67L88$67L%%+33F;+33F;D48@@BLQD48@@BLQ  IIa$$R+NN1(D4 ((*AEEtE,K 4 ((*AEEtE,K	 ) 	QUUU'FT)JKDRU8LQT7L%% r1~ q!}D48@@BLQD48@@BLQ  DQU8LQT7L%% B~ At}D48@@BLQD48@@BLQ  LL'*+NN1(DD48@@BAEEtEDTUD48@@BAEEtEDTU )
 LL'*+NN1-"9#4#4Y#PQ!)"3"3H"NO+HD*aee$D*aee$D , +HDD6>>@!%%T%BRSD6>>@!%%T%BRS + LL'*+NN1*HD*aee$D*aee$D + ,HDD6>>@!%%T%BRSD6>>@!%%T%BRS ,r>   c                 V   [        / SQ/ SQ/ SQ/5      nU R                  U5      nU R                  (       a  [        O[        R
                  nU R                  (       a  [        O[        n[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  5       5      (       d   e[        UR                  SS9U5      (       d   e[        UR                  SS9U5      (       d   eg r  )r   r  r6  r
   rL   r2   r+   r,   r/   rs   rK   r\   nanminnanmaxargminargmax)r   r  r
  r  spmatrix_or_sparrays        r<   test_minmax_container_type&_TestMinMax.test_minmax_container_type+  sF   Y! " s#%)%7%7'RYY)-););gEIIK((((%)))+-@AAAA%)))+-@AAAAEIIK((((%)))+-@AAAA%)))+-@AAAAELLN++++%,,A,.0CDDDD%,,A,.0CDDDDELLN++++%,,A,.0CDDDD%,,A,.0CDDDDELLN++++%,,A,.@@@@%,,A,.@@@@ELLN++++%,,A,.@@@@%,,A,.@@@@r>   c           	      B   U R                  [        R                  " S5      R                  SS5      [        S9nSUSS S 24'   SUS S 2S4'   SUS'   S	US
'   [        R
                  US'   [        R
                  US'   U R                  U5      nUR                  5       n[        R                  " U5      (       d   eU[        R                  " U5      :X  d   eUR                  5       n[        R                  " U5      (       d   eU[        R                  " U5      :X  d   eUR                  SS9n[        R                  " U5      (       d   eU[        R                  " USS9:X  d   e/ SQnU H  nUR                  US9n[        UR                  5       [        R                  " XS95        [        XpR                  5      (       d   eUR                  US9n[        UR                  5       [        R                  " XS95        [        XR                  5      (       a  M   e   g )Nr  r  rY   r  r   r  r(  r  r	  rS  r  )r  r  r{  r  )rq  r	  r   r  )r+  rL   r   r  r  rP  r  r  r}  r  r   r   rK   r$  )	r   r	  r  X_nan_maximumX_nan_minimumr  r  X_nan_maximaX_nan_minimas	            r<   test_nanminmax_TestMinMax.test_nanminmaxK  s   LL2..q4ELB!Q$!Q$$$&&$&&$NN1
{{=))))		!,,,
{{=))))		!,,,f-{{=))))		!& 9999D888.LL002BIIa4KLl,>,>????888.LL002BIIa4KLl,>,>???? r>   c                    [        / SQ/ SQ/ SQ/5      nU R                  U5      nS H[  n[        X5      n[        X#5      n[        [        USS9  [        [
        USS9  [        [        USSS	9  [        U" S
S9U" S
S95        M]     g )Nrt  ru  rv  )rs   r\   r  r  r  r  r  r{  )r   r  r   r<  r=  r  r   )r   r  r
  fnamedatfuncr   s         r<   test_minmax_invalid_params&_TestMinMax.test_minmax_invalid_paramsk  s    Y! " s##Ec)G5(D*d3)T4*d:6*G,@A $r>   c                 `   SSK Jn  [        / SQ/ SQ/ SQ/5      nU R                  U5      n[	        X1R
                  5      (       ai  [        [        R                  " U5      [        R                  " U5      5        [        [        R                  " U5      [        R                  " U5      5        g g )Nr   _datart  ru  rv  )
scipy.sparser  r   r  rK   _minmax_mixinr   rL   rs   r\   )r   r  r  r
  s       r<   test_numpy_minmax_TestMinMax.test_numpy_minmaxy  sz     	'Y! " s# e0011rvve}bffSk:rvve}bffSk: 2r>   c           	         SSK Jn  [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      nUR	                  5       n[        R                  " SS	/S
S//5      n[        R                  " SS	/S
S//5      n[        R                  " / SQ/ SQ/ SQ/5      nX#XEU4 GHN  nU R                  U5      nU R                  U5      n[        XR                  5      (       d  MB  [        UR                  5       [        R                  " U5      5        [        UR                  5       [        R                  " U5      5        [        UR                  SS9[        R                  " USS95        [        UR                  SS9[        R                  " USS95        [        UR                  SS9[        R                  " USS95        [        UR                  SS9[        R                  " USS95        GMQ     U R                  U R                  U5      5      n[        UR                  SS9S5        [        U* R                  SS9S5        [        UR                  SS9S5        [        U* R                  SS9S5        U R                  [        R                  " S5      5      n	U R                  [        R                  " S5      5      n
SS/n[        R                  " X// SQU5       H  u  pnUb  UR                  U   S:X  ad  [         R"                  " [$        SS9   UR                  XS9  S S S 5        [         R"                  " [$        SS9   UR                  XS9  S S S 5        M  U R&                  (       a  [        R(                  " S5      nO[        R(                  " US:X  a  SOS5      n[        UR                  XS9U5        [        UR                  XS9U5        M     U R                  U5      n[        UR                  SSS9U R                  / SQ5      5        [        UR                  SSS9U R                  / SQ5      5        [        R                  " / SQ5      n[        R                  " / S Q5      nUR*                  S!:w  a  SUS"'   U R&                  (       d"  UR-                  S#5      nUR-                  S#5      n[        UR                  SSS9U5        [        [/        UR                  SSS95      U5        [        R(                  " S$5      nU R                  U5      nUR*                  S:w  a5  [        UR                  S SS9S5        [        UR                  S SS9S5        g [         R"                  " [$        SS9   UR                  S SS9  S S S 5        [         R"                  " [$        SS9   UR                  S SS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       Nf= f! , (       d  f       g = f)%Nr   r  )r	  r  rj   r  )r   r   r	  rq  )r	  rq  r  r  r  )r  rj   r   r   r  r  r&  r  )r  r  r  )r  r(  rY   )r  r  r(  r  r  Tr  rj   r  rQ  FrN  zCannot applyr  r  r{  r  )r  r   r  r  )r   rj   rj   rj   )r  rj   r   r  r  )r   r  r  r   r   r  r	  rS  rS  )r  r  rL   r   r   r+  r  rK   r  r   r  r  r  r  r  r   rB  r   r=  r6  r   r  r  r   )r   r  r  D2D3D4D5r	  r   D6D7	explicitsr  r  r  r  r  s                    r<   test_argmax_TestMinMax.test_argmax  s   &XX
  \\^XX1v1v&'XX1v1v&'XXy*i89""%AQA..#Cc#6#677ryy|4ryy|4+RYYqq-AB+RYYqq-AB+RYYqq-AB+RYYqq-AB &  nnT\\"-.SZZZ.2sd]]D]115SZZZ.2sd]]D]115 ^^BHHV,-^^BHHV,-5M	&..xyQMCr|syy!3]]:^DJJDJ6 E]]:^DJJDJ6 ED %%!xx{H!xx$!)HHSZZTZ?JSZZTZ?J R nnR SZZQZ6\8RSSZZQZ6\8RSxx0xx077b= L!!'//7L'//7LSZZQZ6EWSZZQZ>?N HHVnnQ77a<=qA=qA z@

t
4 Az@

t
4 A@O EDDDF A@@@s0   W W7W()W9
W	
W%	(
W69
Xre   N)r   r   r   r   r  r  r  r  r  r  r   r   re   r>   r<   r  r    s/    /-bdTLA@@@B;$T5r>   r  c                       \ rS rSrS rSrg)_TestGetNnzAxisi  c                 X   [        SS/SS/SS//5      nUR                  [        5      nU R                  U5      n[        R
                  [        R                  4nU R                  (       a  UR                  OUR                  n[        UR                  S S9U" S S95        [        UR                  5       U" 5       5        [        UR                  SS9U" SS95        [        U" SS9R                  U5        [        UR                  SS9U" SS95        [        U" SS9R                  U5        [        UR                  S	S9U" S	S95        [        U" S	S9R                  U5        [        UR                  S
S9U" S
S95        [        U" S
S9R                  U5        [        [        USS9  g )Nr   rj   r  r  rw  r(  r  r  rq  r	  )r   ry   r>  r  rL   r]   rk   r6  r  getnnzr   r|  r=   rA   r<  r=  )r   r  bool_datr
  accepted_return_dtypesr  s         r<   test_getnnz_axis _TestGetNnzAxis.test_getnnz_axis  s_   aVV!W  ::d#s#"$((BHH!5(,(:(:$$8<<T<2F4EF8<<>6848<<Q</Q@&a.&&(>?8<<Q</Q@&a.&&(>?8<<R<0&b/B&b/'')?@8<<R<0&b/B&b/'')?@j&q1r>   re   N)r   r   r   r   r  r   re   r>   r<   r  r    s    2r>   r  c                    U(       a  U $ S n[        U R                  5      nU R                  R                  5        H'  u  pEUR                  S5      (       d  M  U" U5      X4'   M)     [	        U R
                  S-   U R                  U5      $ )zy
Construct a class that either runs tests as usual (require=True),
or each method skips if it encounters a common error.
c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                     >  T" U 0 UD6$ ! [         [        [        [        [        4 a    [
        R                  " S5      ef = f)Nr  )r  r  r=  rU  r<  rB  rC  )rP   r   fcs     r<   wrapper6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper  sF    Aq<B<'+Y
"N4 A ++&?@@As	    6A)	functoolswraps)r  r  s   ` r<   wrap%_possibly_unimplemented.<locals>.wrap  s'    __R A !A Nr>   test_NotImplemented)dictrI   r,  
startswithr  r   	__bases__)r7  requirer  new_dictr   r   s         r<   _possibly_unimplementedr    sy    
 
		 %,,,,.JDw''!%d / CLL#33MM 	r>   c	                 f   [         [        [        U 5      [        [        [
        [        [        U5      [        [        U5      [        [        U5      [        [        U5      [        [        U=(       a    U5      [        [        U=(       a    U5      [        [        U5      [        [        U5      4n	0 n
U	 Hn  nUR                   H[  nUR                  S5      (       d  M  U
R!                  U5      nUb(  [#        SUR$                   SU SUR$                   35      eXU'   M]     Mp     ['        SU	0 5      $ )z|
Construct a base class, optionally converting some of the tests in
the suite to check that the feature is not implemented.
r  zTest class z overloads test z defined in TestBase)r-  r  r  r  rc  r  r  r  r)  ri  r  r  r  r  rI   r  getr=  r   r  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr7  r   old_clss                 r<   sparse_test_classr+    s    $[&9#$\7;$%7H$%7H$%=%13$%7%3%O8OQ$%=%:%K|M$[&9$_h?AE$ ELLD??7++iioG" ;s||n<L$(6g6F6F5G"I J J$K !  
E2&&r>   c                       \ rS rSr\S 5       r\R                  \R                  \R                  \R                  /rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)TestCSRiG  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fNr[  )r   r^  r*   r"   r7  argsrD   ra  s       r<   r  TestCSR.spcreatorH  3     CJJ.0QRd-f- !  	   !6
Ac                 l   [        / SQ/ SQ/ SQ/S5      nU R                  U5      n[        UR                  / SQ5        [	        UR
                  / SQ5        [	        UR                  / SQ5        [        UR                  S5        [        UR                  S	5        [	        UR                  5       U5        g )
N)r   r  r   r  r  r/  )r  r  rj   re  r  r  r[  )r   r&  r   r  r   r  r  r   r  r  r   r   rV   r  s      r<   test_constructor1TestCSR.test_constructor1O  s    9"$   #!#((733;;w/3::i0SWWQSZZ&3;;=!,r>   c                    [        SS5      nSUS'   U R                  U5      n[        UR                  S/5        [	        UR
                  S/5        [	        UR                  / SQ5        [        UR                  5       U5        g )Nr  r  r/  r  r:  r  )r   r   r   r   r  r  r  )r   r&  r   r  r   r  r  r   r6  s      r<   test_constructor2TestCSR.test_constructor2[  se    %#  #!#((A3/3;;s+3::o6!#++-3r>   c                    [        SS/SS/SS//S5      nU R                  U5      n[        UR                  / SQ5        [	        UR
                  / SQ5        [	        UR                  / SQ5        [        UR                  5       U5        g )	Nr  r   rj   r  r/  r$  r  r  )r   r&  r   r  r   r  r  r   r6  s      r<   test_constructor3TestCSR.test_constructor3d  st    Aq6q6q6!   #!#((733;;w/3::i0!#++-3r>   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n[        X45      nU R                  X44S5      n[        [	        S5      R                  SS5      UR                  5       5        U R                  SS	/S
S	/S
S	/44[        R                  S9n[        SS
/S
S	//[        R                  S9n[        XeR                  5       5        U R                  / SQ/ SQ/ SQ445      nUR                  S:X  d   eg )Nrj   r  r  r  r   r  r  r   rj   r  rj   r   r  r   r   r  r  rj   rj   rj   rj   r        @g      $@r        "@r  r  g      &@r         @      @r  r  r/  r  r             r  r   r  r  r  r  r  r   rj   rj   r   r   r  r  r   rj   )
r   r	   r&  r   r   r  r   rL   uint64r  )r   r  r  r  rk  r[  r  s          r<   test_constructor4TestCSR.test_constructor4n  s    5656 3 4 SI  $516":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5++-0   )i-C!DEww!||r>   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X2U45      n[        UR                  S5        g Nr   r  r  r  r   r  r  rj   r  r]  )r   r&  r   r   r   r  r  r  r[  s        r<   test_constructor5TestCSR.test_constructor5  C    y!	"Y  $!89399U+r>   c                     / SQn/ SQn/ SQnU R                  X2U45      n[        UR                  S5        [        [        R
                  " UR                  [        R                  5      5        g rP  )r&  r   r   r   rL   rq   rA   signedintegerrS  s        r<   test_constructor6TestCSR.test_constructor6  sQ      $!89399e,cii)9)9:;r>   c                    [        S5      S-   n[        / SQ[        R                  S9n[        / SQ[        R                  S9nU R	                  XU4SS9n[        / SQ/ S	Q/ S
Q/S5      n[        R
                  " U R                  (       a  [        R                  O[        R                  5      n[        UR                  R
                  U5        [        UR                  R
                  U5        [        UR                  5       U5        g )Nr  r  )r  rj   r  r   r   rj   r  r   rj   r  r  r  r   rt  r  )r  r   r  r/  )r   r   rL   rk   r&  rA   r6  r]   r   r  r  r   r   )r   r  r  ptrrP   rV   expected_dtypes          r<   test_constructor_smallcol!TestCSR.test_constructor_smallcol  s    ay1}&bhh7L13/v>9"$
 d.@.@"((bhhOQXX^^^4QYY__n5199;*r>   c           	      r   [        S5      S-   n[        R                  " [        R                  5      R                  S-   n[        SSSX"S-   US-   /[        R                  S9n[        / SQ[        R                  S9nU R                  XU45      n[        UR                  R                  [        R                  " [        R                  5      5        [        UR                  R                  [        R                  " [        R                  5      5        [        UR                  S[	        U5      S-   45        g )	Nr  r  r  r   rj   r  r\  r  )r   rL   r[   r]   r\   r   rk   r&  r   r  rA   r  r   r   )r   r  larger  r^  rP   s         r<   test_constructor_largecol!TestCSR.test_constructor_largecol  s    ay1}"&&,Q1e1WeAg6bhhGL13/0QXX^^RXXbhh%78QYY__bhhrxx&89177QC
O4r>   c                 2   [        S5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9nUR                  5       nUR	                  5         [        UR                  / SQ5        [        UR                  5       UR                  5       5        g )Nr  r&  rj   r  r  r  r   r  r  rj   rY   r]  r  rj   r&  r  r  )r   r   r&  rO  rf  r   r  r   r   r  r  r  r  r  s         r<   test_sort_indicesTestCSR.test_sort_indices  st    ay(y!  $!8 Ghhj3;;73;;=#++-8r>   c                 b   [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9nUR                  5       nUR                  5         [	        UR
                  S5        [	        UR                  / SQ5        [	        UR                  5       UR                  5       5        g )Nr  r   r   r   rj   r   r  r   r  rj   r  r  r  r  r&  r'  r   r  r'  ri  r]  r  r$  )r   r&  rO  eliminate_zerosr   r  r  r   rk  s         r<   test_eliminate_zerosTestCSR.test_eliminate_zeros      -.01y!  $!8 Ghhj377A&388I.3;;=#++-8r>   c                    U R                  [        R                  " S5      R                  SS5      S-  5      nS H  n[	        [        U R                  U5      S5        [        X5      " 5       n[	        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  5       [        [        U5      " UR                  5       5      5        M     g )Nr5  r  r  r6  r;  r<  r=  r>  r?  r@  rA  rB  rC  r5  rD  rE  rF  rG  rH  rI  rJ  rK  T)r&  rL   r   r  r   r   r
  r   r   r   r  r  r   r   r  r  r9  s       r<   test_ufuncsTestCSR.test_ufuncs      ryy}44Q:S@AJA Q/6B"((+qyy"**5qxx3rzz|WR^AIIK-HIJr>   c                 V   [        S5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9n[        S5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9n[        XE-   R	                  5       UR	                  5       UR	                  5       -   5        g )	Nr  rg  rh  ri  r]  r  r'  r  r  r&  rj   r  r   rj   r  )r   r   r&  r   r   rk  s         r<   test_unsorted_arithmetic TestCSR.test_unsorted_arithmetic      ay(y!  $!8 Gay*+y!  $!8 Gci((*CKKMCKKM,IJr>   c                    [         R                  " S/S/S//5      n[         R                  " / SQ5      n[         R                  R                  S5        U R	                  [         R                  R                  SS5      5      nU R                  U5      nXAU4   n[        U5      (       a  UR                  5       n[        XSX4   5        g Nr  rj   r  r  rg   r  r&  
rL   r   r   rh   r+  r  r  r)   r   r   r   r7  rl  r	  r  r8  s         r<   test_fancy_indexing_broadcast%TestCSR.test_fancy_indexing_broadcast      HHqcA3_%HHY
		tLL1-.NN1!fC==++-CSAC&!r>   c                 N   [         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      nU R                  X1U45      R                  5       n[	        SUR
                  5        [        UR
                  [        5      (       d   eU R                  X2U45      R                  5       n[	        SUR
                  5        UR                  5         [	        SUR
                  5        [        UR                  U5        U R                  X2U45      R                  5       nSUl        [	        SUR
                  5        [        UR                  U5        UR                  5         [        UR                  U5        g)z@Ensure has_sorted_indices memoizes sorted state for sort_indicesr   r  rj   TFN)rL   r   r&  rO  r   re  rK   r>  rf  r   r  )r   sorted_indsunsorted_indsr  r  r  s         r<   test_has_sorted_indicesTestCSR.test_has_sorted_indices  sG   hh1v&!Q(xxA1a&!6:;@@BT1//0!..5555V<=BBDUA001 	
T1//0199k2V<=BBD#T1//0199m4 	
199m4r>   c                    U R                  [        R                  " S/5      [        R                  " S/5      [        R                  " SS/5      45      n[        SUR                  5        [        R                  " SS/5      n[        R                  " SS/5      n[        R                  " SS/5      nU R                  X2U45      R                  5       n[        SUR                  5        [        UR                  [        5      (       d   eUR                  5         [        SUR                  5        [        S[        UR                  5      5        U R                  X2U45      R                  5       nSUl        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        S[        UR                  5      5        g)z=Ensure has_canonical_format memoizes state for sum_duplicatesrj   r   r  TFN)r&  rL   r   r   has_canonical_formatrO  rK   r>  sum_duplicatesr   r  )r   r  r  r  r  s        r<   test_has_canonical_format!TestCSR.test_has_canonical_format  sa    !rxx}bhh1v>NOPT1112((Aq6"xxA1a&!v67<<>UA223!00$7777 	
T1112QAII'v67<<>!%T1112QAII' 	
QAII'r>   c                    [         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S5      nU R                  X2U4SS9nU R                  X2U4SS9n[         R                  " S[         R                  S9nU R                  X64SS9nU R                  X64SS9nU R                  S5      n	U R                  S5      n
[	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        U	R
                  R                  [         R                  5        [	        U
R
                  R                  [         R                  5        XEXxX4 H  nX-     M	     g )Nrj   r  r   r  r]  r          r^  )rL   r   r]   r&  r   r  rA   rk   r   r  r  valsrP   rV   rk  r  r/  r  r  rB   s               r<   test_scalar_idx_dtypeTestCSR.test_scalar_idx_dtype%  k    !288,((1BHH-xx{v6lKv6jIXXfBHH-z>z<|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX. a#AE $r>   c                     U R                  [        R                  " S5      /S/4SS9nU R                  U5      nUR	                  S[        R
                  " UR                  S   5      -  5        US   S:X  d   eg N  r   )r  r  r]  r  r  r'  rL   r   r  rM  rh  r   r  s      r<   test_setdiag_csrTestCSR.test_setdiag_csr=  i    4 1A37|LNN1			!bggaggaj))*yA~~r>   c                     U R                  / SQ/5      nU R                  / SQ/5      nX-   R                  S:X  d   eUR                  U5      R                  S:X  d   eg )Nr  r  r  r   rj   r  )r&  r  r]  r   rP   rV   s      r<   test_binop_explicit_zeros!TestCSR.test_binop_explicit_zerosD  sX     	{+	{+{{azz!}  A%%%r>   re   N)r   r   r   r   r_  r  rL   r  int_r  r  r2  r7  r;  r>  rM  rT  rY  r`  rd  rl  rs  ry  r  r  r  r  r  r  r  r   re   r>   r<   r-  r-  G  s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58(:0&r>   r-  c                   *    \ rS rSr\S 5       rS rSrg)TestCSRMatrixiP  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr/  )r   r^  r*   r   r0  s       r<   r  TestCSRMatrix.spcreatorQ  3     CJJ.0QRt.v. !  r4  c                     [         [        R                     n[        U[        5      (       d   eUR
                  [         L d   eUR                  [        R                  4:X  d   eg r@   )r   rL   r   rK   r   
__origin____args__r   r  s     r<   test_spmatrix_subscriptable)TestCSRMatrix.test_spmatrix_subscriptableW  sO    BGG$&,////  J...277*,,,r>   re   N)r   r   r   r   r_  r  r  r   re   r>   r<   r  r  P  s    / /
-r>   r  c                       \ rS rSr\S 5       r\R                  \R                  \R                  \R                  /rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rSrg)TestCSCia  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr/  )r   r^  r*   r!   r0  s       r<   r  TestCSC.spcreatorb  r3  r4  c                 x   [        / SQ/ SQ/ SQ/S5      nU R                  U5      n[        UR                  / SQ5        [	        UR
                  / SQ5        [	        UR                  / SQ5        [        UR                  S5        [        UR                  UR                  5        [        UR                  S	5        g )
Nr  r   r   r   r_  r   rj   r   r  r/  )r  rj   r  r  )r   rj   r  rj   r_  r  rZ  )r   r%  r   r  r   r  r  r   r  r   r  r6  s      r<   r7  TestCSC.test_constructor1i  s}    <|<cB  #!#((953;;y13::k2SWWQSYYqww'SZZ&r>   c                     [        SS5      nSUS'   U R                  U5      n[        UR                  S/5        [	        UR
                  S/5        [	        UR                  / SQ5        g )Nr:  r/  r  rj   r  rj   )r   r   r   r   r   r  r  )r   r%  r   r  r   r  r  r6  s      r<   r;  TestCSC.test_constructor2s  sU    %#  #!#((A3/3;;s+3::o6r>   c                     [        SS/SS/SS//S5      nU R                  U5      n[        UR                  SS/5        [	        UR
                  SS/5        [	        UR                  / SQ5        g )Nr  r   rj   r/  rt  )r   r%  r   r  r   r  r  r6  s      r<   r>  TestCSC.test_constructor3{  sc    Aq6Aq6Aq6*C0  #!#((Aa513;;!u-3::g.r>   c                 P   [        / SQ5      n[        / SQ5      n[        / SQ5      n[        X45      nU R                  X44S5      n[        [	        S5      R                  SS5      UR                  5       5        U R                  / SQ/ S	Q/ S
Q445      nUR                  S:X  d   eg )NrA  rB  rC  r  r/  r  r  rI  rJ  rK  rj   )r   r	   r%  r   r   r  r   r  )r   r  r  r  rk  rZ  s         r<   rM  TestCSC.test_constructor4  s    5656CDSI  $516":--a3S[[]C   )i-C!DEww!||r>   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X2U45      n[        UR                  S5        g NrQ  rR  r  )r  r  )r   r%  r   r   r   r  r  r  rZ  s        r<   rT  TestCSC.test_constructor5  rV  r>   c                     / SQn/ SQn/ SQnU R                  X2U45      n[        UR                  S5        [        [        R
                  " UR                  [        R                  5      5        g r  )r%  r   r   r   rL   rq   rA   rX  r  s        r<   rY  TestCSC.test_constructor6  sQ      $!89399U+cii)9)9:;r>   c                 b   [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9nUR                  5       nUR                  5         [	        UR
                  S5        [	        UR                  / SQ5        [	        UR                  5       UR                  5       5        g )Nro  rp  rq  rY   rj   r]  r  r$  )r   r%  rO  rr  r   r  r  r   rk  s         r<   rs  TestCSC.test_eliminate_zeros  ru  r>   c                     [        S5      n[        / SQ5      n/ SQnU R                  XU4SS9nUR                  5       nUR	                  5         [        UR                  / SQ5        [        UR                  5       UR                  5       5        g )Nr  rg  rh  r  r]  rj  )r   r   r%  rO  rf  r   r  r   )r   r  r  r^  r  r  s         r<   rl  TestCSC.test_sort_indices  so    ayO$  $S!1 @hhj3;;73;;=#++-8r>   c                    U R                  [        R                  " S5      R                  SS5      S-  5      nS H  n[	        [        U R                  U5      S5        [        X5      " 5       n[	        UR                  UR                  5        [        UR                  UR                  5        [        UR                  UR                  5        [        UR                  5       [        [        U5      " UR                  5       5      5        M     g )N   r&  r  g      5@rw  T)r%  rL   r   r  r   r   r
  r   r   r   r  r  r   rx  s       r<   ry  TestCSC.test_ufuncs  r{  r>   c                 V   [        S5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9n[        S5      n[        / SQ5      n[        / SQ5      nU R                  XU4SS9n[        XE-   R	                  5       UR	                  5       UR	                  5       -   5        g )	Nr  rg  rh  r  r]  r  r}  r~  )r   r   r%  r   r   rk  s         r<   r   TestCSC.test_unsorted_arithmetic  r  r>   c                    [         R                  " S/S/S//5      n[         R                  " / SQ5      n[         R                  R                  S5        U R	                  [         R                  R                  SS5      5      nU R                  U5      nXAU4   n[        U5      (       a  UR                  5       n[        XSX4   5        g r  r  r  s         r<   r  %TestCSC.test_fancy_indexing_broadcast  r  r>   c                    [         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S5      nU R                  X2U4SS9nU R                  X2U4SS9n[         R                  " S[         R                  S9nU R                  X64SS9nU R                  X64SS9nU R	                  S5      n	U R	                  S	5      n
[        UR                  R                  [         R                  5        [        UR                  R                  [         R                  5        [        UR                  R                  [         R                  5        [        UR                  R                  [         R                  5        [        U	R                  R                  [         R                  5        [        U
R                  R                  [         R                  5        XEXxX4 H  nX-     M	     g )
Nrj   r  r   )r  r  r]  )r  r  r^  r  r  )	rL   r   r]   r%  r&  r   r  rA   rk   r  s               r<   r  TestCSC.test_scalar_idx_dtype  r  r>   c                     U R                  [        R                  " S5      /S/4SS9nU R                  U5      nUR	                  S[        R
                  " UR                  S   5      -  5        US   S:X  d   eg r  r  r  s      r<   test_setdiag_cscTestCSC.test_setdiag_csc  r  r>   re   N)r   r   r   r   r_  r  rL   r  r  r  r  r2  r7  r;  r>  rM  rT  rY  rs  rl  ry  r  r  r  r  r   re   r>   r<   r  r  a  sw    . . 88RWWbjj"--@K'7/,<	99
J	K"0r>   r  c                   $    \ rS rSr\S 5       rSrg)TestCSCMatrixi  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr/  )r   r^  r*   r   r0  s       r<   r  TestCSCMatrix.spcreator  r  r4  re   N)r   r   r   r   r_  r  r   re   r>   r<   r  r    s    / /r>   r  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rSrg	)
rA  i	  c                     U R                  S5      nSUS'   SUS'   XR                  -  nXR                  R                  5       -  n[        UR	                  5       UR	                  5       5        g )N)rY   r/  rY   r  r5  r  r  )r(  rj  r   r   r   )r   rT   r	  ri  s       r<   	test_multTestDOK.test_mult  sW    x($$G199;		4r>   c                     U R                  S5      nSUS'   SUS'   US-   n[        SS/SS/SS//5      n[        UR                  5       U5        US	-   nUS	-   n[        UR                  5       U5        g )
NrR  r{  r5  r^  rY   r   r6  r  )r  r   r   r   r  s      r<   test_add_nonzeroTestDOK.test_add_nonzero  sz    NN5!##FB7RHr2h/0199;*FF199;*r>   c                     U R                  S5      nSUS'   SUS'   [        US-  R                  5       UR                  5       S-  5        [        US-  R                  5       UR                  5       S-  5        g NrR  r  r{  r5  r^  r  r(  r  r   r   r  s     r<   test_dok_divide_scalarTestDOK.test_dok_divide_scalar!  s_    NN5!##AbD>>+QYY[^<AaC==?AIIKM:r>   c                 f   Su  pU R                  X45      nSUS'   SUS'   SUS'   SUS	'   S
US'   SUS'   [        UR                  5       S S 2US-
  4   [        U5      5        UR	                  5       n[        UR                  5       S S 2US-
  4   [        U5      5        X!p!UR                  5       n[        UR                  X45        [        UR                  5       US-
  S S 24   [        U5      5        UR                  5       n[        UR                  5       US-
  S S 24   [        U5      5        g )N)r  r&  r  r  rj   r]  r  r  r  rR  r  r  r  r  )	r(  r   r   r   r  r   r   r   r  )r   r  rD  rP   rZ  rV   r[  s          r<   test_convertTestDOK.test_convert)  s   v& ###### 	199;q1u-uQy9 ggi3;;=1Q3/q; AKKMQWWqf%199;qs1u-uQy9 ggi3;;=1Q/q;r>   c                 |   [        [        U R                  5        [        / SQ/ SQ/ SQ/S5      nU R                  U5      n[	        UR
                  UR
                  5        [	        UR                  5       U5        U R                  U5      n[	        UR                  5       UR                  5       5        / SQ/ SQ/nU R                  U[        R                  S9n[	        UR
                  [        R                  5        UR                  5       n[	        UR
                  [        R                  5        [        Xd5        g )Nr  r_  r  r/  rt  r  r  )r<  r  r(  r   r   rA   r   r&  rL   r  r   )r   rV   rT   r  r  r/  das          r<   	test_ctorTestDOK.test_ctorH  s    i!3!34 <|<cBq!QWWagg&QYY[!$ q!QYY[!))+.9%t2::6QWWbjj)YY[RXXrzz*2$r>   c                     U R                  S5      nSUS'   [        SUR                  5       ;  S5        U R                  S5      nSUS S 2S4'   [        [        UR                  5       5      S:H  S5        g )Nr  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r(  r   keysr   r  s      r<   test_ticket1160TestDOK.test_ticket1160]  sl    u%# 	QVVX%'GH u%!A#AFFH"$@Ar>   re   N)r   r   r   r   r#   r  rL   r  r  r  r2  r  r  r  r  r  r  r   re   r>   r<   rA  rA  	  s>    I77BJJ6K5
+;<>%*Br>   rA  )r&  r'  c                       \ rS rSr\rSrg)TestDOKMatrixik  re   N)r   r   r   r   r   r  r   re   r>   r<   r  r  k      Ir>   r  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rS rS	 rS
 rSrg)TestLILis  c                    [        S[        R                  5      nSUS'   SUS'   U R                  S[        R                  S9nSUS'   SUS'   [        R
                  " 5       S:w  a2  [        XR                  -  X"R                  -  R                  5       5        [        XR                  5       R                  -  X"R                  5       R                  -  R                  5       5        g )NrY   rY   rY   r  y              4@r  r  ppc64le)
r   rL   r  r)  platformmachiner   rj  r   r   r  s      r<   test_dotTestLIL.test_dotw  s    (BMM*$$xr}}=$$ *q33wSS(9(9(;<1{{}.[[]__1D0M0M0OPr>   c                     U R                  S5      nSUS'   US-  n[        US   S5        US-  n[        US   S5        g )Nr  rj   r  r  r   )r)  r   )r   rB   s     r<   test_scalar_mulTestLIL.test_scalar_mul  sI    v&$aCQtWa aCQtWa r>   c                     U R                  S5      nSUS'   SUS'   [        US-  R                  5       UR                  5       S-  5        [        US-  R                  5       UR                  5       S-  5        g r  r  r  s     r<   test_truediv_scalarTestLIL.test_truediv_scalar  sc    NN6"$$AF++-qyy{R/?@AE??,aiikAo>r>   c                 ,   U R                  / SQ/ SQ/5      nU R                  / SQ/ SQ/5      nX!U-   4X!U-
  4SUS-  4S.nUR                  5        HV  u  nu  pVUR                  5       n[        USU S35      " U5        [	        UR                  5       UR                  5       5        MX     U R                  S[        R                  " S	5      S
9nU R                  / SQ5      nUSS S 24==   U-  ss'   [	        USS S 24   R                  5       U5        g )Nr   rj   r  r  r  r  )addsubmul__i__r  r  r  )皙?r  r  r   )	r)  r,  rO  r   r   r   rL   rA   r+  )r   rT   rU   r  opr   r  r  s           r<   test_inplace_opsTestLIL.test_inplace_ops  s    	956	956q5zq5z1q5z# &*ZZ\!B!VVXFFc"RL)%0v~~/1A1A1CD	 &2 vRXXi-@ALL)	!Q$11QT7??,a0r>   c           	          / SQ/ SQ/nU R                  [        U5      5      n[        U5       H3  u  p4[        UR	                  5       [        X   UR
                  S95        M5     g )Nr$  r%  )ndmin)r)  r   r  r   r   r   )r   row_datarU   rN  r  s        r<   test_lil_iterationTestLIL.test_lil_iteration  sM    y)uX/lFAs{{}eHKsxx.PQ #r>   c                     U R                  S5      nSUS'   SUS'   SUS'   SUS	'   S
US'   UR                  5       nU R                  U5      n[        UR                  5       UR                  5       5        g )Nr  rY   r  r5  r  r6  )r'  r  r  )r  r'  r  )r'  r(  )r)  r  r   r   )r   rU   r  r	  s       r<   test_lil_from_csrTestLIL.test_lil_from_csr  sp    x($$$$$GGIq!199;		4r>   c                     U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        U[        / SQ5      SS24   R                  5       U[        / SQ5      SS24   5        g )Nr  r  r$  rj   r  )r+  r   r  r)  r   r   r   )r   r  rT   s      r<   test_fancy_indexing_lilTestLIL.test_fancy_indexing_lil  sm    LL++Aq12q!QuY'1,-557uY'1,-	/r>   c                    U R                  S5      nSUS'   SUS'   SUS'   SUS	'   U R                  S5      nSUS'   SUS
'   SUS'   SUS	'   SUS'   [        UR                  U5      R                  5       UR                  U5      R                  5       5        [        UR                  U5      R                  5       / SQ/ SQ/ SQ/ SQ/5        g )Nr  r  r  rj   r  r  rS  r  r  r{  rR  r  r  r   r   r(  )r   r  r   )r)  r   r]  r   )r   lr  s      r<   test_point_wise_multiply TestLIL.test_point_wise_multiply  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r>   c                 j    U R                  [        R                  " S5      5      nUS-  nSUSS S 24'   g )Nr  r  r   )r)  rL   rh  r   s     r<   test_lil_multiply_removal!TestLIL.test_lil_multiply_removal  s0    rwwv/	R!Q$r>   re   N)r   r   r   r   r%   r  rL   r  r  r  r2  r  r  r  r  r  r  r  r#  r&  r   re   r>   r<   r  r  s  sN    I77BJJ6KQ!?1(R
5/).r>   r  )r&  c                       \ rS rSr\rSrg)TestLILMatrixi  re   N)r   r   r   r   r   r  r   re   r>   r<   r)  r)    r  r>   r)  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS r\R"                  R%                  SSS	9S
 5       rS rS rS rS rS rS rS rS rSrg)TestCOOi  c                    [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X1U44S5      n[        [        S5      R	                  SS5      UR                  5       5        U R                  SS	/S
S	/S
S	/44[        R                  S9n[        SS
/S
S	//[        R                  S9n[        XTR                  5       5        g )NrA  rB  rC  r  r/  r  r  rH  r  r   r  )r   r$  r   r   r  r   rL   rL  )r   r  r  r  r  r  s         r<   r7  TestCOO.test_constructor1  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5++-0r>   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X1U44S5      n[        / SQ/ SQ/ SQ/5      n[        XTR                  5       5        g )N)
r   r  rj   rj   rj   rj   r   r   rj   rj   )
r   rj   r   rj   r  r  r  r   r   rj   )
rj   r(  r  r  r&  r   r	  rj   r  r  r  )r  r	  r   r!  )r  r&  r   )r   r$  r   r   )r   r  r  r  r  r   s         r<   r;  TestCOO.test_constructor2  s[    )*)*-.  $Cy!1%8ZJ783.r>   c                    U R                  S5      n[        UR                  S5        [        UR                  / 5        [        UR                  / 5        [        UR
                  / 5        [        UR                  5       [        S5      5        g )Nr  )r$  r   r   r  r  r  r   r   r   r  s     r<   r>  TestCOO.test_constructor3
  s^      '399U+3772&3772&388B'3;;=%-8r>   c                 `   [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR                  5       U5        [        / SQ5      nU R                  U5      nU R                  (       a  UOUR                  SS5      n[        UR                  5       U5        [        R                  " [        SS9   U R                  / SQ/ S	Q/ S
Q45        S S S 5        [        R                  " [        SS9   U R                  / SQSS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr   r  r   r   )r&  r   r  r   )r   r  r   r   r  r	  zobject cannot be interpretedr  )r   r     !   r  r3  re  rZ  r]  )
r   r$  r   r   r6  r  rB  r   r  r=  )r   r   r  r  s       r<   rM  TestCOO.test_constructor4  s    Y  !   %3;;=#. I  %,,3#++a2D3;;=(3 ]]9,KL|0LM M ]]:-CDf= ED	 ML EDs   6D2D
D
D-c                     S/nU R                  US/S/44S S9nUR                  [        R                  " U5      R                  :X  d   eg )Nr  r   r  )r$  rA   rL   r   )r   r  r  s      r<   "test_constructor_data_ij_dtypeNone*TestCOO.test_constructor_data_ij_dtypeNone*  sK    s  $!qc
!34 @yyBHHTN00000r>   FzCOO does not have a __getitem__runreasonc                     g r@   re   r   s    r<   r  TestCOO.test_iterator/      r>   c                     SS//nU R                  U5      R                  5       n[        UR                  5       U5        g ro   )r$  todiar   r   )r   r   r  s      r<   test_todia_all_zerosTestCOO.test_todia_all_zeros3  s6    Q  '--/3;;=%0r>   c                    U R                  S5      nUR                  5         U R                  SS/SS/SS/445      nUR                  5         [        UR                  5       SS/SS//5        U R                  SS/SS/SS/445      nUR                  5         [        UR                  5       SS/SS//5        [        UR                  S/5        [        UR
                  S/5        [        UR                  S/5        g )Nr  r  rj   r   r  )r$  r  r   r   r  r  r  r1  s     r<   test_sum_duplicatesTestCOO.test_sum_duplicates8  s      '  1Q%1Q%!A!893;;=Aa5!A-8  1Q%1Q%!A!893;;=Aa5!A-8377QC(377QC(388aS)r>   c                     U R                  / SQ/ SQ/ SQ445      nUR                  5       n[        UR                  5       UR                  5       5        g )NrI  rJ  rK  )r$  r  r   r   )r   r  rF   s      r<   test_todok_duplicatesTestCOO.test_todok_duplicatesE  s=      )i-C!DEiik3;;=#++-8r>   c                    U R                  / SQ/ SQ/ SQ445      nUR                  5       n[        UR                  S-   UR                  5        UR	                  5       n[        UR                  S-   UR                  5        g )NrI  rJ  rK  rj   )r$  r  r   r  r  )r   r  r[  rZ  s       r<   test_tocompressed_duplicates$TestCOO.test_tocompressed_duplicatesJ  s^      )i-C!DEiikSWWq[#''*iikSWWq[#''*r>   c                 T   [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  XU44SS9nUR                  5       nUR                  5         [	        UR
                  S:g  R                  5       5        [        UR                  5       UR                  5       5        g )Nro  )r   r   r   r  r  r  r  r  rp  ri  r]  r   )	r   r$  rO  rr  r   r  allr   r   )r   r  r  r  r  r  s         r<   rs  TestCOO.test_eliminate_zerosQ  s    -.,-,-  $c
!36 BhhjQ##%&3;;=#++-8r>   c                    / SQ/ SQ/ SQ/nSnU R                  U5      nUR                  U5      n[        UR                  UR                  L 5        UR                  USS9n[        UR                  UR                  L 5        UR                  USS9n[        [        R
                  " UR                  UR                  5      (       + 5        g )Nr2  r3  r4  r7  Fr;  T)r$  r  r   r  rL   rS   )r   rt   	new_shaperB   rC   s        r<   test_reshape_copyTestCOO.test_reshape_copy[  s    lO<	s#IIi !&& !IIieI,!&& !IIidI+B''778r>   c                    U R                  S/S/S/44S5      nU R                  S/S/S/44S5      n[        UR                  SSS9U:g  R                  S:H  5        [        UR                  SS	S9U:g  R                  S:H  5        g )
Nr  i- r  )-   )rW  rV  r  r0  r   r.  )r$  r   r  r  )r   mat1mat2s      r<   test_large_dimensions_reshape%TestCOO.test_large_dimensions_reshapei  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr>   c                    [         [        R                  [        [           4   n[        U[        5      (       d   eUR                  [         L d   eUR                  [        R                  [        [           4:X  d   e[         [        R                     n[        U[        5      (       d   eUR                  [         L d   eUR                  [        R                  4:X  d   eg r@   )	r$   rL   r   rh  rp  rK   r   r  r  r  s     r<   test_sparray_subscriptable"TestCOO.test_sparray_subscriptablet  s    277E#J./&,////  I---277E#J"7777277#&,////  I---277*,,,r>   re   N)r   r   r   r   r$   r  rL   r  r  r  r2  r7  r;  r>  rM  r9  rB  r`  xfailr  rC  rF  rI  rL  rs  rS  rZ  r]  r   re   r>   r<   r+  r+    s     I77BJJ6K1	/9>,1
 [[5)JK L1
*9
+99	M	-r>   r+  )r  r   r!  r"  r#  c                       \ rS rSr\rSrg)TestCOOMatrixi  re   N)r   r   r   r   r   r  r   re   r>   r<   ra  ra    r  r>   ra  c                   (   \ rS rSr\r\R                  \R                  \R                  /r
S r\R                  R                  SSS9S 5       r\" S5      S 5       r\R                  R%                  S	S
9S 5       rS rS rS rS rS rS rS rSrg)TestDIAi  c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        R                   " / SQ/5      R                  SSS9n[        R                   " / S	Q5      n[        U R	                  X#4S
S9R                  5       U5        g )N)r  r   r  r   )r  rj   r   r  )r   rj   r  r   )r   r   r  r  r  r  r   r  r   r	  rj   rZ  r]  )r   rL   repeatr   r'  r   )r   r	  r  r  s       r<   r7  TestDIA.test_constructor1  sr    <! " xx$++A1+5((8$T''v'FNNPRSTr>   FzDIA does not have a __getitem__r;  c                     g r@   re   r   s    r<   r  TestDIA.test_iterator  r@  r>   r  c                 H   U R                  [        R                  " S5      5      n[        UR                  R
                  [        R                  5        UR                  SSS9  [        UR                  R
                  [        R                  5        U R                  [        R                  " S5      5      n[        UR                  R
                  [        R                  5        UR                  SSS9  [        UR                  R
                  [        R                  5        g )Nr  r  rj   r  r  )	r'  rL   r(   r   r  rA   r]   rM  rk   r   r  s     r<   test_setdiag_dtypeTestDIA.test_setdiag_dtype  s    rvvay)QYY__bhh/			$!	QYY__bhh/rvvay)QYY__bhh/			$!	QYY__bhh/r>   zDIA stores extra zerosr=  c                     g r@   re   r   s    r<   r  TestDIA.test_getnnz_axis  r@  r>   c                     U R                  / SQ/S/4SS9nUR                  5       n[        UR                  5       R                  5       U5        [        UR	                  5       R                  5       U5        g )Nr  r	  r  r]  )r'  r   r   r  r  )r   r  r  s      r<   test_convert_gh14555TestDIA.test_convert_gh14555  s]    bT2&A99;1779,,.91779,,.9r>   c                 :   U R                  SS/SS//5      R                  5       n[        R                  " UR                  UR
                  4UR                  5      n[        R                  " [        R                  " U5      S:  5      nUR                  U:X  d   eg )Nr  rj   r  r  r   )
r'  r  rL   ravel_multi_indexr  r  r   rO  diffr  )r   r  	flat_indsinds_are_sorteds       r<   test_tocoo_gh10050TestDIA.test_tocoo_gh10050  sz    AA/0668((!%%A	&&!3a!78%%888r>   c                 $   [         R                  " / SQ/5      R                  SSS9n[         R                  " / SQ[         R                  S9n[        R
                  " X4SS9nUR                  5       nUR                  R                  [         R                  :X  d   eUR                  5       nUR                  R                  [         R                  :X  d   eUR                  5       nUR                  R                  [         R                  :X  d   eg )	Nr  r  r   r  re  r  rZ  r]  )rL   r   rf  r]   r   r&   r  r  rA   r  r  r  )r   r  r  r  r  r[  rZ  s          r<   test_tocoo_tocsr_tocsc_gh19245&TestDIA.test_tocoo_tocsr_tocsc_gh19245  s    xx'..qq.9((:RXX6f=iikww}}(((iik{{  BHH,,,iik{{  BHH,,,r>   c                 F   [        SS/5      nU[        S/S5      -   n[        U5      n[        U5      nX4-   n[        U[        5      (       d   e[        UR	                  5       X-   5        XC-   n[        U[        5      (       d   e[        UR	                  5       X!-   5        g )Nr  rj   r  )r   r   rK   r   r   r   rT   rU   rj  r^  r`  s         r<   test_add_sparseTestDIA.test_add_sparse  s    !QLaS!mmi#z****3;;=!%0i#z****3;;=!%0r>   c                    [        SS/5      nU[        S/S5      -   n[        U5      n[        U5      nX4-
  n[        U[        5      (       d   e[        UR	                  5       X-
  5        XC-
  n[        U[        5      (       d   e[        UR	                  5       X!-
  5        UR                  S5      n[        X4-
  R	                  5       X-
  5        [        XC-
  R	                  5       X!-
  5        g )Nr  rj   r  r[  )r   r   rK   r   r   r  r  s         r<   test_sub_sparseTestDIA.test_sub_sparse  s    !QLaS!mmi#z****3;;=!%0i#z****3;;=!%0ll5!CI..0!%8CI..0!%8r>   c                 N   U R                  SS/SS//5      nUS-  n[        X!R                  5      (       d   e[        UR	                  5       SS/SS//5        UR                  S5      n[        X1R                  5      (       d   e[        UR	                  5       SS/SS//5        g )Nr  rj   r   r  r  r  r/  )r'  rK   r  r   r   r]  )r   r  resres2s       r<   r,  TestDIA.test_mul_scalar  s    AA/0!e#{{++++3;;=Aq6Ar7*;<zz!}$,,,,4<<>QFQG+<=r>   c                    [        / SQ/ SQ/5      n[        SS/SS/SS//5      n[        U5      n[        U5      nS	UR                  UR                  S
:H  '   S	UR                  UR                  S
:H  '   [        UR	                  5       U5        [        UR	                  5       U5        X-  nX4-  n[        U[        5      (       d   e[        UR	                  5       U5        [        UR                  / SQ5        [        UR                  [        U5      R                  5        X!-  nXC-  n[        U[        5      (       d   e[        UR	                  5       U5        [        UR                  / SQ5        [        UR                  [        U5      R                  5        [        / SQ/ SQ/SS/4S5      n[        / SQ/ SQ/S	S/4S5      nX4-  n[        UR                  [        SS
/5      5        [        UR                  / SQ/ SQ/5        XC-  n[        UR                  [        SS
/5      5        [        UR                  / SQ/ SQ/5        g )Nr$  r%  r  r/     r  r  r  r	  r   r  )rq  r	  r   r  rj   )r  r  r  )r  r  rG  r  rq  r  )rD  r  rF  )r  r  rE  rj   r  )      8@g     A@r  )rD        ,@      ;@)r  r  r  )r  rD  r  )r   r   r  r   r   rK   r  )r   rT   rU   rj  r^  r  r`  s          r<   test_matmul_diaTestDIA.test_matmul_dia  s    9 B888  mm"$Q"$Q3;;=!,3;;=!,Ei#z****3;;=!,3;;
3388Z]%7%78Ei#z****3;;=!,3;;(9:388Z]%7%78 <6B@&I<6Q@&Ii3;;r1g7388n&4&6 	7 i3;;r1g7388m&4&6 	7r>   re   N)r   r   r   r   r&   r  rL   r  r  r  r2  r7  rB  r`  r_  r  r   rl  rC  r  rr  ry  r|  r  r  r,  r  r   re   r>   r<   rc  rc    s     I77BJJ6KU [[5)JK L Q	0  	0 [[56 7:9-19&	>*7r>   rc  )r  r   r!  r"  r#  r&  r'  c                       \ rS rSr\rSrg)TestDIAMatrixi   re   N)r   r   r   r   r   r  r   re   r>   r<   r  r     r  r>   r  c                      \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rS rS	 rS
 rS rS r\R.                  R1                  SSS9S 5       r\R.                  R1                  SSS9S 5       rS r\R.                  R1                  SSS9S 5       r\R.                  R;                  \SS9S 5       rSr g)TestBSRi(  c                    [        / SQ5      n[        / SQ5      n[        S5      n[        / SQ/ SQ/5      US'   [        / SQ/ SQ/5      US	'   [        / S
Q/ SQ/5      US'   [        / SQ/ SQ/5      US'   [        / SQ/ SQ/ SQ// SQ/ SQ/5      nU R                  X2U4SS9n[	        UR                  5       U5        U R                  X2U45      n[	        UR                  5       U5        g N)r   rj   rj   r  )r   rj   rj   r  )r  rj   r  rt  r  r   r  )r  r   rY   r  )r   r  r'  )r/  r   r5  rj   )r   r  rY   )r  r   r  r  r  r3  r  r  r/  r]  )r   r   r   r#  r   r   )r   r  r  r  rT   rj  s         r<   r7  TestBSR.test_constructor1/  s    y!	"W~"$ %Q#% &Q$& 'Q$& 'Q )Ii0772CD  $v!6V DS[[]A&   $v!67S[[]A&r>   c                 r   S H7  n[        U5      n[        U R                  U5      R                  5       U5        M9     [        S5      n[        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [	        / SQ/ SQ/ SQ// S	Q/ S
Q/5      n[        U R                  U5      R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [        U R                  USS9R                  5       U5        [	        / SQ/ SQ/ SQ// S	Q/ S
Q/5      n[        U R                  USS9R                  5       U5        g )N)r  rS  r  )rY   r  )r  r&  r  )r  r  rS  r  r  r  r3  r  rt  r  r  r]  r  r7  )rj   r/  )r  r/  r4  )r   r   r#  r   r   )r   r   rT   s      r<   r;  TestBSR.test_constructor2F  s    BEeA++A.668!< B %LT''V'<DDFJT''V'<DDFJ)Ii0772CDT''*224a8T'''9AACQGT''V'<DDFJT''V'<DDFJT''V'<DDFJT''W'=EEGKT''W'=EEGKT''W'=EEGK)Ii0772CDT''V'<DDFJr>   c                     / SQ/ SQ/ SQ44n[        SS/SS//5      n[        U R                  USS	9R                  5       U5        g )
Nr$  rf  r  r  r   rj   r  rS  r  )r   r   r#  r   )r   argrT   s      r<   r>  TestBSR.test_constructor3^  sJ    '*+Aa5!A- T''v'>FFH!Lr>   c                    Sn[         R                  " XS4[         R                  S9n[         R                  " SU/[         R                  S9n[         R
                  " U[         R                  S9nU R                  X$U4US4SS9  g )Nr'  r  r  r   F)r  rO  )rL   rh  r   r   r]   r   r#  )r   rD  r  r  r  s        r<   rM  TestBSR.test_constructor4d  sk     wway01a&1))ARXX.D62q!f5Qr>   c                 $   Sn[         R                  " U5      n[         R                  " XU45      n[         R                  " SU/5      n[         R                  " U5      n[	        [
        5         U R                  X%U45        S S S 5        [	        [
        5         U R                  X5U4SS9  S S S 5        [	        [
        5         U R                  X5U4SS9  S S S 5        g ! , (       d  f       Nc= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr'  r   r!  r  r  )rL   rh  r   r   r<  r=  r#  )r   rD  	data_1dimr  r  r  s         r<   rT  TestBSR.test_constructor5m  s    GGAJ	wway!1a&!))A,:&	F;< ' :&v6)L ' :&v6&I '& '& '& '&s$   .CC0D
C-0
C>
Dc                 4   S/S//S/S///n[         R                  " SS/[         R                  S9n[         R                  " SS/[         R                  S9nU R                  XU4SS9nUR                  [         R                  " U5      R                  :X  d   eg )Nr  r   rj   r  r  r  )rL   r   r]   r#  rA   )r   rJ   r  r  rV   s        r<   test_default_dtypeTestBSR.test_default_dtype  s    3*sQCj)1a&1((Aq628FKww"((6*00000r>   c                 (   [        / SQ5      n[        / SQ5      n[        S5      n[        / SQ/ SQ/5      US'   [        / SQ/ SQ/5      US	'   [        / S
Q/ SQ/5      US'   [        / SQ/ SQ/5      US'   [        / SQ/ SQ/ SQ// SQ/ SQ/5      nU R                  X2U4SS9nUR	                  5       nUR                  5       R	                  5       n[        UR                  5       U5        [        UR                  5       UR                  5       5        g r  )r   r   r   r#  r  r  r   r   )r   r  r  r  rT   AbsrAcsrAcsr_via_coos           r<   test_bsr_tocsrTestBSR.test_bsr_tocsr  s    |$%Y"$ %Q#% &Q$& 'Q$& 'Q ,l;Y')!!4&"9!Izz|zz|))+T\\^Q'T\\^\%9%9%;<r>   c                 z   [        / SQSS/SS//5      R                  nUR                  SSS5      n[        / SQ5      n[        / SQ5      nU R	                  XU4SS9nUR                  5       nUR                  5         [        UR                  S	5        [        UR                  5       UR                  5       5        g )
Nro  r  r	  rj   rp  rq  )r  r5  r]  r/  )
r   rj  r  r   r#  rO  rr  r   r  r   rk  s         r<   rs  TestBSR.test_eliminate_zeros  s    ,!uaUm<>>||Bq#01y!  $!8 Ghhj377C(3;;=#++-8r>   c                 h   [         R                  R                  S5        U R                  [         R                  R                  S5      SS9nSUR                  UR                  S:*  '   UR                  5         [        UR                  S5        [        UR                  R                  S5        SUR                  UR                  S:*  '   UR                  5         [        UR                  S5        [        UR                  R                  S	5        [        UR                  5       [         R                  " S5      5        UR                  5         [        UR                  S5        [        UR                  R                  S	5        [        UR                  5       [         R                  " S5      5        g )
Nr   )r/  r/  r  r  g?B   )r  rj   r  r  r  )rL   r   rh   r#  r  rr  r   r  r   r   r   r   rk  s     r<   test_eliminate_zeros_all_zero%TestBSR.test_eliminate_zeros_all_zero  s   
		qryy//9VL !"qvv}	QUUB166<<4 !"qvv}	QUUA166<<3199;(:; 	
QUUA166<<3199;(:;r>   c                     U R                  [        S5      R                  SS5      SS9n[        UR                  S   5      R                  SS5      n[	        X-  UR                  5       U-  5        g )Nx   r'  r  r  r  r  r  r	  r#  r   r  r   r   r   r%  s      r<   test_bsr_matvecTestBSR.test_bsr_matvec  s]    vg66s3?5Q1771:&&r!,QUAIIK!O,r>   c                     U R                  [        S5      R                  SS5      SS9n[        UR                  S   S-  5      R                  SS5      n[	        X-  UR                  5       U-  5        g )	Nr  r'  r  r  r  r  r  r	  r  r%  s      r<   test_bsr_matvecsTestBSR.test_bsr_matvecs  sa    vg66s3?5Q1771:a< ((A.QUAIIK!O,r>   FzBSR does not have a __getitem__r;  c                     g r@   re   r   s    r<   r  TestBSR.test_iterator  r@  r>   zBSR does not have a __setitem__c                     g r@   re   r   s    r<   ra  TestBSR.test_setdiag  r@  r>   c                 H   [         R                  " / SQ/ SQ/ SQ/5      nU R                  USS9n[        UR	                  S5      S L 5        [        UR                  5       SS/S	S/S
S//5        UR	                  S5        [        UR                  5       SS/S	S//5        UR	                  S5        [        UR                  5       SS/S	S/SS//5        UR	                  S5        [        UR                  5       / SQ/ SQ/ SQ/5        [        [        UR                  S5        g )NrO  rP  rQ  r  r  rR  r  r   rj   r  rS  r:  r  r3  r  )	rL   r   r  r   rT  r   r   r<  r=  r  s      r<   test_resize_blockedTestBSR.test_resize_blocked  s   HHl""$ % NN1N/ D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)5)5)7 	8 	j!((F3r>   c                     g r@   re   r   s    r<   rW  "TestBSR.test_setdiag_comprehensive  r@  r>   zexceeds memory limitrn  c                 f   [         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S5      nU R                  X2U4SS9nU R                  X2U4SS9nU R                  S5      nU R                  S5      n[	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5         [         R                  " S5      n[         R                  " S	5      n	U R                  XU4SS9n
U R                  XU4SS9n[	        U
R
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        XEXgX4 H  nX-     M	     g ! [        [        4 a    Sn
Sn N'f = f)
Nrj   r  r   rf  r  r]  r  )r   r  r  )r   r  r  )
rL   r   r]   r#  r   r  rA   rk   MemoryErrorr=  )r   r  r  r  rP   rV   r  r/  vals2vals3r  r  rB   s                r<   r  TestBSR.test_scalar_idx_dtype  s    !288,((1BHH-xx	"v6lKv6jI|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.
	HH_-EHH]+E""EF#;<"PA""EF#;:"NA22 a#AE $ Z( 	AA	s   B,H H0/H0re   N)!r   r   r   r   r'   r  rL   r  r  r  r2  r7  r;  r>  rM  rT  r  r  rs  r  r  r  rB  r`  r_  r  ra  r  rW  skipifIS_COLABr  r   re   r>   r<   r  r  (  s	    I77BJJ6K'.K0MRJ(1=.	9<.-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar>   r  )r  r   r!  r"  r#  r'  c                       \ rS rSr\rSrg)TestBSRMatrixi  re   N)r   r   r   r   r    r  r   re   r>   r<   r  r    r  r>   r  c                 ~   UR                  SS5      n[        R                  " U R                  [        R                  5      (       d4  [        R                  " U R                  [        R
                  5      (       a  Uc  U 4U-   $ U 4U-   U4-   $ U S:H  R                  5       nU R                  SSS9n U SSS2==   S-  ss'   SU SSS2'   US   R                  S:  a;  [        S U 5       5      nSUS   -  4USS -   nSUS   -  S-   4USS -   nSX'   SX'   [        S U 5       5      nUc  U 4U-   $ U 4U-   US-  4-   $ )	z-Duplicates entries to produce the same matrixr  Nr   rj   r  r  c              3   *   #    U  H	  oS    v   M     g7frg  re   ).0ps     r<   	<genexpr>&_same_sum_duplicate.<locals>.<genexpr>0  s     ,)QaD)s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)rj   N)rf  )r  r  s     r<   r  r  6  s     7$w""$s   )
poprL   rq   rA   r  unsignedintegerrg  rf  rp   rh  )r  indsrD   r  	zeros_pospospos1pos2s           r<   _same_sum_duplicater    sR   ZZ$'F	}}TZZ**	}}TZZ!3!344>7T>!7T>VI--##%I ;;qq;!D1INIDAJ |1,),,#a&{SW$#a&
}s12w&

7$77D~w~w~!--r>   c                      ^  \ rS rSrSS.U 4S jjr\R                  R                  SS9S 5       r\R                  R                  SS9S	 5       r	\R                  R                  S
S9S 5       r
SrU =r$ )_NonCanonicalMixini>  Fsorted_indicesc                  > [         TU ]  nU" U/UQ70 UD6nUR                  5       S:H  R                  5       nUS   R                  S:  nU(       aY  US   R                  S-  n	[        5        n
U
R                  [        S5        U R                  XgS   U	   US   U	   5      nSSS5        U R                  Xb5      nSU;  a  UR                  US'   U" U40 UD6nUR                  [        R                  [        R                  4;   a  SnOSn[        UR                  5       UR                  5       US	9  U(       a&  [!        UR"                  S:H  R%                  5       5        U$ ! , (       d  f       N= f)
z[Replace D with a non-canonical equivalent: containing
duplicate elements and explicit zerosr   rj   r[  r  Nr   gh㈵>gHz>)rtol)superr  r   rg  rp   r   r^  r*   _insert_explicit_zero_arg1_for_noncanonicalr   rA   rL   r  r  r   r   r  r  )r   r	  r  r1  rD   	constructr  zero_pos	has_zerosr  ra  arg1NCr  r  s                 r<   r  _NonCanonicalMixin.spcreator?  sI    G%	a)$)&)IIK1$--/a[%%)	  !#A"$

24UV..q1+a.(1+a.Q % **1=& ggF7Ot&v& 88

BLL11
 DD

aiik= RWW\&&() 	3 %$s   .5E##
E1z"bool(matrix) counts explicit zerosrn  c                     g r@   re   r   s    r<   rE  _NonCanonicalMixin.test_boold  r@  r>   z!getnnz-axis counts explicit zerosc                     g r@   re   r   s    r<   r  #_NonCanonicalMixin.test_getnnz_axish  r@  r>   znnz counts explicit zerosc                     g r@   re   r   s    r<   r  _NonCanonicalMixin.test_emptyl  r@  r>   re   )r   r   r   r   r  rB  r`  rC  rE  r  r  r   __classcell__)r  s   @r<   r  r  >  s    16 # #J [[AB C [[@A B [[89 :r>   r  c                   $    \ rS rSrSS jrS rSrg)_NonCanonicalCompressedMixiniq  c                    [        UR                  UR                  UR                  S9u  p4nU(       dK  [	        XUSS 5       H9  u  pgXFU SSS2   R                  5       XFU& X6U SSS2   R                  5       X6U& M;     X4U4$ )5Return non-canonical constructor arg1 equivalent to M)r  r  Nr	  )r  r  r  r  r  rO  )r   r  r  r  r  r  startstops           r<   r  3_NonCanonicalCompressedMixin._arg1_for_noncanonicalr  s     3AFFAII;<88!Ev"6!":6&-D&9$B$&?&D&D&Fd##'d#3DbD#9#>#>#@4   7 f$$r>   c                     SXU4'   U$ ro   re   r   r  r  rE  s       r<   r  2_NonCanonicalCompressedMixin._insert_explicit_zero|  s    A#r>   re   N)F)r   r   r   r   r  r  r   re   r>   r<   r  r  q  s    %r>   r  c                       \ rS rSrS rS r\R                  R                  SSS9S 5       r	\R                  R                  SSS9S	 5       r
S
rg)_NonCanonicalCSMixini  c                 x   ^  U 4S jn[          H)  nS H   nU" [        R                  " U5      U5        M"     M+     g )Nc                 8  > [        / SQ/ SQ/ SQ/ SQ/U S9nT	R                  X!S9nUR                  u  pE[        U* U5       H+  n[        U* U5       H  n[	        X6U4   X&U4   5        M     M-     S H$  n[        [        [        4UR                  U5        M&     g )Nr  r  r  r  r  r  r  )	r   r  r   rH  r   r<  rU  r  r  )
rA   r  r	  rT   r  r  r  rE  rk  r   s
            r<   r?  3_NonCanonicalCSMixin.test_getelement.<locals>.check  s    w  (-.A q@A''CAA2q\r1A Q3Q30 & " Cz95q}}bI Cr>   )FTr  )r   r?  rA   r  s   `   r<   r  $_NonCanonicalCSMixin.test_getelement  s1    	J  &E"/bhhuo~6 #0 &r>   c                 x   [         R                  " S5      nU R                  U5      nU R                  / SQ/5      nUR                  5       USS S 24'   [	        5        nUR                  [        S5        X2SS S 24'   S S S 5        [        UR                  5       U5        UR                  5       R                  5       US S 2S4'   [	        5        nUR                  [        S5        UR                  US S 2S4'   S S S 5        [        UR                  5       U5        g ! , (       d  f       N= f! , (       d  f       N:= f)Nr  r$  r  r[  rj   )
rL   r(   r  r   r   r^  r*   r   rR  rj  )r   r	  rT   rU   ra  s        r<   test_setitem_sparse(_NonCanonicalCSMixin.test_setitem_sparse  s    FF1INN1NNG9%!A# CJJ.0QRacF ! 	199;*""$!A# CJJ.0QRSSAacF ! 	199;* !  ! s   D*D+
D(+
D9Fz(inverse broken with non-canonical matrixr;  c                     g r@   re   r   s    r<   r  _NonCanonicalCSMixin.test_inv  r@  r>   z&solve broken with non-canonical matrixc                     g r@   re   r   s    r<   r  _NonCanonicalCSMixin.test_solve  r@  r>   re   N)r   r   r   r   r  r  rB  r`  r_  r  r  r   re   r>   r<   r  r    s`    7*+" [[5)ST U [[5)QR Sr>   r  c                       \ rS rSrSrg)TestCSRNonCanonicali  re   Nr   r   r   r   r   re   r>   r<   r	  r	        r>   r	  c                       \ rS rSrSrg)TestCSRNonCanonicalMatrixi  re   Nr
  re   r>   r<   r  r    r  r>   r  c                       \ rS rSrSrg)TestCSCNonCanonicali  re   Nr
  re   r>   r<   r  r    r  r>   r  c                       \ rS rSrSrg)TestCSCNonCanonicalMatrixi  re   Nr
  re   r>   r<   r  r    r  r>   r  c                       \ rS rSrS r\R                  R                  SSS9S 5       r\R                  R                  SSS9S 5       r	S	r
g
)TestBSRNonCanonicali  c                 `    UR                  5       nSXBU4'   UR                  UR                  S9$ )Nr   r  )r  r  r  )r   r  r  rE  rB   s        r<   r  )TestBSRNonCanonical._insert_explicit_zero  s-    GGIA#www--r>   Fz&diagonal broken with non-canonical BSRr;  c                     g r@   re   r   s    r<   r!  !TestBSRNonCanonical.test_diagonal  r@  r>   z"expm broken with non-canonical BSRc                     g r@   re   r   s    r<   r  TestBSRNonCanonical.test_expm  r@  r>   re   N)r   r   r   r   r  rB  r`  r_  r!  r  r   re   r>   r<   r  r    s[    .
 [[5)QR S [[5)MN Or>   r  c                       \ rS rSrSrg)TestBSRNonCanonicalMatrixi  re   Nr
  re   r>   r<   r  r    r  r>   r  c                   *    \ rS rSrSS jrS rS rSrg)TestCOONonCanonicali  Nc                 h    [        UR                  UR                  UR                  5      u  p4nX4U44$ )r  )r  r  r  r  )r   r  r  r  r  r  s         r<   r  *TestCOONonCanonical._arg1_for_noncanonical  s-    ,QVVQUUAEEB33Zr>   c                    [         R                  UR                  R                  R	                  S5      UR                  4   Ul        [         R                  UR
                  R                  R	                  U5      UR
                  4   Ul        [         R                  UR                  R                  R	                  U5      UR                  4   Ul        U$ ro   )rL   r_r  rA   r  r  r  r  s       r<   r  )TestCOONonCanonical._insert_explicit_zero  s    qvv||((+QVV34aeekk&&q)15501aeekk&&q)15501r>   c                 2   U R                  [        R                  " S5      5      nUR                  5         UR	                  SS/SS9  UR                  5         [        [        R                  " [        R                  " UR                  5      S:  5      5        g )Nr  rj   r  r  r   )	r  rL   r(   r  rM  r   rO  rv  r  rk  s     r<   test_setdiag_noncanonical-TestCOONonCanonical.test_setdiag_noncanonical  sf    NN266!9%				1a&A		rwwquu~*+,r>   re   r@   )r   r   r   r   r  r  r$  r   re   r>   r<   r  r    s     
-r>   r  c                       \ rS rSrSrg)TestCOONonCanonicalMatrixi  re   Nr
  re   r>   r<   r'  r'    r  r>   r'  c           	   #     #    U S:X  a&  [         [        [        [        [        [
        [        /nO<U S:X  a&  [        [        [        [        [        [        [        /nO[        SU < S35      eSSSSSS	S
S	S.nU H  n[        [!        U5      5       H  n[#        X45      nUR%                  S5      (       d  M&  [#        USS5      (       a  M:  / nUR'                  U5      n[)        U5      (       a!  U[*        R,                  R/                  US9/-  n[#        US/ 5      nU H&  n	U	R0                  S;   d  M  UR3                  U	5        M(     [*        R4                  " X4US9v   M     M     g7f)a  Yield all tests for all formats that use get_index_dtype

This is more than testing get_index_dtype. It allows checking whether upcasting
or downcasting the index dtypes affects test results. The approach used here
does not try to figure out which tests might fail due to 32/64-bit issues.
We just run them all.
So, each test method in that uses cases_64bit reruns most of the test suite!
r+   r,   zparameter sp_api=z& is not one of 'sparray' or 'spmatrix'z%expm for 64-bit indices not availablez)linsolve for 64-bit indices not availableztest implemented in base classz%test actually requires 64-bit to workztest verifies int32 indexesztest verifies int64 indexes)r  r  r  r  rZ  r`  rd  r|  r  ra  Frn  
pytestmark)r  rC  r_  xslow)marksN)r  r+  r  r-  rc  rA  r  r  ra  r  r  r  r  r)  r=  sorteddirr   r  r  r>  rB  r`  rC  r   rN   param)
sp_apiTEST_CLASSES
SKIP_TESTSr7  method_namemethodr+  r8   markersr`  s
             r<   cases_64bitr5    sK     '7G
 !' 
:	%}m&& -fY.TUVV =?A!A)P%B%B*G	J !#c(+KS.F&&w//66 nn[199fkk..c.:;;E!&,;#Dyy$HHT* $ ll35AA , s   B/E&5E&	A$E&15E&c            
           \ rS rSr\\\\\\	\
\\\/
rS r\R"                  R$                  S 5       r\R"                  R$                  S 5       r\R"                  R$                  S 5       rSrg)	Test64Biti&  c                    [         R                  " U5      nUR                  S;   a9  UR                  R                  U:H  =(       a    UR                  R                  U:H  $ UR                  S:X  a9  UR
                  R                  U:H  =(       a    UR                  R                  U:H  $ UR                  S:X  a  UR                  R                  U:H  $ [        SU< S35      e)N)rZ  r[  rY  r  r  zmatrix z has no integer indices)	rL   rA   r  r  r  r  r  r  r=  )r   r  rA   s      r<   _compare_index_dtypeTest64Bit._compare_index_dtype-  s    88,,IIOOu,K188>>U3JKXXEEKK5(Dquu{{e/CDXXIIOOu,-wqe+BCDDr>   c                 `   ^  [        SS9U 4S j5       nT R                   H  nU" U5        M     g )NrY   rv   c                 B  > U " [         R                  R                  SS5      5      n[        TR	                  U[         R
                  5      5        U " [         R                  R                  SS5      5      n[        TR	                  U[         R                  5      5        g )NrY   r  r  )rL   r   r  r   r9  r]   rk   )mat_clsr  r   s     r<   r?  4Test64Bit.test_decorator_maxval_limit.<locals>.check<  sg    		r1-.AD--a:;		r1-.AD--a:;r>   r   MAT_CLASSESr   r?  r>  s   `  r<   test_decorator_maxval_limit%Test64Bit.test_decorator_maxval_limit8  s5     
!b	1	< 
2	< ''G'N (r>   c                 `   ^  [        SS9U 4S j5       nT R                   H  nU" U5        M     g )NTr   c                 Z  > SnSn[        S5       H  nU " [        R                  R                  SS5      5      nU=(       d     TR	                  U[        R
                  5      nU=(       d     TR	                  U[        R                  5      nU(       d  M  U(       d  M    g    [        S5      e)NFr  r(  z#both 32 and 64 bit indices not seen)rH  rL   r   r  r9  r]   rk   rx   )r>  seen_32seen_64r  r  r   s        r<   r?  5Test64Bit.test_decorator_maxval_random.<locals>.checkJ  s    GG3ZBIINN1a01!KT%>%>q"((%K!KT%>%>q"((%K7ww   %%JKKr>   r@  rB  s   `  r<   test_decorator_maxval_random&Test64Bit.test_decorator_maxval_randomF  s7     
!	-
	L 
.
	L ''G'N (r>   c                 *   [        [        R                  SS9S 5       n[        [        R                  S9S 5       nU" [        [        [
        5        U" [        [        [
        5        U" [        [        [        5        U" [        [        [        5        g )Nr  )rf   r{   c                    U " SS/SS/SS//5      n[        [        UR                  SS9  [        [        UR                  SS9  U" / S	Q/ S
Q/5      n[        [        UR                  SS9  [        [        UR                  SS9  U" / S	Q/ SQ/5      n[        [        UR                  SS9  SUl        [        [        UR
                  5        g Nr  rj   r  r  r  r  r  r   r$  )r  r  r  r  F)r<  rx   r  r|  r  r  r%  r&  r$  rP   s       r<   check_limited3Test64Bit.test_downcast_intp.<locals>.check_limitedb  s     1v1v1v67A.!//B.!%%a8y)45A.!//B.!%%a8y)45A.!//B%*A".!*:*:;r>   rf   c                 "   U " SS/SS/SS//5      nUR                  SS9  UR                  SS9  U" / S	Q/ S
Q/5      nUR                  SS9  UR                  SS9  U" / S	Q/ SQ/5      nUR                  SS9  SUl        UR                  5         g rO  )r  r|  r  r  rP  s       r<   check_unlimited5Test64Bit.test_downcast_intp.<locals>.check_unlimitedr  s     1v1v1v67AOOO#EEqEMy)45AOOO#EEqEMy)45AOOO#%*A"r>   )	r   rL   rk   r!   r"   r$   r   r   r   )r   rQ  rU  s      r<   test_downcast_intpTest64Bit.test_downcast_intpZ  sq     
!RXXq	I	< 
J	< 
!RXX	6	 
7	 	iI6	9i8j*j9
J
;r>   re   N)r   r   r   r   r    r   r   r   r   r'   r$   r!   r"   r&   rA  r9  rB  r`  thread_unsaferC  rK  rW  r   re   r>   r<   r7  r7  &  s     	J
J
9iIK
	E [[  [[ & [[*< *<r>   r7  c                       \ rS rSrS rSrg)RunAll64Biti  c                 6    [        S0 UD6S 5       nU" X5        g )Nc                    U " 5       n[        US5      (       a  UR                  5          [        X!5      " 5         [        US5      (       a  UR                  5         g g ! [        US5      (       a  UR                  5         f f = f)Nsetup_methodteardown_method)r   r^  r   r_  )r7  r2  instances      r<   r?  ,RunAll64Bit._check_resiliency.<locals>.check  sq    uHx00%%'/.08%677,,. 878%677,,. 8s   A $Bre   )r   )r   r7  r2  r   r?  s        r<   _check_resiliencyRunAll64Bit._check_resiliency  s(     
!	&2	&	/ 
'	/ 	cr>   re   N)r   r   r   r   rb  r   re   r>   r<   r[  r[    s     r>   r[  c                      \ rS rSr\R
                  R                  S\" S5      5      S 5       r\R
                  R                  S5      \R
                  R                  S\" S5      5      S 5       5       r
\R
                  R                  S\" S5      5      S 5       r\R
                  R                  S\" S5      5      S 5       rS	rg
)Test64BitArrayi  cls,method_namer+   c                 $    U R                  XSS9  g NrY   r<  rb  r   r7  r2  s      r<   test_resiliency_limit_10'Test64BitArray.test_resiliency_limit_10      sbAr>   rj   c                 $    U R                  XSS9  g NTrF  ri  rj  s      r<   test_resiliency_random%Test64BitArray.test_resiliency_random       	s=r>   c                 @    U R                  X[        R                  S9  g NrS  rb  rL   r]   rj  s      r<   test_resiliency_all_32%Test64BitArray.test_resiliency_all_32      sRXXFr>   c                 @    U R                  X[        R                  S9  g rt  rb  rL   rk   rj  s      r<   test_resiliency_all_64%Test64BitArray.test_resiliency_all_64  rx  r>   re   N)r   r   r   r   rB  r`  parametrizer5  rk  r  rp  rv  r{  r   re   r>   r<   re  re    s    
 [[.I0FGB HB [[1[[.I0FG> H > [[.I0FGG HG [[.I0FGG HGr>   re  c                      \ rS rSr\R
                  R                  S5      \R
                  R                  S\" S5      5      S 5       5       r	\R
                  R                  S\" S5      5      S 5       r
\R
                  R                  S5      \R
                  R                  S\" S5      5      S 5       5       r\R
                  R                  S\" S5      5      S	 5       r\R
                  R                  S\" S5      5      S
 5       rSrg)Test64BitMatrixi  r  rf  r,   c                 $    U R                  XSS9  g )NT)r   ri  rj  s      r<   
test_no_64Test64BitMatrix.test_no_64  s     	sdCr>   c                 $    U R                  XSS9  g rh  ri  rj  s      r<   rk  (Test64BitMatrix.test_resiliency_limit_10  rm  r>   rj   c                 $    U R                  XSS9  g ro  ri  rj  s      r<   rp  &Test64BitMatrix.test_resiliency_random  rr  r>   c                 @    U R                  X[        R                  S9  g rt  ru  rj  s      r<   rv  &Test64BitMatrix.test_resiliency_all_32  rx  r>   c                 @    U R                  X[        R                  S9  g rt  rz  rj  s      r<   r{  &Test64BitMatrix.test_resiliency_all_64  rx  r>   re   N)r   r   r   r   rB  r`  r  r}  r5  r  rk  rp  rv  r{  r   re   r>   r<   r  r    s    [[1[[.J0GHD I D
 [[.J0GHB IB [[1[[.J0GH> I > [[.J0GHG IG [[.J0GHG IGr>   r  c                     [         R                  " / SQ/5      n [         R                  " S/S/S//5      n[         R                  " / SQ/ SQ/5      n[         R                  " S//5      n[         R                  " S//5      n[         R                  " / SQ/5      n[        [        [        [
        4 GH
  nU" U 5      R                  S5      nU" U5      R                  S	5      nU" U5      R                  S5      n	U" U5      R                  S
5      n
U" U5      R                  S5      nU" U5      R                  S5      n[        UR                  5       [         R                  " U S5      5        [        UR                  5       [         R                  " US	5      5        [        U	R                  5       U5        [        U
R                  5       [         R                  " US
5      5        [        UR                  5       [         R                  " US5      5        [        UR                  5       [         R                  " US5      5        [        R                  " [        SS9   U" / SQ/ SQ/5      R                  SS9  S S S 5        [        R                  " [        SS9   U" / SQ/5      R                  SS9  S S S 5        GM     g ! , (       d  f       NN= f! , (       d  f       GM1  = f)Nr  r  r   rj   r  r&  r3  r  r:  rZ  r  r  zcannot be broadcastr  )r  rj   r   r\  r  r]  rt  rR  )rL   r   r   r!   r   r"   _broadcast_tor   r   broadcast_torB  r   r=  )rP   rV   r  r/  r  r  	containerres_ares_bres_cres_dres_eres_fs                r<   test_broadcast_tor    s
   
)A
1#sQC!A
)Y'(A
1#A
1#A
)A )ZC	!**51!**51!**51!**51!**51!**515==?BOOAu,EF5==?BOOAu,EF5==?A.5==?BOOAu,EF5==?BOOAu,EF5==?BOOAu,EF]]:-BCy),-;;&;I D ]]:-BCyk"00v0> DC# D DC DCs   KK
K	
K"	r@   )NFNNF)T)	TTTTTTTTT)r"  
contextlibr  r  r   r  sysrB  r   r<  numpyrL   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   r   numpy.exceptionsr   typesr   scipy.linalgr   r  r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   scipy.sparse._baser-   scipy.sparse._sputilsr.   r/   r0   r1   r2   scipy.sparse.linalgr3   r4   r5   scipy._lib.decoratorr6   r   r  r=   rE   	frozensetrZ  rW   r_  r^  r   r   r   r   r   r  r-  rc  r  r`  rY  r  r  r  r)  contextmanagerrg  ri  r  r  r  r  r  r  r+  r-  r8  r  r  r  rA  r  r  r)  r+  ra  rc  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r'  r5  r7  r[  ra  re  r  r  re   r>   r<   <module>r     s        
  *     , , , ,   C C C C C C
 (F F / / *ckk)/
'
 %eW- (  !   > " JN?DNb$ $6"$ "$H 4 DT 7 T 7n@| |~c+ c+L % % %.@ @F
MK MK`Y0 Y0x B Bk$ k$\ L  LF_K _KD`0 `0FL5 L5^
2 2:8 AE8<JN,0%'XC&! C&L    -L' -    W! Wt    /L' /    _Buu= _BDL'         mu- m`L'         R-u(-e/45J R-jL'         U7ueE/45',u> U7pL'         fu(-e/45).0 fRL'         .B0 0f#5  -7 -`	. 		 3] 		. 		 3] 	6 	 3] 	-,g -(	 3] 	
6Br_< _<H   & G[ G  G0 Gk G G:?r>   