
    doil                    r   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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!  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\R                  ;   rJS~S jrKS rL\M" S/5      rNSrOS rP  SS jrQS rR " S S5      rS " S S5      rT " S S5      rU " S S5      rV " S S5      rW " S S 5      rX " S! S"5      rY\R                  R                  S#S$9 " S% S&5      5       r\ " S' S(5      r] " S) S*5      r^ " S+ S,5      r_\R                  S- 5       ra " S. S/5      rb " S0 S15      rc " S2 S35      rd " S4 S55      re " S6 S75      rf " S8 S95      rgSS; jrh    SS< jri " S= S>5      rj " S? S@\j\i" 5       5      rk\kR                  5          " SA SB\V\k5      rmSC rn\mR                  5          " SD SE\j\i" 5       5      ro\oR                  5          " SF SG\V\o5      rp\pR                  5          " SH SI\i" SSSJ95      rq " SK SL\V\q5      rr\qR                  5         \rR                  5          " SM SN\i" SSO95      rs " SP SQ\V\s5      rt\sR                  5         \tR                  5          " SR SS5      ru " ST SU\u\i" S:S:S:S:S:SV95      rv " SW SX\V\u\i" SSSSSSV95      rw\vR                  5         \wR                  5         SY rx " SZ S[\i" SSSSSSSS\95      ry " S] S^\V\y5      rz\yR                  5         \zR                  5          " S_ S`\i" SSSSSSSa95      r{ " Sb Sc\V\{5      r|\{R                  5         \|R                  5         Sd r} " Se Sf5      r~ " Sg Sh\~5      r " Si Sj\5      r " Sk Sl\\k5      r " Sm Sn\\m5      r " So Sp\\o5      r " Sq Sr\\p5      r " Ss St\\{5      r " Su Sv\\|5      r " Sw Sx\~5      r " Sy Sz\\v5      r " S{ S|\\w5      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)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invzgoogle.colabc                 8    Ub  UOU < SU< 3n[        X;   US9  g )Nz not found in )msg)r   )member
collectionr6   messages       X/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_base.py	assert_inr;   4   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_dtyperC   9   s$    AGGqwwq&v&r<   dokzChanging the sparsity structurec                     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)r@   arraysas      r:   _underlying_arrays3sparse_may_share_memory.<locals>._underlying_arraysE   sM     ""$A!RZZ"**455a  % r<   TF)rJ   may_share_memory)ABrO   rN   bs        r:   sparse_may_share_memoryrU   B   s@      "#A&A""1(( ' # r<   Fc                 4  ^ ^^^^^ T c  [         R                  " S5      m O[         R                  " T 5      m U(       a  S	S jmOCTb	  S	U4S jjmO7U(       a(  [         R                  R                  S5      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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>   )r/   r   rJ   iinfomaxint32r   intc)rM   maxvalcheck_contentstps       r:   new_get_index_dtype4with_64bit_maxval_limit.<locals>.new_get_index_dtypee   s[     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir<   c                    > T$ r>    )rM   r]   r^   fixed_dtypes      r:   r`   ra   k   s	    r<     c                 h   > [         R                  [         R                  4TR                  S5         $ )N   )rJ   r[   int64integers)rM   r]   r^   rngs      r:   r`   ra   o   s#    HHbhh'Q88r<   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   )
rJ   r[   rh   r   r?   size
issubdtypeintegerrZ   min)rM   r]   r^   r?   arrminvalmaxval_limits         r:   r`   ra   r   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)rZ   AssertionErrorastyperJ   intp)rq   downcast_maxvals    r:   new_downcast_intp_index8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s0    wwy?*$%788::bgg&&r<   c           
      R  >^ ^^ / m[         R                  R                  [         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  /
m[        R                  " T 5      UUU UUU4S j5       nU$ )Nc            
      `  >  T H`  nTR                  US[        USS 5      45        [        UST
5        Tc  M4  TR                  US[        USS 5      45        [        UST	5        Mb     T" U 0 UD6T H  u  p#nUc  M  [        X#U5        M     $ ! T H  u  p#nUc  M  [        X#U5        M     f = f)Nr/   downcast_intp_index)rL   getattrsetattr)rN   kwmodnameoldfuncbackuprx   funcmodulesry   r`   s        r:   wrapper;with_64bit_maxval_limit.<locals>.decorator.<locals>.wrapper   s    4"CMM)%6=# 
 C!24GH&21#C)>E' 
  %:<ST #  Q~"~*0&Cw*73 +1&&Cw*73 +1s   2B 7B 
B-B-)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_construct	functoolswraps)r   r   r   r   rx   ry   r`   s   ` @@r:   	decorator*with_64bit_maxval_limit.<locals>.decorator   s    <<$$ell&7&79J9J<<$$ell&7&79J9J<<$$ell&;&;<<++U\\-D-DF
 
		4 	4 
	4. r<   )rc   NF)rJ   rh   randomdefault_rng)	rs   r   rd   rx   assert_32bitr   ry   r`   rj   s	   ` ``  @@@r:   with_64bit_maxval_limitr   V   s     xx| xx-	
 
	 	 		ii##D)	9 	9	* "	'
@ r<   c                     [        U [        R                  5      (       d  [        U 5      (       a  U $ U R	                  5       $ r>   )rI   rJ   r
   r.   toarray)rN   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 rightrc   selfmats     r:   __add__BinopTester.__add__       $r<   c                     gr   rc   r   s     r:   __mul__BinopTester.__mul__   r   r<   c                     gr   rc   r   s     r:   __sub__BinopTester.__sub__   r   r<   c                     gNmatrix on the leftrc   r   s     r:   __radd__BinopTester.__radd__       #r<   c                     gr   rc   r   s     r:   __rmul__BinopTester.__rmul__   r   r<   c                     gr   rc   r   s     r:   __rsub__BinopTester.__rsub__   r   r<   c                     gr   rc   r   s     r:   
__matmul__BinopTester.__matmul__   r   r<   c                     gr   rc   r   s     r:   __rmatmul__BinopTester.__rmatmul__   r   r<   rc   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__rc   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   rc   r   s     r:   r   BinopTester_with_shape.__add__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__mul__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__sub__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__radd__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__rmul__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__rsub__   r   r<   c                     gr   rc   r   s     r:   r   !BinopTester_with_shape.__matmul__   r   r<   c                     gr   rc   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   rc   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eqrc   r   others     r:   __eq__ComparisonTester.__eq__       r<   c                     g)Nnerc   r   s     r:   __ne__ComparisonTester.__ne__   r   r<   c                     g)Nltrc   r   s     r:   __lt__ComparisonTester.__lt__   r   r<   c                     g)Nlerc   r   s     r:   __le__ComparisonTester.__le__   r   r<   c                     g)Ngtrc   r   s     r:   __gt__ComparisonTester.__gt__  r   r<   c                     g)Ngerc   r   s     r:   __ge__ComparisonTester.__ge__  r   r<   rc   N)r   r   r   r   r   r   r   r   r   r  r   rc   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[   r?   rg      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper?   rJ   formatrv   r   r   rR   rS   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<   rc   N)r   r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr0   asdenser  r  r#  r   rc   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- rES. rFS/ rGS0 rHS1 rIS2 rJS3 rKS4 rLS5 rMS6 rNS7 rOS8 rPS9 rQS: rRS; rSS< rTS= rUS> rVS? rWS@ rXSA rYSB rZSC r[SD r\SE r]SF r^SG r_SH r`SI raSJ rbSK rcSL rdSM reSN rfSO rgSP rhSQ riSR rjSS rkST rlSU rmSV rnSW roSX rpSY rqSZ rrS[ rsS\ rtS]rug^)__TestCommoni1  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   rg   )r  r   r
  r   )r   rg   r   r   d)r   r  r  r  setr-   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesrv   r   rJ   r  r   rI   r*   is_array_test)clsr?   s     r:   
init_class_TestCommon.init_class>  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   )r8  assert_raises
ValueErrorboolr   r  )r?   r  r   s     r:   check$_TestCommon.test_bool.<locals>.checkW  sL    %%e,E*dE2DNNQC5)*u--.r<   z%Cannot create a rank <= 2 DOK matrix.)rI   TestDOKpytestskipr6  r   rB  r?   s   `  r:   	test_bool_TestCommon.test_boolV  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 )NTFrW   )r   r  ranger   r   )r   r  r  _s       r:   test_bool_rollover_TestCommon.test_bool_rolloverc  sN     dE]O$s#rAME)C  	30r<   c                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 ,  > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       g = fNignorer   r
  )warningscatch_warningssimplefilterr)   r   r7  r8  copyr  r&  r)  r(  r,  rC   r   rJ   nan)
r?   r  r  dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r:   rB  "_TestCommon.test_eq.<locals>.checkp  s   ((*%%h0GH%%h?ooe,))%0xxzQqS	-++C0++C0++C0++C0 )u6O6O6QR(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(F(EQJ3G3G3IJ(EQJ3G3G3IJ(*/266/)B)B)DF3 +**s   G%H
Hbsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.r  r   rE  rF  r6  rG  s   `  r:   test_eq_TestCommon.test_eqn  sB    	F: ::$99KKRS((E%L )r<   c                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                   > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       g = frQ  )rS  rT  rU  r)   r   r7  r8  rV  r  r&  r(  r)  r,  rC   r   rJ   rW  )
r?   r  r  rX  rY  rZ  r\  r[  r]  r   s
            r:   rB  "_TestCommon.test_ne.<locals>.check  s   ((*%%h0GH%%h?ooe,))%0xxzQqS	-++C0++C0++C0++C0 )u6O6O6QR(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(F(EQJ3G3G3IJ(EQJ3G3G3IJ(cAJ3G3G3IJ(cAJ3G3G3IJ(*/266/)B)B)DF7 +**s   H%I
Ir_  rc  rd  rG  s   `  r:   test_ne_TestCommon.test_ne  sB    	F> ::$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 )Nr_  rc  FT)r  r   rE  rF  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                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                   > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       No= f! , (       d  f       g = fNrR  r         ?      ?)rg   r
  r   r  invalidrS  rT  rU  r)   r   r7  r8  rV  r  rv   complexr&  r(  r)  r,  rC   r   rJ   rh   errstaterW  r?   r  r  rX  rY  
datcomplexdatspcomplexrZ  r\  r[  r]  valr   s               r:   rB  "_TestCommon.test_lt.<locals>.check  s   ((*%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )en5M5M5OP():*6*?)H)H)JL )fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(U\B():L<OP,C((3-C,ek-B-B-DciP,ck-B-B-DciP -
 [[2,ebffn-E-E-G-0266\; 3
 ooe,))%0xxzQqS	- )u|Di +*P 32Q +*%   J-M;=M*A M;*
M8	4M;;
N	r_  rc  rd  rG  s   `  r:   test_lt_TestCommon.test_lt  sC    5	En ::$99KKRS((E%L )r<   c                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                   > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       No= f! , (       d  f       g = frr  rw  rz  s               r:   rB  "_TestCommon.test_gt.<locals>.check  s   ((*%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )en5M5M5OP():*6*?)H)H)JL )fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(fo5N5N5PQ(U\B():L<OP,C((3-C,ek-B-B-DciP,ck-B-B-DciP -
 [[2,ebffn-E-E-G-0266\; 3
 ooe,))%0xxzQqS	- )u|Dg +*N 32O +*r  r_  rc  rd  rG  s   `  r:   test_gt_TestCommon.test_gt  sC    4	El ::$99KKRS((E%L )r<   c                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 D  > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       g = fNrR  r   rs  )rg   r
  r  rt  rS  rT  rU  r)   r   r7  r8  rV  r  rv   rx  r&  r(  r)  r,  rC   r   rJ   rh   rz  s               r:   rB  "_TestCommon.test_le.<locals>.check8     ((*%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )u6O6O6QR();*6*@)I)I)KM )&*:)C)C)Es{S(&*:)C)C)Es{S(&*:)C)C)Es{S(&*:)C)C)Es{S(&*:)C)C)Et{S(&*:)C)C)Et{S(&*:)C)C)Et{S(&*:)C)C)Et{S(D()=z?QR)C((3-C,el-C-C-EszR,cl-C-C-EszR * ooe,))%0xxzQqS	- )F_ +**   K1L
Lr_  rc  rd  rG  s   `  r:   test_le_TestCommon.test_le7  C    0	Gd ::$99KKRS((E%L )r<   c                    ^  U 4S jnT R                   R                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 D  > [         R                  " 5          [         R                  " S[        5        [         R                  " 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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        S S S 5        g ! , (       d  f       g = fr  r  rz  s               r:   rB  "_TestCommon.test_ge.<locals>.checkp  r  r  r_  rc  rd  rG  s   `  r:   test_ge_TestCommon.test_geo  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   coorb  ra  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  rt  r  znot implemented .* formatmatchr   )	r  r   rm  rJ   r  r   r   r?  NotImplementedError)r   axis_supportaxesrR   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   rt  dia(1 diagonals) r`  (blocksize=1x1)  r   r1   < sparse  of dtype ''
	with  stored elements 
and shape >)r  r   r,   r9  r?   r  r   reprr   r  extrarL  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  )maxprintrW   )r  r  iF   )r   r?   rV  r  z'positional argument|unpack non-iterabler  )r  rJ   r   r  r  r   strsplitr   r  rE  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  rg   r  r  r`  r  r  r   r1   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r  r  r   r,   r9  r?   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  rg   )rJ   r?   r  tocsctocsrtocoor   r   )
r   r   mytyperN   rT   cr2  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  r2  )r   r   absr  r   r   rR   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r2  )decimals)ndigits)r   r   rJ   aroundroundr  r   )r   decimalrR   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  rt  r  r   r
  rg   r  r  r2  rg   )r   r   rJ   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  r2  )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   DrR   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   rg   r
  r   rg   r  r   r   r
  )r   r   rg   r   r  r   r  r
  rg   r  r  krW   i)(   i?  r  r   r   )r  r   r   r  )rL   r   r   r   r  rK  r   diagonalr   rJ   r   empty)r   matsr  rowscols
sparse_matr  s          r:   test_diagonal_TestCommon.test_diagonal-  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
  rg   r  r  r  r  )      	   rt  r  )offsetr  )rJ   r   r  rK  r   trace)r   rR   rS   r  s       r:   
test_trace_TestCommon.test_traceN  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
  r2  orderr   rW   r   r   r   r   r   r   r         r  rg   r  )r   rW   r   r   r   r   )r   r   r   r8  r9  r  rg   r  )r  r  r  rg   r  r
  )
not_an_argr  r  TrV  zhas no setter|n't set attributer  )r  r   r  r   r?  r@  r  r   r   r9  AttributeErrorrm   )r   r@   r4  srA   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 Nr   r
  )rJ   r   rp   r   r   r   r   rm  )rN   vr  nr  jdense_setdiags         r:   rJ  =_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H8  nUS:  a*  [        R                  R	                  [        SS5      5      nO[        R                  R                  SSUS9nT" XU5        [        R                  " 5          [        R                  " S[        [        5        UR                  XB5        S S S 5        [        R                  " X5      n[        R                  " U5      R                  S:X  a  [        XTS	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  rg   r9  r   r
  r8  rm   rR  z	{msg} {r}err_msg)r   rJ   r   r   choicerK  randintrS  rT  filterwarningsWMSGr)   setdiagr   r   r   rp   r   )rN   rT   r  rrG  r2  rH  rJ  s          r:   check_setdiag=_TestCommon.test_setdiag_comprehensive.<locals>.check_setdiag  s    #bggam,a4q5		((q"6A		))!Ra)8AaA&,,.++Hd<STIIaO /
 GGAM::a=%%*&q[ACFCF+A&q!uae[I"199;;G' 5 /.s   2E##
E1	re   )r  r  r   r
  r  r  r
  r  r
  r  r  rM  )rJ   r   seedr   r  r   r   r  rP  rp   r   )r   rV  shapesr?   r  rH  ksr  rN   rT   k2rJ  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[        R                  " 5          [        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  rg   r
  rR  r  r  r
  )r  r  r   )r   rg   rg   r  rt  r  r   r
  )r+  rg   r   rg   r+  rg   r   r   r   r   r
  r   )r   r   r   r
  )r  rJ   r'   rS  rT  rR  rS  r)   r?  r@  rT  r   r  r   r   )r   r  m2rH   s       r:   test_setdiag_TestCommon.test_setdiag  s   NN266!9%^^F#$$&##Hd4KL*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   F3H
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   rR   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 rk  )r   r  r   rJ   rn  ro  r   rp  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 )
Nre   r   r
  rg   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
  rt  r  r   r
  )
r.  r  rJ   ry  r   sumr   r?   r   isscalar)r?   rI  r  r  matricesr   s       r:   rB  #_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 )rJ   r   r[  r   randr   r   r   r6  rK  r   )
r   dat_1dat_2dat_3dat_4dat_5rB  r?   rI  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  r{  r|  r}  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)	rJ   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 )Nr{  r|  r}  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   r?   )r?   dat_sum	datsp_sumr  r  s      r:   rB  )_TestCommon.test_sum_dtype.<locals>.check,  s=    ggEg*G			.I%g9	8r<   r   r  r6  r   rB  r?   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)Nr{  r|  r}  r   r  keepdimsr  r  r  r
  r
  r  r  r  r  zoutput parameterr  )
r9  r   r  r1   r  r   rJ   r   r?  r@  r   keepr  r  dat_out	datsp_outs         r:   test_sum_out_TestCommon.test_sum_out6  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 Nr{  r|  r}  )r   r  rJ   r  r   r   r?   )r   r  r  r  r  s        r:   test_numpy_sum_TestCommon.test_numpy_sumQ  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 Nr{  r|  r}  r   r  r
  )
r   r  r.   r  r9  r
   rJ   r1   rI   r  )r   r  r  matrix_or_arrays       r:   test_sum_mean_container_type(_TestCommon.test_sum_mean_container_type^  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 )Nr{  )r  r  r  )r  r)  r+  r  r  r  r  r   r
  rt  r  r  )	r   r  r   r  r   r?   r   rJ   r  )r?   r  r  r  r   s      r:   rB  $_TestCommon.test_mean.<locals>.checko  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<   )r9  r6  )r   rB  r?   r  s   `  @r:   	test_mean_TestCommon.test_meanm  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.  rJ   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 )Nr{  r|  r}  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   r?   )r?   dat_mean
datsp_meanr  r  s      r:   rB  *_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)Nr{  r|  r}  r   r  r  r  r  r
  r  r  z"output parameter.*wrong.*dimensionr  )
r9  r   r  r1   r  r   rJ   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  rJ   r  r   r   r?   )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[        R                  " 5          [        R                  " S	S
[        5        [        R                  " S	S[        5        [        R                  " S	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   r?   )      @              ?)r         @r  )r  r  r  rR  &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   linalgr3   rS  rT  rR  r)   r   r   r   )	r   MsMMexpNsNNexpsMexpsNexps	            r:   	test_expm_TestCommon.test_expm  s%   9i4e<^^AU%^8||  #<|<=^^AU%^8||  #$$&##8'
 ##U'
 ##@'
 H$$&EH$$&E# '& 	"54<%-@!54<%-@) '&s   +BE++
E9c                 >   ^  U 4S jn[         4 H  nU" U5        M     g )Nc                   > [        / SQ/ SQ/ SQ/U 5      n[        R                  " 5          [        R                  " SS[        5        [        R                  " SS[        5        [        R                  " S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  rR  r  r  r  r  r  r  )r   rS  rT  rR  r)   r  r4   r   r   r   rJ   r'   r?  r  )r?   r  r  sMinvr   s       r:   rB  #_TestCommon.test_inv.<locals>.check  s    y)Z8%@A((*''D+
 ''2+	 ''<+
 ^^AU%^@B% +& &eiim&;&;&=rvvayI)S!,) +*s   A1C88
D)r  rG  s   `  r:   test_inv_TestCommon.test_inv  s    	-. WE%L r<   c                     [         R                  " 5          [         R                  " S[        5        [	        / 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        S S S 5        g ! , (       d  f       g = f
NrR  r  r  )r   r  r   r  )r	  r   r   )r         @r   r  r  )	rS  rT  rU  r   r   r   r  r   rv   r  s     r:   test_from_array_TestCommon.test_from_array  s    $$&!!(N;wwww78At~~a088:A>'& " #A t~~a088:A>q088:188G;LN '&&   CC//
C=c                    [         R                  " 5          [         R                  " S[        5        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        S S S 5        g ! , (       d  f       g = fr  )	rS  rT  rU  r   r.  r   r  todenserv   r  s     r:   test_from_matrix_TestCommon.test_from_matrix&  s    $$&!!(N;iIyIJAt~~a088:A>.-') *A t~~a088:A>q088:AHHW<M '&&s   CC;;
D	c                     [         R                  " 5          [         R                  " S[        5        / 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        S S S 5        g ! , (       d  f       g = fr  )	rS  rT  rU  r   r   r  r   r   rv   r  s     r:   test_from_list_TestCommon.test_from_list4  s    $$&!!(N;1At~~a088:A>! A t~~a088:E!HEq088:E!HOOG<T '&&r  c                    [         R                  " 5          [         R                  " S[        5        [	        / 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        S S S 5        g ! , (       d  f       g = fr  )
rS  rT  rU  r   r   r)  r   r  r   rv   r   r  Ss      r:   test_from_sparse_TestCommon.test_from_sparseB  s[   $$&!!(N;wwww78A""1%At~~a088:A>q!At~~a088:A>'& " #A ""1%At~~a088:A>t~~aw~?GGI xx02q!At~~a088:A>t~~aw~?GGI xx02# '&&s   FF<<
G
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"  r3  r1  r  r  r  r  r  r  r  r        @)r  r  rI   r9  rJ   r
   r1   r   r  r   flagsc_contiguousf_contiguousr   r   r?   rQ   r.  r   rm  r  rA  rv   )
r   chkr  rN   dense_dot_denserB  rT   check2spboolmatbools
             r:   test_todense_TestCommon.test_todense[  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"  r3  r1  r  r  r  .r  r  )r   r  r  r   r   r   r  r  r  rJ   r   r   r?   r   r   r  rA  rv   )r   r  r  r  rN   r  rB  rT   r	  r
  arrbools              r:   test_toarray_TestCommon.test_toarray  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           	      ^  ^^	 [         R                  " 5          [         R                  " S[        5        [	        / 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     S S S 5        g ! , (       d  f       g = f)NrR  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   )	attributerN   rT   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    )4A)4A&q,AJ'qvvA$C t8ADADADL)aDr<   rb  ra  r`  )indicesindptrdatar  )rowcolr  r  )offsetsr  )rS  rT  rU  r   r   r  r-   rv   r   r?   r   r   r   )
r   r  r  r@   D_castedrV  r  r  r  r  s
           @@r:   test_astype_TestCommon.test_astype  s\   $$&!!(N;'' " #A q!A%%88A;)D xxx5H @ !1!1!3X> !((;	 * 6(BC#??14?801	 ??&;;%B	@K &C__-%;	@K &<__-%8	@K &9? & '&&s   E"F?F
F,c                 d   [         R                  " 5          [         R                  " S[        5        [	        / 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     S S S 5        g ! , (       d  f       g = f)NrR  r  r  r  r  Fr  )rS  rT  rU  r   r   r  hasattrr  r  	writeabler   r  r  r-   rv   r   r?   )r   r  r  r@   r#  r  s         r:   test_astype_immutable!_TestCommon.test_astype_immutable  s    $$&!!(N;'' " #A q!Aq&!!).&xx00+0(,1		)%88A;88A;X^^X^^< & '&&s   DD!!
D/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 Nrg   L1@r7  r8  r   r   r?   r  r  r   s      r:   rB  *_TestCommon.test_mul_scalar.<locals>.check  sW    //%(C%%e,Es1uuQw&7&7&9:s4x%*)=)=)?@r<   r5  rG  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/  r0  s      r:   rB  +_TestCommon.test_rmul_scalar.<locals>.check  sW    //%(C%%e,Equqw&7&7&9:tCx$u*)=)=)?@r<   r2  rG  s   `  r:   test_rmul_scalar_TestCommon.test_rmul_scalar  r5  r<   c                     U R                   [        R                     n[        [        5         S U-    S S S 5        g ! , (       d  f       g = fr>   )r8  rJ   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  rd  r   )r7  r8  rV  r   r   r  r?   r  r  rN   rT   r  r   s         r:   rB  #_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<   r2  rG  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  rd  )r7  r8  rV  r   r   r@  s         r:   rB  $_TestCommon.test_radd.<locals>.check  sS    //%(C%%e,E
AAcFAAqaiik/2r<   r2  rG  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  r2  )r7  r8  r   r   rJ   r   r  r   r?   r  r  rR   r   s       r:   rB  #_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<   rA  r5  rJ   r?   rG  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 )Nr6  r   rK  rL  rM  r2  r  )r7  r8  r   r   r  rN  s       r:   rB  $_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<   rA  rP  rG  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  )r7  r8  r   r   r  rK  r   )r?   r  r  r  sumSsumDr   s         r:   rB  $_TestCommon.test_add0.<locals>.checkV  s    //%(C%%e,E 	224c:5A;7;aE	;78Dq!5AC56D5 85s   B(8B-r2  rG  s   `  r:   	test_add0_TestCommon.test_add0U  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+  )rg   r  r  )r   r)  r   )r   r  r   )ra  r  r`  rb  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r+  )r   r  r   multiplyr   r   )
r   rR   rS   rq  Bspout_fmtr"  r  CspDsps
             r:   test_elementwise_multiply%_TestCommon.test_elementwise_multiplyd  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+  rl  r  rg   r
  )r*  r  r  )r  r  rg   )r  r  r  r'  r=  r   r   N)r   rJ   onesrm  r  r   r@  r?  rd  r   r  r(   )r   rR   rS   r"  r  Er1  GHJKLre  rh  EspFspHspHsppJspJsppKspr  
spmatricesr  rI  
dense_multsp_mults                              r:   #test_elementwise_multiply_broadcast/_TestCommon.test_elementwise_multiply_broadcast|  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
  rK  rL  rM  r2  r        ?r  g      ?r   r`  ra  rb  rc  r'  )r  rg   r
  r{  )r   rt  r  rR  )divide)r  rv  )
rJ   rW  r   r   r  r  r   r   r   ry  )r   r  denomrR   rS   rq  re  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   rg   r   )r   r  r  r   )r   r  r   r   )r   r  r)  r*  )r
  rg   皙@r  r	  r   r  r  r
  r   r
  rg   r  )r  r  r	  )r   r  r9  r   r   r   r?   r?  r  __pow__r@  rJ   r  matrix_powerr  )r   rR   rS   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   rg   r   r  rg   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
  rg   r  r'  r
  r
  r
  r   r  r   )r  r   r(   r   r   r   rJ   ro  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
  rg   r  r  r'  r  r  )rJ   r   r  r9  r   ro  r   r   )r   rR   rq  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
  rg   r  r   r   )r  r   r   r   rR   rS   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
  rg   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>.Customi8  c                     Xl         g r>   scalar)r   r  s     r:   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__9  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   rc   r<   r:   Customr  8  s    %+r<   r  rg   r
  r  )r  rC   r   r   r   )r   r  r  rR   r  A_scalarA_cs          r:   test_mul_custom_type _TestCommon.test_mul_custom_type7  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
  rg   r  r   r   r   r   r   r  )r  r   r   r  s      r:   test_comparisons_custom_type(_TestCommon.test_comparisons_custom_typeG  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  rW   )r  r   r   r   r   )r   r  r  actualr  s        r:   test_dot_scalar_TestCommon.test_dot_scalarQ  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
  rg   r2  r'  )	r  r   rm  operatormatmulr   r   r?  r@  )r   r  rS   r!  r  s        r:   test_matmul_TestCommon.test_matmulY  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
  rg   r  )r  r
  r  )r  r   rm  r   r   r   r   r1   r   rI   r
   r9  rJ   r?  r@  r   r   r   
atleast_2d)r   r  r!  r  bad_vecsr@   s         r:   test_matvec_TestCommon.test_matveck  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
  rg   r2  r9  g333333?r  r  r  r  )r1   r   r  r   r   r  r  r  r   r[  r   rK  rm  r?  r@  r   r9  r   )r   rN   a2rT   aspbspcspr  wantru  fracrR   r  rI  rU  rS   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
  rg   r  r  r  r  r  rg   )r  r   r1   r   rI   r9  r
   typer   r   r   )r   rN   r  bsrT   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
  rg   r   r  )r`  r  ra  rb  r  rD   r                @)r   dense)r   r   r   r  asformatr   r   r   )r   rR   r  r   rN   rT   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  r6  r   r   r  r  r{  r  r   r  )r`  to)r
  rg   r  r  )r
  rg   r  r  r  r2  	blocksize)r   r   r  r~   r   r   )	r   r@   rA   rR   rq  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   r?   )r?   rI  r  r  rN   rT   r  r   s         r:   rB  )_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  rJ   r   r  r   r   r   r   rm  r?  r@  r6  rK  r   )r   r  r  rB  r  r?   rI  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>   )r7  r8  r   r?   r  r  sum1sum2r   s        r:   rB  )_TestCommon.test_add_dense.<locals>.check  sI    //%(C%%e,E ;Dt3Y/;Dt3Y/r<   r2  rG  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>   )r7  r8  r?   rA  r   r  s        r:   rB  )_TestCommon.test_sub_dense.<locals>.check   s    //%(C%%e,E yyD {"4s3{"4s3 	C50"4s3-4"4s3r<   rA  rP  rG  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
  rg   )r   r  r  rm  )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[        R                  " 5          [        R                  " S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   rR  zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rJ   rn   complexfloatingr  rv   r  r@  rS  rT  rR  r)   maximumminimumr   r   r   r?   )r?   dtype2btyperR   rS   max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s            r:   rB  /_TestCommon.test_maximum_minimum.<locals>.check?  sr   }}UB$6$677NN;#5#5e#<=NN7>>%#89 KKN)#KKO'!NN6*("NN7>>&#9: l"((*''0+	 		!		! + JJwqz71:6Ewu~u5ekk2JJwqz71:6Ewu~u5ekk2# +*s   ;?G??
H)r  r  r  r   )rJ   r   r5  r   r  r  r?   )r   rB  r?   r  r  r  r  r  s   `    @@@r:   test_maximum_minimum _TestCommon.test_maximum_minimum9  s    ((Iy)<=((Iy*=>hh	<FG!	3 !	3F %%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   rV  r   	__class__r   r~   r   rU   )r   rR   toselfs      r:   	test_copy_TestCommon.test_copyg  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  rW   )r.  rJ   r   r  r  zipr   r   )r   rS   rR   r@   rA   s        r:   test_iterator_TestCommon.test_iterator  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  rX  r  r  )r   r  rJ   ro  r  r   r   r   r?  r@  rd  r   )r   r   rN   rT   r  r2  r  r  r  r  r  dspespfsps                 r:    test_size_zero_matrix_arithmetic,_TestCommon.test_size_zero_matrix_arithmetic  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  rX  )r   r  r  r   r  r   r  r  toliltodoktobsr)r   r   rN   rT   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  )rJ   r   float16r?  r@  r  rv   r  )r   rN   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                 ,   ^ ^ SS K mUU 4S jnU" 5         g )Nr   c            	        > [         R                  " 5          [         R                  " S[        5        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[     S S S 5        g ! , (       d  f       g = f)NrR  )protocolr   )rS  rT  rU  r)   r  rV  rK  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r   rG   itemsrI   rJ   r
   ro  r   )r  r/  sploadedkeyr}  pickler   s        r:   rB  &_TestCommon.test_pickle.<locals>.check  s3   ((*%%h0GH

) %f&=&= >H%||FLLL,RSH hnn=&u}}8H8H8JK x? %*NN$8$8$:%c2::66.s4E4Ec4JK(e44",SVRZZ"@"@.s4E4Ec4JK#C+<+<S+A$AB %; !? +**s   F(G
G)r6  )r   rB  r6  s   ` @r:   test_pickle_TestCommon.test_pickle  s    	C, 	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)rD   r  z%Unary ops not implemented for dok/lilr8  r  r        4@)rE  rF  r  r   r~   rJ   r  r   r  r   r   )r   ufuncr  X0X2r   s        r:   rB  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rintr<  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  rc   )r   rB  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  rg   r   r   r   r  r   r   r   r  rg   r
  r   rg   r  rg   rg   r  r  )rg   r   r   r  )r  rb  ))r  rg   r;  r'  )rJ   r   r  r   resizer   r   r9  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>  )r?   rV  T)rb  ra  r  r  rD   r  )r  r   r  rC   r   NON_ARRAY_BACKED_FORMATSr   rU   r?   rJ   r  r   r  )r   rR   self_formatr"  other_formatrS   s         r:   test_constructor1_base"_TestCommon.test_constructor1_base0	  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<   rc   N)vr   r   r   r   r%  r-   r5  r&   r&  r#   r'  r    r(  r!   r)  r%   r*  r"   r+  r$   r,  r   r.  classmethodr;  rH  rM  re  rj  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r.  rB  rE  markslowr_  rh  ru  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r3  r9  r<  rB  rG  rQ  rV  r]  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r+  r8  rS  r^  rd  r   rc   r<   r:   r0  r0  1  s?   @"KMMMMMMMG; ;.	1"H#J4;z:x6p6pY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F(" E65?&P(" F67A>6N22'6R#6J(LT="		
,02<08=t!DF3B>
;A3"32 #>0$X>64p+(2
D 86,D\:0)84t924*';R7r<   r0  c                   ,    \ rS rSrS rS rS rS rSrg)_TestInplaceArithmeticiR	  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)rJ   ro  r  rV  r   r9  r?  r@  rm  r   r   r  )r   rN   rT   r@   rA   s        r:   test_inplace_dense)_TestInplaceArithmetic.test_inplace_denseS	  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)castingrg   r.  	r7  r8  rJ   can_castintrV  r   r   r  r?   r  r  rN   rT   r   s        r:   rB  6_TestInplaceArithmetic.test_imul_scalar.<locals>.check	  s    //%(C%%e,E {{3{;JJLQHHJQ"1iik2{{5%=JJLT	HHJT	"1iik2 >r<   r2  rG  s   `  r:   test_imul_scalar'_TestInplaceArithmetic.test_imul_scalar	  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 rr  ru  rx  s        r:   rB  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<   )r5  rJ   rv  r?   rw  rG  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  rm  r  )r  rJ   r'   r   r   r9  r?  r  )r   rN   rT   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+rc   N)	r   r   r   r   rn  rz  r  r  r   rc   r<   r:   rj  rj  R	  s    0d.2r<   rj  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   rg   r   r  r  r  r  r  )r  r   r  )r  r  r'  )
r   r  r   rK  r   r  r?  r\  r  __getitem__)	r?   r  rR   r  r  r  rI  rr  r   s	           r:   rB  *_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-   rJ   r?   rG  s   `  r:   test_getelement_TestGetSet.test_getelement	  s%    	J$ &E"((5/" &r<   c                    ^  U 4S jnS [         R                  S /nU H-  n[         H   nU" [         R                  " U5      U5        M"     M/     g )Nc                   > TR                  SU S9n[        R                  " 5          [        R                  " S[        [
        5        U" U R                  S5      5      US'   U" U R                  S5      5      US'   U" U R                  S5      5      US	'   U" U R                  S
5      5      US'   U" U R                  S5      5      US'   U" U R                  S5      5      US'   U" U R                  S5      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  rR  r   r  r  r
  rg   r  r  r  re  r*  r   r  r)  r  rt  r  )r   r  r   r*  )r   r   r  r   )rg   r   r)  r   ))r   r  )r  r  r  r=  r  g     ^@r'  )r  )r  rS  rT  rR  rS  r)   r  rJ   bool_r   r   r?  r\  __setitem__r   r@  rn   r  r  )r?   scalar_containerrR   rr  rG  r   s        r:   rB  *_TestGetSet.test_setelement.<locals>.check	  s   vU3A((*''$8OP*5::a=9$*5::c?;$*5::a=9$*5::c?;$+EJJqM:%,UZZ];&	*5::a=9$ +  "IIK,l!K Aj!--UC A  y!12j!--C 3 ==(:(:;;@QA!)Q]]FAF  AR;+ +*s   CG<<
Hc                 D    [        [        R                  " U //5      5      $ r>   )r!   rJ   r   r@   s    r:   <lambda>-_TestGetSet.test_setelement.<locals>.<lambda>
  s    i1#0r<   c                     U $ r>   rc   r  s    r:   r  r  
  s    ar<   )rJ   r   r-   r?   )r   rB  scalar_containersr  r?   s   `    r:   test_setelement_TestGetSet.test_setelement	  sH    	G8 1"((K
 !2)bhhuo'78 * !2r<   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[        R                  " 5          [        R                  " S[        [
        5        SUS'   S S S 5        [        US   S5        g ! , (       d  f       N= f)N)r  rW   r  rR  r
  )r   r  )r  rS  rT  rR  rS  r)   r   r?   rR   r   s     r:   rB  9_TestGetSet.test_negative_index_assignment.<locals>.check
  s[    we4A((*''$8OP% + 51% +*s   &A%%
A3rP  rG  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  rW   c                 >  > U < SU< SU< 3nTR                  TT45      n[        R                  " 5          [        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 ; rR  r
  rN  )r  rS  rT  rR  rS  r)   r   r  )r  rI  nitemsr6   rR   r  rH  r   s        r:   	_test_set3_TestGetSet.test_scalar_assign_2.<locals>._test_set
  s    EQEVJ/C1v&A((*''$8OPQ$ +  =Q$C8	 +*s   'B
Brg   r  r  r*  r  r  rt  r
  )r   r   r  r  rI  r  rH  s   `   @@r:   test_scalar_assign_2 _TestGetSet.test_scalar_assign_2
  sV    1	9 WhrB"eBiBir+-DAaA-r<   c                 V   U R                  S5      n[        R                  " S5      n[        R                  " 5          [        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  rR  r
  r  r  r  r+  
r  rJ   r   rS  rT  rR  rS  r)   r   r   r!  s       r:   test_index_scalar_assign$_TestGetSet.test_index_scalar_assign)
  s    NN6"HHV$$&##Hd4KLV###  ' 	199;* '&s   :B
B(rc   N)
r   r   r   r   r  r  r  r  r  r   rc   r<   r:   r  r  	  s    #,!9F#"	+r<   r  zfails in parallelreasonc                       \ rS rSrS rSrg)
_TestSolvei5
  c                 2   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[        R                  " 5          [        R                  " SS[        5        [        U5      R                  U5      nS S S 5        [!        X#-  U5        g ! , (       d  f       N= f)Nr8  r   r  r
  r   rR  r  )rJ   r   r[  r   rx  r  rK  r   r   r  rS  rT  rR  r)   r2   solver   )r   rH  rR   r@   rA   rU  r  s          r:   
test_solve_TestSolve.test_solve7
  s6    
		q1%w'IINN1IINN1Q3299>>!A##6 66IINN1s1vATAcF s1vAtA!eH Ac!eH  NN1$$&##B') Qa A	 '
 	AE!$ '&s   :7F
Frc   N)r   r   r   r   r  r   rc   r<   r:   r  r  5
  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)_TestSlicingiN
  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
  rW   r  r   r
  r  )r   r  rJ   r  r?   r[   r  r  r   s    r:   test_dtype_preservation$_TestSlicing.test_dtype_preservationO
  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 )NrY  r  r   rg   rJ   r  r[   r  r  r  r   r?   r   dtrR   s      r:   #test_dtype_preservation_empty_slice0_TestSlicing.test_dtype_preservation_empty_sliceU
  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  rW   r{  r   r
  rg   r
  rg   r
  r  r   r  r  r  r  r  r   r   rt     r  r)  )r.  r   r  r  r9  r   r   r?  r\  r  slice)
r   rS   rR   r0r1r2r"  r  rp  r1  s
             r:   test_get_horiz_slice!_TestSlicing.test_get_horiz_slice_
  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  rW   r{  r   r
  rg   r  r  r  r  r  rl  r  rt  r  r  r)  )r   r  r  r9  r   r   r   r?  r\  r  r  )
r   rS   rR   c0c1c2r"  r  rp  r1  s
             r:   test_get_vert_slice _TestSlicing.test_get_vert_slicet
  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  rW   rg   r   r  r
  r  rl  r  r  r  )r   r  r  r   r   r   )r   rS   rR   rp  r1  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      rg   r9  r  feature not implemented)	rJ   r   r  r  r@  rE  rF  r   r   )r   v0rG  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  rW   r  r  r  r  rt  rg   r  r  r+  r
  r  )	r.  r   r  r  r   r   r   r  r   )r   rS   rR   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<   rg   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  rW   rg   r
  r  r  r8  r*  r  r  rt  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 Nrc   r   )r   r   r  rm   r   r   )rN   r@   rA   rR   rS   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  )
rI   rJ   r
   rw  r   r   r  rm   r   r   )rN   rT   aibir@   rA   rR   rS   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
  rg   r  r  r  rt  r  i)r.  r   r  r  rJ   s_r   r   	enumerate	itertoolsproductrL   r  )r   r  slicesr  rI  rN   r  r  rT   extra_slicesr  rR   rS   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  rW   r  r   r
  rg   r  )Nr
  rg   Nr  )Nr
  r  )r
  N)rW   r
  r  rg   r
  )rg   )Nr
  rg   )r
  )r
  Nrg   )r
  rg   N)r.  r   r  r  r   r   r9  r   rS   rR   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  rW   .).)r  .).r  ).r  zindex .5. out of ranger  )r  .zindex .10. out of range).rW   r
  rg   )r
  r
  .)r
  .r
  )r.  r   r  r  r   r   rE  r   r\  rm  r   r   rT   rN   s      r:   test_ellipsis_slicing"_TestSlicing.test_ellipsis_slicing6  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  rW   )TFTFTF.zshape mismatchr  )r.  r   r  r  r   r   r?  r@  )r   numpy_arN   ix5ix10
ix10_6Truefull_ixs          r:   test_ellipsis_fancy_bool%_TestSlicing.test_ellipsis_fancy_bool_  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  rW   r  .rg   r
  )r.  r   r  r  r   r   r  s      r:   test_ellipsis_fancy_slicing(_TestSlicing.test_ellipsis_fancy_slicingu  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  rg   z(an index can only have a single ellipsisr  )..).r
  .)r  r   r  rE  r   r\  r   rN   s     r:   test_multiple_ellipsis_slicing+_TestSlicing.test_multiple_ellipsis_slicing  s    NN6!9,,Q23]]:!KMhKM ]]:!KMkNM MM MM Ms   A:+B:
B
Brc   N)r   r   r   r   r  r  r  r  r  r  r  rE  rg  	fail_slowr  r  r  r
  r  r  r   rc   r<   r:   r  r  N
  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                    U R                  S5      n[        R                  " S5      n[        R                  " 5          [        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  rR  r
  r   r  r  r+  r  r  r!  s       r:   test_slice_scalar_assign+_TestSlicingAssign.test_slice_scalar_assign  s    NN6"HHV$$&##Hd4KLV!A#a%!A#a%!A#a%!AB$!%R%(  ' 	199;* '&s   AB;;
C	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                 V  > SU < SU< 3nTR                  TT45      n[        R                  " 5          [        R                  " S[        [
        5        SX0U4'   S S S 5        [        R                  " TT45      nSX@U4'   [        UR                  5       XBS9  g ! , (       d  f       NE= f)Nzi=z; j=rR  r
  rN  )
r  rS  rT  rR  rS  r)   rJ   r   r   r   )r  rI  r6   rR   rS   r  rH  r   s        r:   r  9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set  s    qe4u%C1v&A((*''$8OPQ$ + !Q AAdG%aiik1B +*s   'B
B(rg   r  rW   r  r  rt  )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[        R                  " 5          [        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  rR  rg   r  r)  r  r  r  rW   r  r   r
  r  )r  rS  rT  rR  rS  r)   r   r   rJ   r   rm  r  s      r:   test_self_self_assignment,_TestSlicingAssign.test_self_self_assignment  sH   NN5!$$&##Hd4KL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[        R                  " 5          [        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  rW   r   r   )r   r   r  )r   r  r   r  r
  r   r  rR  r  r  r  r  r)  r  rg   )
r  r   rS  rT  rR  rS  r)   r   r   r(  )r   rS   r  blocks       r:   test_slice_assignment(_TestSlicingAssign.test_slice_assignment  s    NN5!(!"!# $ A!u$$&##Hd4KLAcFAcFAcFSAacFqyy{H5))%,7Abqb!eHqyy{2A2rr62E: '&&s   BC,,
C:c                    U R                  S5      n[        R                  " 5          [        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  rR  r  r  r  r  r)  r  rW   r  r  r  r  r"  )r  rS  rT  rR  rS  r)   r)  rJ   r'   r   r   r   )r   rS   r  s      r:   "test_sparsity_modifying_assignment5_TestSlicingAssign.test_sparsity_modifying_assignment  s    NN5!$$&##Hd4KLAcFAcFAcFAcF&&rvvay1AbqE ' '''(;<199;1 '&s   AB>>
Cc                 r   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[        R                  " 5          [        R                  " S[        [        5        [        U5       H1  u  pVXQU'   XRU'   [        UR                  5       U[        U5      5        M3     [        U5       Hb  u  pv[        U5       HN  u  pXSU-  SUS-   -  -   XU4'   SU-  SUS-   -  -   X&U4'   [        UR                  5       U[        Xh4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  rg   r
  r  r*  r  r  rt  r  r   r  r  rR  rW     r  d   r'  r  r  )r  r
  r  r
  rg   r  )r   r
  r  r  )r  r   r   r  rJ   r  r   rS  rT  rR  rS  r)   r  r   r   r  rK  r   r?  r@  r  listr  rV  )	r   rR   rS   r  r  rI  rN   r  rT   s	            r:   test_set_slice!_TestSlicingAssign.test_set_slice  s<   NN6"%'(UURa&"Qq'2ab62add8QqV*bBiEQrEQ1r!AwB)RWWR[*
 $$&##Hd4KL!&)!!"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   &E:N''
N6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
  rg   r
  r
  r
  r  )r  rJ   ro  r   r   r  s      r:   test_assign_empty$_TestSlicingAssign.test_assign_empty  sL    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
  rm  r  )r  rJ   ro  r   r   r   r   rR   r@   s      r:   test_assign_1d_slice'_TestSlicingAssign.test_assign_1d_slice  sR    NN2776?+HHQK!Q$!Q$199;Iy(IJr<   rc   N)r   r   r   r   r  r  r  r$  r'  r.  r2  r6  r   rc   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 )NrY  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rg   r>  r'  r  )r  rJ   r   r?  r\  r@  r  r  r  s     r:   test_bad_index!_TestFancyIndexing.test_bad_index2  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        UR                  S:X  a]  [	        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        O\[        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  rW   r  r
  r  rg   r  )rg   r*  r  r  r  r+  r  r*  r  rt  r   r  z"Only 1D or 2D|>2D is not supportedr  r  )r.  r   r  r  r   r   r   r   rE  r   r\  r  r   rJ   rw  )r   rS   rR   r@  r  s        r:   test_fancy_indexing&_TestFancyIndexing.test_fancy_indexing9  s   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	
 88u2A2Ax<002AbqbAq6(lODQF8RaR<002A1vhlODz1UV"1"1vh, Wz1UVAq6(BQB, W 	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 WVVVs   7j%j0
j-0
j?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 )Nre   r  r  r  r  r
  rM  )rJ   r   r[  r.  r  rd  rQ  r  r(   r   r   r?  r\  r  )r   NUM_SAMPLESr  r  r  Irs  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  rg   z(bool index .* has shape .* instead of .*r  )r.  r   r  r  rJ   ro  rA  r  r  r  rI   rE  r   r\  )r   r  r  rS   rR   row_long	row_shortcol_long	col_shortr  r  rI  rL  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 )Nre   r  r  rW   r   rg   rM  r  r  r+  )TFTTF)
FTTFTFFFFF)r  r  Tr  )r  r   r
  )rJ   r   r[  r.  r   r  r  r   rQ  rA  r   r   r   r?  r\  r  r@  )	r   rS   rR   rG  rs  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 )Nre   r  r  rW   r   rg   r  rM  r  r+  )r  r  )r  rW   r
  )rJ   r   r[  r.  r   r  r  r   rQ  rA  r)  r   r   r?  r\  r  r@  )	r   rS   rR   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   rJ   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  rg   )r  r   r?  r@  r  rJ   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                 R   U R                  [        SS/SS//5      5      n[        R                  " 5          [        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   rg   r  rR  )	r  r   rS  rT  rR  rS  r)   r   r   r   s     r:   test_fancy_indexing_2d_assign0_TestFancyIndexing.test_fancy_indexing_2d_assign)  s    nnUQFQF#345$$&##Hd4KL"%q!fq!fn"5CAA ' 	WS\51a&1a&)9#:; '&s   5B
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  rW   r   r
  rg   r  r  FFFFFr  r   r
  rg   r  r  	r.  r   r  r  rJ   r   r   r   rw  r   rS   rR   rt  rs  s        r:   test_fancy_indexing_empty,_TestFancyIndexing.test_fancy_indexing_empty1  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<   rc   N)r   r   r   r   r%  r;  r@  rC  rK  rR  rX  r_  rd  rg  rj  rr  r   rc   r<   r:   r9  r9  #  sE    -1~=@<4,G@I.O
L<0r<   r9  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'  ru  r  rV  sort_indicesr   )r  r  s     r:   check_remains_sortedrw  B  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)	_TestFancyIndexingAssigniQ  c                     U R                  [        R                  " SS/5      5      n[        [        [
        [        4UR                  SS5        [        [        [
        [        4UR                  SS5        g )Nr  r>  rg   r?  )r  rJ   r   r?  r\  r@  r  r  r  s     r:   test_bad_index_assign._TestFancyIndexingAssign.test_bad_index_assignR  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[        R
                  " 5          [        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NrR  r
  )r  r.  rJ   r   rS  rT  rR  rS  r)   rw  r   r   r  rI  rR   rS   r  rH  r   s       r:   _test_set_sliceI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_sliceZ  s    1v&ARXXq!f-.A((*''$8OPQ$)!,AdG - +
 &aiik15 -, +*s$   2CB5
C5
C	?C
Cr  rW   r  r  r  rt  rg   )r  r,  )r  rJ   r   r   r  r  rI  r  rH  s   `   @@r:   test_fancy_indexing_set0_TestFancyIndexingAssign.test_fancy_indexing_setW  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                   > TR                  SU S9n[        R                  " 5          [        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  rR  r
  r   rg   r  r  rZ  )	r  rS  rT  rR  rS  r)   r  r   r  r  s     r:   rB  D_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.checkl  s    vU3A((*''$8OP!&A1Q%1+QUUWejjmAo6"ZZ_!A#ac'
QUUWejjmAo6C#QUUWejjmAo

1&EF +**s   C?D//
D=r  rG  s   `  r:   test_fancy_assignment_dtypes5_TestFancyIndexingAssign.test_fancy_assignment_dtypesk  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[        R                  " 5          [        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  r{  rR  r   r
  rg   r  rW   r8  r  )r   rW   r8  rY  r  r(  r'  )r'  r{  r  )r  r'   r   rS  rT  rR  rS  r)   rw  rm  r   r   r.  rJ   r   r   r  )r   rR   rS   i0i1i2r"  s          r:   test_sequence_assignment1_TestFancyIndexingAssign.test_sequence_assignmentz  sk   NN5!NN3q8$2Y$$&##Hd4KL%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   ,L?A J.?ALK !AL%K3A,LK$7>L5K5=A(L.
J=	8L 
K	
L
K!	L$
K2	.L5
L	?L
L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  rW   r   r
  rg   rm  rn  *   r  ro  rp  rq  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<   rc   N)
r   r   r   r   r{  r  r  r  r  r   rc   r<   r:   ry  ry  Q  s    Y
"(#+/Z$r<   ry  c                       \ rS rSrS rSrg)_TestFancyMultidimi  c           
         [         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[         R                  R                  S	5        U R	                  [         R                  R                  S
S5      5      nU R                  U5      nUR                  S:X  aW  UR                  [         R                  " S/S/S//S/S/S///5      [         R                  " S
/S/S//S/S/S///5      45        U GH  u  pEX4U4   nX$U4   n[        [        U5      U5        US
-   nUS-   n	[        [        UR                  X45        [        [        UR                  XI45        UR                  S:w  aP  [        [        UR                  XD/[        S 5      45        [        [        UR                  [        S 5      XU/45        M  [        X4U/S S 24   R                  5       X$U/S S 24   5        [        US S 2XU/4   R                  5       US S 2XU/4   5        GM      g )Nr
  rg   r  r  r  rg   r'  r  r  r  r  rg   r  r
  re   r  r)  r  r  )rJ   r   r   r[  r.  r  r  r   rL   r   r   r?  r\  r  r  )
r   IandJr  r  rG  rs  rH  DIJrI  rJ  s
             r:   test_fancy_indexing_ndarray._TestFancyMultidim.test_fancy_indexing_ndarray  so   XXsQC!o&(;<XXsQC!o&)(=>XXyk"BHHqcA3_$=>XXi "((QC!qc?";<XXy),-rxxI8N/OP
 			tLL1-.NN1 88uLLQC!qc?aS1#sO<=QC!qc?aS1#sO<=?
 DAqD'CqD'Cs+EEEE*ammeZ@*ammaZ@xx5 j!--1&%+9NOj!--%+v9NOQ1vqy\113Q1vqy\BQq1&y\113Qq1&y\B! r<   rc   N)r   r   r   r   r  r   rc   r<   r:   r  r    s    $C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
Nre   r  r)  rg   r  r'  r  r  r  )rJ   r   r[  r.  r  r  r   rw  r   r   r?  r\  r  )	r   r  r  r  rG  rs  rI  rJ  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         [        R                  " 5          [        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X0U4'   [        UR                  5       U5        g ! , (       d  f       N^= f! , (       d  f       Ng= fr  )r  rw  rS  rT  rR  rS  r)   r.  rJ   r   r   r   r  s       r:   r  R_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_slice  s    1v&A%a((*A*A*C''$8OPQ$ +D( RXXq!f-.AAdG%aiik15 +D*C((s"   C'B5C5
C	?C
Cr
  rg   r  r   r  r'  r   rg   r  )r   r  r  )r  r
  rg   )rJ   r   r  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  )rJ   r   r[  r.  r  r  r   r   r?  r\  r  )r   r  r  r  rG  rs  r  iirI  rI  jjrJ  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 )Nre   r  r)  )r
  rg   r  r  r  rg   )r  r  r  rg   r  r
  )r
  rg   r  r  r  r  r)  )rJ   r   r[  r.  r  r  r   r?  r\  r  r  )r   r  r  rG  rs  r  rI  r  rJ  C1C2s              r:   test_fancy_assign_slice0_TestFancyMultidimAssign.test_fancy_assign_slice7  s    
		tLL1-.NN1"#$!Ba!$"#$!Ba!$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,D  Drc   N)	r   r   r   r   r  r  r  r  r   rc   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)	_TestArithmeticiI  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   rv   r
  r  )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r:   __arith_init_TestArithmetic.__arith_initM  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<   r8  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  ru  rA  )_TestArithmetic__arith_initr   r   r-   rJ   ry  rv   r  rn   r  r
  r   r?   r   r  r  r  r  r@   rR   rq  rA   rS   re  D1S1s                r:   test_add_sub_TestArithmetic.test_add_sube  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  ru  g+=)atol)r  r   rm  r   r-   rJ   ry  rv   r  rn   r  r
  r   r  rZ   r   r?   r  s                r:   test_mu_TestArithmetic.test_mu  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rc   N)r   r   r   r   r%  r  rE  rg  r  r  r  r   rc   r<   r:   r  r  I  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 )Nr8  r  r  r  r      r  iir
  rW   r  Texplicitr  rg   r  r   rW   rW   r   )rJ   r  r  r[   rh   r  r   r  r  r   rp   rZ   r?   r   r  r?  r@  )r   r?   r  r  r\  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  rW   r   r
  r+  r  r  rZ  rt  r  r  Tr  r  )
r  )   r  +   ,   -   .   /   0   r   )
r8  r
  r  r  r  r  r   r)  r*  r   )
r8  r
  r  r  r  r  r  r)  r*  r   )r*  r      &   r  )r
  r   r  r9  r  rZ  3   r  )rW   r  r  Fr  )r9  rJ   r   r  r  r   rZ   r   rp   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  r9  r
   rJ   r1   r*   r+   r.   rp   rI   rZ   nanminnanmaxargminargmax)r   r  r  r  spmatrix_or_sparrays        r:   test_minmax_container_type&_TestMinMax.test_minmax_container_typeD  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  rW   r  r   r
  r+  r  r  rZ  r  )r
  r  r  r  )rt  r  r   r
  )r.  rJ   r   r  r  rW  r  r  r  r  r   r   rI   r'  )	r   r  r  X_nan_maximumX_nan_minimumr  r  X_nan_maximaX_nan_minimas	            r:   test_nanminmax_TestMinMax.test_nanminmaxd  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 )Nr{  r|  r}  )rp   rZ   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_params  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   _datar{  r|  r}  )
scipy.sparser  r   r  rI   _minmax_mixinr   rJ   rp   rZ   )r   r  r  r  s       r:   test_numpy_minmax_TestMinMax.test_numpy_minmax  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  rg   r  )r   r   r  rt  )r  rt  r  r  r  )r
  rg   r   r   r  r  r)  r  )r  r  r  )r  r+  rW   )r  r  r+  r  r
  Tr  rg   r  rX  FrF  zCannot applyr  r  r  r  )r  r   r  r  )r   rg   rg   rg   )r
  rg   r   r  r
  )r   r  r  r   r   r  r  rZ  rZ  )r  r  rJ   r   r   r.  r  rI   r  r   r  r  r  r  r  r   rE  r   r@  r9  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rc   N)r   r   r   r   r  r  r  r  r  r  r  r   rc   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   rg   r  r  r~  r+  r  r
  rt  r  )r   rv   rA  r  rJ   r[   rh   r9  r  getnnzr   r  r;   r?   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<   rc   N)r   r   r   r   r  r   rc   r<   r:   r  r    s    2r<   r  Tc                    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@  r\  r?  rE  rF  )rN   r   fcs     r:   r   6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper!  sF    Aq<B<'+Y
"N4 A ++&?@@As	    6A)r   r   )r  r   s   ` r:   wrap%_possibly_unimplemented.<locals>.wrap   s'    __R A !A Nr<   test_NotImplemented)dictrG   r3  
startswithr  r   	__bases__)r:  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)r0  r*  r  r  rj  r  r  r  r9  ry  r  r  r  r  rG   r&  getr@  r   r  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr:  r   old_clss                 r:   sparse_test_classr:  4  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 rS rS rSrg)_CompressedMixini`  c                 B   U R                  U5      nSUl        UR                  5         UR                  (       d   e[        U5         UR	                  S5        S S S 5        [
        R                  " UR                  5       S:H  5      (       d   eg ! , (       d  f       N== f)NFr  )r  ru  rv  rw  rT  rJ   allr  r  s      r:   _test_setdiag_sorted%_CompressedMixin._test_setdiag_sorteda  sr    NN1$	####!!$IIaL %vvajjla'(((( %$s   B
Bc                     Sn[         R                  " SUS-   5      n[         R                  / SQ   U-  nSnSUSU* S 24'   / SQnU R                  X54X4S9nU R	                  U5      $ )N  r
  r  rg   r
  r  r  r  r   rJ   r   c_r*  r?  )r   r  valsdiagsN_newr"  r  s          r:   test_setdiag_noconvert'_CompressedMixin.test_setdiag_noconvertl  sy     yyAE"j!D( a%j/v>((++r<   c                     Sn[         R                  " SUS-   5      n[         R                  / SQ   U-  nSUSSS 24'   / SQnU R                  X44X4S9nU R	                  U5      $ )NrB  r
  rC  r  r  r  rD  rE  )r   r  rG  rH  r"  r  s         r:   test_setdiag_cooconvert(_CompressedMixin.test_setdiag_cooconvert}  so    
 yyAE"j!D(ae/v>((++r<   rc   N)r   r   r   r   r?  rJ  rM  r   rc   r<   r:   r<  r<  `  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S rS rS rSrg)TestCSRi  c                     [         R                  " 5          [         R                  " S[        [        5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fNrR  )rS  rT  rR  rS  r)   r!   r:  argsrB   s      r:   r  TestCSR.spcreator  :    $$&##Hd4KLd-f- '&&   +A
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  r2  )r  r  rg   rl  r  r  rb  )r   r)  r   r  r   r  r  r   r  r   r   r   rT   r  s      r:   test_constructor1TestCSR.test_constructor1  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  r2  r  r=  r  )r   r   r   r   r
  r
  r
  )r   r)  r   r  r   r  r  r   rY  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   rg   r  r2  r'  r  r  )r   r)  r   r  r   r  r  r   rY  s      r:   test_constructor3TestCSR.test_constructor3  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rg   r  r
  r  r   r
  r  r   rg   r
  rg   r   r
  r   r   r
  r
  rg   rg   rg   rg   r
        @g      $@r        "@r  r  g      &@r         @      @r  r  r2  r  r             r
  r   r  r
  r
  r
  r
  r   rg   rg   r   r   r
  r
  r   rg   )
r   r	   r)  r   r   r  r   rJ   uint64r  )r   r   r!  r  rr  rb  r  s          r:   test_constructor4TestCSR.test_constructor4  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
  rg   r  rm  )r   r)  r   r   r   r  r  r  rb  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 rs  )r)  r   r   r   rJ   rn   r?   signedintegerrv  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
  rg   r
  r   r   rg   r  r   rg   r  r  r  rD  r{  r  )r  r   r  r2  )r   r   rJ   rh   r)  r?   r9  r[   r   r  r  r   r   )r   r  r!  ptrrN   rT   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   rg   r  r  r  )r   rJ   rY   r[   rZ   r   rh   r)  r   r  r?   r  r   r   )r   r  larger!  r  rN   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)  rg   r
  r  r  r   r  r  rg   rW   rD  r
  rg   r)  r  r  )r   r   r)  rV  rv  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   rg   r   r  r   r
  rg   r  r  r  r  r)  r*  r   r  r*  r  rD  r  r'  )r   r)  rV  eliminate_zerosr   r  r  r   r  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 )Nr8  r  r  r=  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r<  rK  rL  rM  rN  rO  rP  rQ  rR  T)r)  rJ   r   r  r   r'  r  r~   r   r   r  r  r   r   r  r  r@  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  r  r  r  rD  r  r*  r
  r  r)  rg   r  r   rg   r  )r   r   r)  r   r   r  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
  rg   r  r  re   r  r)  
rJ   r   r   r[  r.  r  r  r(   r   r   r   rG  rs  r  r  rH  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
  rg   TFN)rJ   r   r)  rV  r   ru  rI   rA  rv  r   r  )r   sorted_indsunsorted_indsr  r  r  s         r:   test_has_sorted_indicesTestCSR.test_has_sorted_indices1  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                 	   [         R                  " S/5      [         R                  " S/5      [         R                  " SS/5      4n[         R                  " SS/5      [         R                  " SS/5      [         R                  " SS/5      4nU R                  U5      n[        SUR                  5        U R                  U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                  U5      R                  5       nSUl        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        S[        UR                  5      5        SUl        UR                  5         [        S[        UR                  5      5        [        SUR                  5        SUl        [        SUR                  5        U R                  UR                  UR                  UR                  45      n[        SUR                  5        UR                  5         [        SUR                  5        U R                  [         R                  " S/5      [         R                  " S/5      [         R                  " / SQ5      45      n[        UR                  S5        [        R                  " 5          [        R                   " S["        [$        5        SUS	'   USS
S
24==   S-  ss'   SUS'   S
S
S
5        [        SUR                  5        U R                  UR                  UR                  UR                  45      n[        SUR                  5        U R                  U5      nUu  Ul        Ul
        Ul        [        SUR                  5        [        S[        UR                  5      5        U R                  U5      nUR                    Uu  Ul        Ul
        Ul        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        S[        UR                  5      5        g
! , (       d  f       GN_= f)=Ensure has_canonical_format memoizes state for sum_duplicatesrg   r   r
  TF)r   r
  r
  r
  r  rR  r  Nr  r  rd  )rJ   r   r)  r   has_canonical_formatrV  rI   rA  sum_duplicatesr   r  r  r  r   rS  rT  rR  rS  r)   )r   info_no_dupsinfo_with_dupsr  Mchecks        r:   test_has_canonical_format!TestCSR.test_has_canonical_formatM  s    !rxx}bhh1v6FG((Aq6*BHHaV,<bhh1v>NO|,T1112~.335UA223!00$7777 	
T1112QAII' ~.335!%T1112QAII'	QAII'!&	QAII'T1112 "'UA223##QVVQYY$ABT6667	T1112 !rxx}bhh|>TUVQWWf%$$&##Hd4KLAdGadGqLGAdG	 '
 	T1112##QVVQYY$ABT6667 |,&4#	18UA223QAII' |,	&4#	18T1112QAII'	QAII'- '&s   /<S
S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 )Nrg   r  r   r
  rD  r
          re  )rJ   r   r[   r)  r   r  r?   rh   r   r  r  rG  rN   rT   rr  r  r2  r  r  r@   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                  / 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   rg   r
  )r)  r  rd  r   rN   rT   s      r:   test_binop_explicit_zeros!TestCSR.test_binop_explicit_zeros  sX     	{+	{+{{azz!}  A%%%r<   rc   N)r   r   r   r   rf  r  rJ   r  int_r  r  r5  rZ  r^  ra  rp  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r   rc   r<   r:   rP  rP    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58B(H0&r<   rP  c                   $    \ rS rSr\S 5       rSrg)TestCSRMatrixi  c                     [         R                  " 5          [         R                  " S[        [        5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = frR  )rS  rT  rR  rS  r)   r   rS  s      r:   r  TestCSRMatrix.spcreator  :    $$&##Hd4KLt.v. '&&rW  rc   Nr   r   r   r   rf  r  r   rc   r<   r:   r  r        / /r<   r  c                      [         [        R                     n [        U [        5      (       d   eU R
                  [         L d   eU R                  [        R                  4:X  d   eg r>   )r   rJ   r   rI   r   
__origin____args__r  s    r:   test_spmatrix_subscriptabler    sO     Ffl++++
***??rwwj(((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g)TestCSCi  c                     [         R                  " 5          [         R                  " S[        [        5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = frR  )rS  rT  rR  rS  r)   r    rS  s      r:   r  TestCSC.spcreator  rV  rW  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   rf  r   rg   r   r  r2  )r
  rg   r
  r  )r   rg   r
  rg   ro  r  ra  )r   r(  r   r  r   r  r  r   r  r   r   rY  s      r:   rZ  TestCSC.test_constructor1  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]  r2  r  rg   r  rg   )r   r   r   r   r   r
  r
  )r   r(  r   r  r   r  r  rY  s      r:   r^  TestCSC.test_constructor2  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   rg   r2  r{  )r   r(  r   r  r   r  r  rY  s      r:   ra  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 )Nrd  re  rf  r  r2  r  r  rl  rm  rn  rg   )r   r	   r(  r   r   r  r   r  )r   r   r!  r  rr  ra  s         r:   rp  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 Nrt  ru  r  )r  r  )r   r(  r   r   r   r  r  r  ra  s        r:   rw  TestCSC.test_constructor5  ry  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   rJ   rn   r?   r{  r  s        r:   r|  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 )Nr  r  r  rW   rg   rD  r  r'  )r   r(  rV  r  r   r  r  r   r  s         r:   r  TestCSC.test_eliminate_zeros  r  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  r  r  r  rD  r  )r   r   r(  rV  rv  r   r  r   )r   r  r   r  r  r  s         r:   r  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@r  T)r(  rJ   r   r  r   r'  r  r~   r   r   r  r  r   r  s       r:   r  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  r  r  r  rD  r  r  r  )r   r   r(  r   r   r  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_broadcast2  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 )
Nrg   r  r   )r  r
  rD  )r  r
  re  r  r  )	rJ   r   r[   r(  r)  r   r  r?   rh   r  s               r:   r  TestCSC.test_scalar_idx_dtype@  r  r<   rc   N)r   r   r   r   rf  r  rJ   r  r  r  r  r5  rZ  r^  ra  rp  rw  r|  r  r  r  r  r  r  r   rc   r<   r:   r  r    sr    . . 88RWWbjj"--@K'7/,<	99
J	K"r<   r  c                   $    \ rS rSr\S 5       rSrg)TestCSCMatrixi\  c                     [         R                  " 5          [         R                  " S[        [        5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = frR  )rS  rT  rR  rS  r)   r   rS  s      r:   r  TestCSCMatrix.spcreator]  r  rW  rc   Nr  rc   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g	)
rD  ig  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)rW   r2  rW   r  r8  r  r  )r+  rm  r   r   r   )r   rR   r  rp  s       r:   	test_multTestDOK.test_multk  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 )
NrY  r  r8  re  rW   r   r9  r   )r  r   r   r   r  s      r:   test_add_nonzeroTestDOK.test_add_nonzeros  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 NrY  r  r  r8  re  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  rg   rd  r  r  r  rY  r  r  r  r  )	r+  r   r   r   r  r   r   r   r  )r   r  rH  rN   ra  rT   rb  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  rf  r  r2  r{  r  r  )r?  r  r+  r   r   r?   r   r)  rJ   r  r   )r   rT   rR   r  r  r2  das          r:   	test_ctorTestDOK.test_ctor  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<   rc   N)r   r   r   r   r"   r  rJ   r  r  r  r5  r  r  r  r
  r  r  r   rc   r<   r:   rD  rD  g  s>    I77BJJ6K5
+;<>%*Br<   rD  )r5  r6  c                       \ rS rSr\rSrg)TestDOKMatrixi  rc   N)r   r   r   r   r   r  r   rc   r<   r:   r  r        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)TestLILi  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rW   rW   rW   r  y              4@r  r  ppc64le)
r   rJ   r  r,  platformmachiner   rm  r   r   r  s      r:   test_dotTestLIL.test_dot  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  rg   r  r  r   )r,  r   )r   r@   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   rg   r  r  r  r  )addsubmul__i__r  r  r  )皙?r-  r-  r   )	r,  r3  rV  r~   r   r   rJ   r?   r.  )r   rR   rS   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_datarS   rU  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  rW   r  r8  r  r9  )r*  r  r  )r  r*  r  )r*  r+  )r,  r  r   r   )r   rS   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'  rg   r  )r.  r   r  r,  r   r   r   )r   r  rR   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  rg   r  r  rZ  r  r  r  rY  r  r  r   r   r+  )r   r  r   )r,  r   rd  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,  rJ   ro  r  s     r:   test_lil_multiply_removal!TestLIL.test_lil_multiply_removal:  s0    rwwv/	R!Q$r<   rc   N)r   r   r   r   r$   r  rJ   r  r  r  r5  r  r!  r$  r/  r4  r7  r:  r?  rB  r   rc   r<   r:   r  r    sN    I77BJJ6KQ!?1(R
5/).r<   r  )r5  c                       \ rS rSr\rSrg)TestLILMatrixiA  rc   N)r   r   r   r   r   r  r   rc   r<   r:   rE  rE  A  r  r<   rE  c                       \ rS rS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)BaseTestCOOiI  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 )Nrd  re  rf  r  r2  r  r  rk  r
  r   r  )r   r'  r   r   r  r   rJ   ro  )r   r   r!  r  r  r  s         r:   rZ  BaseTestCOO.test_constructor1L  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
  rg   rg   rg   rg   r   r   rg   rg   )
r   rg   r   rg   r
  r
  r
  r   r   rg   )
rg   r+  r  r  r)  r   r  rg   r
  r  r  )r  r  r   r=  )r  r)  r   )r   r'  r   r   )r   r   r!  r  r  r   s         r:   r^  BaseTestCOO.test_constructor2Z  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:   ra  BaseTestCOO.test_constructor3e  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  r6  rl  rb  rD  )
r   r'  r   r   r9  r  rE  r   r  r@  )r   r   r  r  s       r:   rp  BaseTestCOO.test_constructor4o  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'  r?   rJ   r   )r   r  r  s      r:   "test_constructor_data_ij_dtypeNone.BaseTestCOO.test_constructor_data_ij_dtypeNone  sK    s  $!qc
!34 @yyBHHTN00000r<   FzCOO does not have a __getitem__runr  c                     g r>   rc   r   s    r:   r  BaseTestCOO.test_iterator      r<   c                     SS//nU R                  U5      R                  5       n[        UR                  5       U5        g rl   )r'  todiar   r   )r   r   r  s      r:   test_todia_all_zeros BaseTestCOO.test_todia_all_zeros  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
  rg   r   r  )r'  r  r   r   r   r!  r  rM  s     r:   test_sum_duplicatesBaseTestCOO.test_sum_duplicates  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 )Nrl  rm  rn  )r'  r#  r   r   )r   r  rD   s      r:   test_todok_duplicates!BaseTestCOO.test_todok_duplicates  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 )Nrl  rm  rn  rg   )r'  r  r   r  r  )r   r  rb  ra  s       r:   test_tocompressed_duplicates(BaseTestCOO.test_tocompressed_duplicates  s^      )i-C!DEiikSWWq[#''*iikSWWq[#''*r<   c                    U R                  S5      n[        UR                  S5        [        R                  " / SQ/5      n[        R                  " S/5      [        R                  " S/5      [        R                  " S/5      44n[        R                  " SS/5      [        R                  " SS/5      [        R                  " SS/5      44nU R                  U5      nUR                  SL d   eU R                  U5      nUR                  SL d   eUR                  5         UR                  SL d   eU R                  USS9nUR                  SL d   eU R                  USS9nUR                  SL d   eUR                  5         UR                  SL d   eU R                  U5      nUR                  SL d   e[        UR                  S5        UR                  5         UR                  SL d   e[        UR                  S5        SUl        [        UR                  S5        [        UR                  S5        UR                  5         [        UR                  S5        U R                  U5      nSUl        [        UR                  S5        [        UR                  S5        UR                  5         [        UR                  S5        g	)
r  r  Tr  rg   r   r
  Fr>  N)r'  r   r  rJ   r   r  r  )r   rR   A_arrayA_coords_formA_coords_dupss        r:   r  %BaseTestCOO.test_has_canonical_format  se    v&Q++T2((I;'1#1#!(FG1a&)BHHaV,<bhh1v>N+OPw'%%---}-%%...	%%---qt,%%---qu-%%...	%%---}-%%...QUUA	%%---QUUA "'Q++U3QUUA	Q++T2}-!%Q++T2QUUA	QUUA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 )Nr  )r   r   r   r
  r
  r
  r
  r
  r  r  rD  r   )	r   r'  rV  r  r   r  r>  r   r   )r   r  r   r!  r  r  s         r:   r   BaseTestCOO.test_eliminate_zeros  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 )Nr5  r6  r7  r:  Fr>  T)r'  r  r   r  rJ   rQ   )r   rq   	new_shaper@   rA   s        r:   test_reshape_copyBaseTestCOO.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*  )-   )rv  ru  r"  r3  r   r1  )r'  r   r  r  )r   mat1mat2s      r:   test_large_dimensions_reshape)BaseTestCOO.test_large_dimensions_reshape  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr<   rc   N)r   r   r   r   rJ   r  r  r  r5  rZ  r^  ra  rp  rU  rE  rg  xfailr  r^  ra  rd  rg  r  r  rr  ry  r   rc   r<   r:   rG  rG  I  s    77BJJ6K1	/9>,1
 [[5)JK L1
*9
++Z99	Mr<   rG  c                       \ rS rSr\rSrg)TestCOOi  rc   N)r   r   r   r   r#   r  r   rc   r<   r:   r}  r}    s	     Ir<   r}  )r.  r/  r0  r1  r2  c                       \ rS rSr\rSrg)TestCOOMatrixi  rc   N)r   r   r   r   r   r  r   rc   r<   r:   r  r    s	    
 Ir<   r  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#   rJ   r   ro  rw  rI   r   r  r  r  s    r:   test_sparray_subscriptabler    s    rwwc
*+Ffl++++	)))??rwwc
3333rwwFfl++++	)))??rwwj(((r<   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S	 rS
 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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
  rg   r   r  )r   rg   r  r   )r   r   r  r  r  r  r   r  r   r  rg   rb  rD  )r   rJ   repeatr   r*  r   )r   r  r  r"  s       r:   rZ  TestDIA.test_constructor1   sr    <! " xx$++A1+5((8$T''v'FNNPRSTr<   FzDIA does not have a __getitem__rW  c                     g r>   rc   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  rg   r  r  )	r*  rJ   r'   r   r"  r?   r[   rT  rh   r   r  s     r:   test_setdiag_dtypeTestDIA.test_setdiag_dtype-  s    rvvay)QYY__bhh/			$!	QYY__bhh/rvvay)QYY__bhh/			$!	QYY__bhh/r<   c                    S//n/ SQ/nUS/SSS/SS//S4US/SSS/SS//S4US/SSS/SS//S4US	/SSS/SS//S
4US/SSS/SS//S4US/SSS/SS//S4US/SSS/SS//S4US	/SSS/SS//S4S S SSS/SS//S4SS//S/SSS/SS//S4[         R                  " SS5      R                  S5      / SQSSS/SS//S4[         R                  " SS5      R                  S5      / SQSSS/SS//S4/$ )Nr
  r'  r  r   zshorter diagonal withinz+shorter diagonal above (but within if full)r  z$shorter diagonal, all elements abover  z$shorter diagonal, all elements belowz"longer diagonal within (only head)rg   z"longer diagonal within (only tail)z#longer diagonal, all elements abovez#longer diagonal, all elements belowzempty inputzexplicit zerosr*  )r)  r
  )r   r
  rg   r  r  rt  r  r  z)overfilled shorter-diagonal, out of orderrQ  )r)  r  r     z(overfilled longer-diagonal, out of order)rJ   r   r  )r   d1d3s      r:   	ill_casesTestDIA.ill_cases9  s   
 cU[bT11v1v.*,aS11v1v.>@aS11v1v.79bT11v1v.79bT11v1v.57aS11v1v.57aS11v1v.68bT11v1v.68tQ!Q!Q 0 a&A3QFQF#3!#1e$,,V4)aVaV$<> 1i(008)aVb!W%;=1> 	>r<   c                     U R                  5        H\  u  pp4nS HO  nUc  U R                  U5      nOU R                  X4US9nSU;   a  SnUR                  5       U:X  a  MG   SU-   5       e   M^     g )NrZ  rd  re  rD  r   case: )r  r*  _getnnz)r   r  ofsetsr  refcaser   rR   s           r:   test_getnnzTestDIA.test_getnnz^  sy    ,0NN,<(D#D1<**51A**D>*GA:Cyy{c):8d?:) 2 -=r<   zDIA stores extra zerosr  c                     g r>   rc   r   s    r:   r  TestDIA.test_getnnz_axisi  r[  r<   c                    U R                  5        H  u  pp4nS H  nUc  U R                  U5      nOU R                  X4US9nUR                  5       n[        R                  " U5      S US   2S US   24   n	[        R
                  " U	5      n
UR                  U
:X  d   e[        UR                  5       U	SU-   S9  M     M     g )Nr  rD  r   r
  r  rN  )	r  r*  r  rJ   r   r  r  r   r   )r   r  r  rL  rU  r  r   rR   rS   r  r  s              r:   
test_tocsrTestDIA.test_tocsrm  s     )-(8$D!1<**51A**D>*GAGGIhhqk)58)YeAhY"67&&s+uu|#|"199;X_M 2 )9r<   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  rD  )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
  rg   r  r  r   )
r*  r  rJ   ravel_multi_indexr   r!  r   r>  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  r  r  rb  rD  )rJ   r   r  r[   r   r%   r  r!  r?   r  r  r  )r   r  r"  r  r  rb  ra  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                 r   [        SS/5      nU[        S/S5      -   nU R                  U5      nU R                  U5      nX4-   n[        XPR                  5      (       d   e[        UR	                  5       X-   5        XC-   n[        XPR                  5      (       d   e[        UR	                  5       X!-   5        g )Nr
  rg   r  )r   r*  rI   r   r   r   rR   rS   rq  re  rg  s         r:   test_add_sparseTestDIA.test_add_sparse  s    !QLaS!  #  #i#1122223;;=!%0i#1122223;;=!%0r<   c                    [        SS/5      nU[        S/S5      -   nU R                  U5      nU R                  U5      nX4-
  n[        XPR                  5      (       d   e[        UR	                  5       X-
  5        XC-
  n[        XPR                  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
  rg   r  rb  )r   r*  rI   r   r   r  r  s         r:   test_sub_sparseTestDIA.test_sub_sparse  s    !QLaS!  #  #i#1122223;;=!%0i#112222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
  rg   r   r  r  r  r2  )r*  rI   r  r   r   rd  )r   r  resres2s       r:   r3  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 R                  U5      nU R                  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[        X`R                  5      (       d   e[        UR	                  5       U5        [        UR                  / SQ5        [        UR                  U R                  U5      R                  5        X!-  nXC-  n[        X`R                  5      (       d   e[        UR	                  5       U5        [        UR                  / SQ5        [        UR                  U R                  U5      R                  5        U R                  / SQ/ SQ/SS/4S5      nU R                  / 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  r2  r  r  r  r  r  r   r  )rt  r  r   r
  rg   )r  r  r  )r  r  rj  r
  rt  r  )rg  r  ri  )r  r  rh  rg   r  )      8@g     A@r  )rg        ,@      ;@)r  r  r  )r  rg  r  )r   r*  r  r   r   rI   r"  )r   rR   rS   rq  re  r"  rg  s          r:   test_matmul_diaTestDIA.test_matmul_dia  s    9 B888    #  #"$Q"$Q3;;=!,3;;=!,Ei#1122223;;=!,3;;
3388T%7%7%:%?%?@Ei#1122223;;=!,3;;(9:388T%7%7%:%?%?@   <">B!H&Q  <">Q!H&Qi3;;r1g7388n&4&6 	7 i3;;r1g7388m&4&6 	7r<   rc   N)r   r   r   r   r%   r  rJ   r  r  r  r5  rZ  rE  rg  r{  r  r   r  r  r  rF  r  r  r  r  r  r  r  r3  r  r   rc   r<   r:   r  r    s     I77BJJ6KU [[5)JK L Q	0  	0#>J	; [[56 7N :9-19&	>*7r<   r  )r.  r/  r0  r1  r2  r5  r6  c                       \ rS rSr\rSrg)TestDIAMatrixi  rc   N)r   r   r   r   r   r  r   rc   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S r\R0                  R3                  SSS9S 5       r\R0                  R3                  SSS9S 5       rS r\R0                  R3                  SSS9S 5       r\R0                  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   rg   rg   r  )r   rg   rg   r  )r  rg   r  r{  r  r   r  )r  r   rW   r
  )r   r  r*  )r2  r   r8  rg   )r   r  rW   )r  r   r  r  r  r6  r  r  r2  rD  )r   r   r   r&  r   r   )r   r  r  r  rR   rq  s         r:   rZ  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  rZ  r  )rW   r  )r  r)  r  )r  r  rZ  r  r  r  r6  r  r{  r  r  rD  r  r:  )rg   r2  )r  r2  rP  )r   r   r&  r   r   )r   r   rR   s      r:   r^  TestBSR.test_constructor2  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'  rm  r  r
  r   rg   r  rZ  r  )r   r   r&  r   )r   argrR   s      r:   ra  TestBSR.test_constructor30  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  rV  )rJ   ro  r   r   r[   r   r&  )r   rH  r  r  r  s        r:   rp  TestBSR.test_constructor46  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   r1  r  r  )rJ   ro  r   r   r?  r@  r&  )r   rH  	data_1dimr  r  r  s         r:   rw  TestBSR.test_constructor5?  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   rg   r  r  r  )rJ   r   r[   r&  r?   )r   rH   r  r  rT   s        r:   test_default_dtypeTestBSR.test_default_dtypeS  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  rR   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 )
Nr  r
  r  rg   r  r  )r  r8  rD  r2  )
r   rm  r  r   r&  rV  r  r   r  r   r  s         r:   r  TestBSR.test_eliminate_zerosr  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   )r2  r2  r  r  g?B   )r  rg   r  r  r'  )rJ   r   r[  r&  r  r  r   r  r   r   r   r   r  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                    [         R                  " / SQ/ SQ/ SQ/5      nU R                  U5      n[        SUR                  5        [         R                  " SS/5      n[         R                  " XS-  /5      n[         R                  " SS/5      nU R                  XCU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                  XCU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        SUl        UR                  5         [        S[        UR                  5      5        [        SUR                  5        U R                  U5      nSUl        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        SUR                  5        U R                  U5      nXCUsUl        Ul
        Ul        [        SUR                  5        [        S[        UR                  5      5        U R                  U5      nUR                    XCUsUl        Ul
        Ul        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        S[        UR                  5      5        g	)
r  )rg   r  rg   )r   rg   r
  )r  r   rg   Tr   rg   Fr
  N)rJ   r   r&  r   r  rV  rI   rA  r  r   r  r  r  )r   rR   r  r  r  r  s         r:   r  !TestBSR.test_has_canonical_format  s    HHiJ78q!T1112((Aq6"xxaC!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'!&	QAII'T1112 q!!&UA223QAII'	T1112 q!&*V#	18UA223QAII' q!	&*V#	18T1112QAII'	QAII'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   r5  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  r5  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__rW  c                     g r>   rc   r   s    r:   r  TestBSR.test_iterator  r[  r<   zBSR does not have a __setitem__c                     g r>   rc   r   s    r:   rh  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 )NrV  rW  rX  r  r  rY  r
  r   rg   r  rZ  r=  r  r6  r  )	rJ   r   r  r   r[  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>   rc   r   s    r:   r_  "TestBSR.test_setdiag_comprehensive  r[  r<   zexceeds memory limitr  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)
Nrg   r  r   rm  r  rD  r  )r   r
  r  )r   r
  r  )
rJ   r   r[   r&  r   r  r?   rh   MemoryErrorr@  )r   r  r  rG  rN   rT   r  r2  vals2vals3r  r  r@   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rc   N)"r   r   r   r   r&   r  rJ   r  r  r  r5  rZ  r^  ra  rp  rw  r  r  r  r  r  r  r  rE  rg  r{  r  rh  r  r_  skipifIS_COLABr  r   rc   r<   r:   r  r    s    I77BJJ6K'.K0MRJ(1=.	9<.7(r-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar<   r  )r.  r/  r0  r1  r2  r6  c                       \ rS rSr\rSrg)TestBSRMatrixi  rc   N)r   r   r   r   r   r  r   rc   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   rg   r  r
  c              3   *   #    U  H	  oS    v   M     g7frn  rc   ).0ps     r:   	<genexpr>&_same_sum_duplicate.<locals>.<genexpr>;  s     ,)QaD)s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)rg   N)r  )r   r  s     r:   r  r  A  s     7$w""$s   )
poprJ   rn   r?   r  unsignedintegerrn  r  rm   ro  )r  indsrB   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$ )_NonCanonicalMixiniI  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(       an  US   R                  S-  n	[
        R                  " 5          [
        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   rg   rR  r
  Nr   gh㈵>gHz>)rtol)superr  r   rn  rm   rS  rT  rR  rS  r)   _insert_explicit_zero_arg1_for_noncanonicalr   r?   rJ   r  r  r   r   r  r  )r   r  r  rT  rB   	constructr  zero_pos	has_zerosr  arg1NCr  r  s                r:   r  _NonCanonicalMixin.spcreatorJ  sP    G%	a)$)&)IIK1$--/a[%%)	  !#A((*''$8OP..q1+a.(1+a.Q + **1=& ggF7Ot&v& 88

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

aiik= RWW\&&() 	3 +*s   9?E88
Fz"bool(matrix) counts explicit zerosr  c                     g r>   rc   r   s    r:   rH  _NonCanonicalMixin.test_boolo  r[  r<   z!getnnz-axis counts explicit zerosc                     g r>   rc   r   s    r:   r  #_NonCanonicalMixin.test_getnnz_axiss  r[  r<   znnz counts explicit zerosc                     g r>   rc   r   s    r:   r  _NonCanonicalMixin.test_emptyw  r[  r<   rc   )r   r   r   r   r  rE  rg  rF  rH  r  r  r   __classcell__)r  s   @r:   r  r  I  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)_NonCanonicalCompressedMixini|  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  rV  )r   r  r  r  r  r  startstops           r:   r  3_NonCanonicalCompressedMixin._arg1_for_noncanonical}  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$ rl   rc   r   r  r  rI  s       r:   r  2_NonCanonicalCompressedMixin._insert_explicit_zero  s    A#r<   rc   N)F)r   r   r   r   r  r  r   rc   r<   r:   r$  r$  |  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   rK  r   r?  r\  r  r  )
r?   r  r  rR   r  r  r  rI  rr  r   s
            r:   rB  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   rB  r?   r  s   `   r:   r  $_NonCanonicalCSMixin.test_getelement  s1    	J  &E"/bhhuo~6 #0 &r<   c                    [         R                  " S5      nU R                  U5      nU R                  / SQ/5      nUR                  5       USS S 24'   [        R
                  " 5          [        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'   [        R
                  " 5          [        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
  rR  rg   )rJ   r'   r  r   rS  rT  rR  rS  r)   r   rb  rm  )r   r  rR   rS   s       r:   test_setitem_sparse(_NonCanonicalCSMixin.test_setitem_sparse  s    FF1INN1NNG9%!A#$$&##Hd4KLacF ' 	199;*""$!A#$$&##Hd4KLSSAacF ' 	199;* '& '&s   ()E-4E
E
E#Fz(inverse broken with non-canonical matrixrW  c                     g r>   rc   r   s    r:   r  _NonCanonicalCSMixin.test_inv  r[  r<   z&solve broken with non-canonical matrixc                     g r>   rc   r   s    r:   r  _NonCanonicalCSMixin.test_solve  r[  r<   rc   N)r   r   r   r   r  r4  rE  rg  r{  r  r  r   rc   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  rc   Nr   r   r   r   r   rc   r<   r:   r;  r;        r<   r;  c                       \ rS rSrSrg)TestCSRNonCanonicalMatrixi  rc   Nr<  rc   r<   r:   r?  r?    r=  r<   r?  c                       \ rS rSrSrg)TestCSCNonCanonicali  rc   Nr<  rc   r<   r:   rA  rA    r=  r<   rA  c                       \ rS rSrSrg)TestCSCNonCanonicalMatrixi  rc   Nr<  rc   r<   r:   rC  rC    r=  r<   rC  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  rI  r@   s        r:   r  )TestBSRNonCanonical._insert_explicit_zero  s-    GGIA#www--r<   Fz&diagonal broken with non-canonical BSRrW  c                     g r>   rc   r   s    r:   r$  !TestBSRNonCanonical.test_diagonal  r[  r<   z"expm broken with non-canonical BSRc                     g r>   rc   r   s    r:   r  TestBSRNonCanonical.test_expm  r[  r<   rc   N)r   r   r   r   r  rE  rg  r{  r$  r  r   rc   r<   r:   rE  rE    s[    .
 [[5)QR S [[5)MN Or<   rE  c                       \ rS rSrSrg)TestBSRNonCanonicalMatrixi  rc   Nr<  rc   r<   r:   rM  rM    r=  r<   rM  c                   *    \ rS rSrSS jrS rS rSrg)COONonCanonicalMixini  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  +COONonCanonicalMixin._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$ rl   )rJ   r_r  r?   r  r   r!  r+  s       r:   r  *COONonCanonicalMixin._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  rg   r
  r  r   )	r  rJ   r'   r  rT  r   r>  r  r!  r  s     r:   test_setdiag_noncanonical.COONonCanonicalMixin.test_setdiag_noncanonical  sf    NN266!9%				1a&A		rwwquu~*+,r<   rc   r>   )r   r   r   r   r  r  rV  r   rc   r<   r:   rO  rO    s     
-r<   rO  c                       \ rS rSrSrg)TestCOONonCanonicali  rc   Nr<  rc   r<   r:   rY  rY    r=  r<   rY  c                       \ rS rSrSrg)TestCOONonCanonicalMatrixi  rc   Nr<  rc   r<   r:   r[  r[    r=  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   rg   r  r)  r6  r  r=  rb  r  r  zcannot be broadcastr  )r
  rg   r   rc  r  rD  r{  rY  )rJ   r   r   r    r   r!   _broadcast_tor   r   broadcast_torE  r   r@  )rN   rT   r  r2  r  r  	containerres_ares_bres_cres_dres_eres_fs                r:   test_broadcast_torf    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  sysrS  rE  r   r?  numpyrJ   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   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.   r/   r0   r1   scipy.sparse.linalgr2   r3   r4   r   r  r;   rC   	frozensetra  rS  rU   r   r   r   r   r   r  r0  rj  r  rg  thread_unsafer  r  r  r9  contextmanagerrw  ry  r  r  r  r  r  r*  r:  r<  rP  r;  r  r  r  r  rD  r  r  rE  rG  r}  r  r  r  r  r  r  r  r  r$  r.  r;  r?  rA  rC  rE  rM  rO  rY  r[  rf  rc   r<   r:   <module>rt     s        
   *       ,   C C C C C C
 (F F / /ckk)/
'
 %eW- (( JN?DWt$ $6"$ "$H 4 D^ 7 ^ 7BA| |~a+ a+H "56% % 7%0@ @F
OK OKd\0 \0~ B Bk$ k$\%C %CP_K _KD`0 `0FL5 L5^
2 2:8 AE8<JN,0%'X), ),Xc& 1 3 c&L	    /L' /)    P 1 3 Pf    /L' /    _Buu= _BDL'         mu- m`L'         qM qMfkt(,T/3$HL%U.3E5:P        	)U7ueE/45',u> U7pL'         _u(-e/45).0 _D	L'         .B0 0f#5  -7 -`	. 		 3] 		. 		 3] 	6 	 3] 	-- -(	. 		 4m 	?r<   