
    CpjLx                    v   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<J=r=  SS	K>J?r?  SS
K@JArAJBrBJCrCJDrDJErE  SSKFJGrGJHrHJIrI  S\R                  ;   rKS~S jrLS rM\N" S/5      rOSrPS rQ  SS jrRS 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 " S! S"5      rZ\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       rb " S. S/5      rc " S0 S15      rd " S2 S35      re " S4 S55      rf " S6 S75      rg " S8 S95      rhSS; jri    SS< jrj " S= S>5      rk " S? S@\k\j" 5       5      rl\lR                  5          " SA SB\W\l5      rnSC ro\nR                  5          " SD SE\k\j" 5       5      rp\pR                  5          " SF SG\W\p5      rq\qR                  5          " SH SI\j" SSSJ95      rr " SK SL\W\r5      rs\rR                  5         \sR                  5          " SM SN\j" SSO95      rt " SP SQ\W\t5      ru\tR                  5         \uR                  5          " SR SS5      rv " ST SU\v\j" S:S:S:S:S:SV95      rw " SW SX\W\v\j" SSSSSSV95      rx\wR                  5         \xR                  5         SY ry " SZ S[\j" SSSSSSSS\95      rz " S] S^\W\z5      r{\zR                  5         \{R                  5          " S_ S`\j" SSSSSSSa95      r| " Sb Sc\W\|5      r}\|R                  5         \}R                  5         Sd r~ " Se Sf5      r " Sg Sh\5      r " Si Sj\5      r " Sk Sl\\l5      r " Sm Sn\\n5      r " So Sp\\p5      r " Sq Sr\\q5      r " Ss St\\|5      r " Su Sv\\}5      r " Sw Sx\5      r " Sy Sz\\w5      r " S{ S|\\x5      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matrix_transpose)_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
collectionr7   messages       X/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_base.py	assert_inr<   5   s%    _cVJnZN*SGF g.    c                 `    [        U R                  UR                  :H  5        [        X40 UD6  g N)r   dtyper   )xykwargss      r;   assert_array_equal_dtyperD   :   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)rA   arraysas      r;   _underlying_arrays3sparse_may_share_memory.<locals>._underlying_arraysF   sM     ""$A!RZZ"**455a  % r=   TF)rK   may_share_memory)ABrP   rO   bs        r;   sparse_may_share_memoryrV   C   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?   )r0   r   rK   iinfomaxint32r   intc)rN   maxvalcheck_contentstps       r;   new_get_index_dtype4with_64bit_maxval_limit.<locals>.new_get_index_dtypef   s[     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir=   c                    > T$ r?    )rN   r^   r_   fixed_dtypes      r;   ra   rb   l   s	    r=     c                 h   > [         R                  [         R                  4TR                  S5         $ )N   )rK   r\   int64integers)rN   r^   r_   rngs      r;   ra   rb   p   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   )
rK   r\   ri   r   r@   size
issubdtypeintegerr[   min)rN   r^   r_   r@   arrminvalmaxval_limits         r;   ra   rb   s   s    HHE!L(HHEjjo99rxx'%88q=$]]399bjjAA%(WWYF%(WWYF%,66\;Q (HHE  Lr=   c                    > U R                  5       T:  a  [        S5      eU R                  [        R                  5      $ )Nzdowncast limited)r[   AssertionErrorastyperK   intp)rr   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)Nr0   downcast_intp_index)rM   getattrsetattr)rO   kwmodnameoldfuncbackupry   funcmodulesrz   ra   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   ry   rz   ra   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=   )rd   NF)rK   ri   randomdefault_rng)	rt   r   re   ry   assert_32bitr   rz   ra   rk   s	   ` ``  @@@r;   with_64bit_maxval_limitr   W   s     xx| xx-	
 
	 	 		ii##D)	9 	9	* "	'
@ r=   c                     [        U [        R                  5      (       d  [        U 5      (       a  U $ U R	                  5       $ r?   )rJ   rK   r
   r/   toarray)rO   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 rightrd   selfmats     r;   __add__BinopTester.__add__       $r=   c                     gr   rd   r   s     r;   __mul__BinopTester.__mul__   r   r=   c                     gr   rd   r   s     r;   __sub__BinopTester.__sub__   r   r=   c                     gNmatrix on the leftrd   r   s     r;   __radd__BinopTester.__radd__       #r=   c                     gr   rd   r   s     r;   __rmul__BinopTester.__rmul__   r   r=   c                     gr   rd   r   s     r;   __rsub__BinopTester.__rsub__   r   r=   c                     gr   rd   r   s     r;   
__matmul__BinopTester.__matmul__   r   r=   c                     gr   rd   r   s     r;   __rmatmul__BinopTester.__rmatmul__   r   r=   rd   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__rd   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   rd   r   s     r;   r   BinopTester_with_shape.__add__   r   r=   c                     gr   rd   r   s     r;   r   BinopTester_with_shape.__mul__   r   r=   c                     gr   rd   r   s     r;   r   BinopTester_with_shape.__sub__   r   r=   c                     gr   rd   r   s     r;   r   BinopTester_with_shape.__radd__   r   r=   c                     gr   rd   r   s     r;   r   BinopTester_with_shape.__rmul__   r   r=   c                     gr   rd   r   s     r;   r   BinopTester_with_shape.__rsub__   r   r=   c                     gr   rd   r   s     r;   r   !BinopTester_with_shape.__matmul__   r   r=   c                     gr   rd   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   rd   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eqrd   r   others     r;   __eq__ComparisonTester.__eq__       r=   c                     g)Nnerd   r   s     r;   __ne__ComparisonTester.__ne__   r   r=   c                     g)Nltrd   r   s     r;   __lt__ComparisonTester.__lt__   r   r=   c                     g)Nlerd   r   s     r;   __le__ComparisonTester.__le__  r   r=   c                     g)Ngtrd   r   s     r;   __gt__ComparisonTester.__gt__  r   r=   c                     g)Ngerd   r   s     r;   __ge__ComparisonTester.__ge__  r   r=   rd   N)r   r   r   r   r   r   r   r   r  r  r   rd   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@   rh      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper@   rK   formatrw   r   r   rS   rT   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=   rd   N)r   r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr1   asdenser  r  r$  r   rd   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 rg\2Rf                  R                  SP5      SQ 5       riSR rjSS rkST rlSU rmSV rnSW roSX rpSY rqSZ rrS[ rsS\ rtS] ruS^ rvS_ rwS`rxga)b_TestCommoni2  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   rh   )r  r   r  r   )r   rh   r   r   d)r   r  r  r  setr.   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesrw   r   rK   r  r   rJ   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   )r9  assert_raises
ValueErrorboolr   r  )r@   r  r   s     r;   check$_TestCommon.test_bool.<locals>.checkX  sL    %%e,E*dE2DNNQC5)*u--.r=   z%Cannot create a rank <= 2 DOK matrix.)rJ   TestDOKpytestskipr7  r   rC  r@   s   `  r;   	test_bool_TestCommon.test_boolW  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 )NTFrX   )r   r  ranger   r   )r   r  r  _s       r;   test_bool_rollover_TestCommon.test_bool_rolloverd  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   r8  r9  copyr  r'  r*  r)  r-  rD   r   rK   nan)
r@   r  r  dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r;   rC  "_TestCommon.test_eq.<locals>.checkq  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!  rF  rG  r7  rH  s   `  r;   test_eq_TestCommon.test_eqo  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rR  )rT  rU  rV  r)   r   r8  r9  rW  r  r'  r)  r*  r-  rD   r   rK   rX  )
r@   r  r  rY  rZ  r[  r]  r\  r^  r   s
            r;   rC  "_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`  rd  re  rH  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`  rd  FT)r  r!  rF  rG  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NrS  r         ?      ?)rh   r  r   r  invalidrT  rU  rV  r)   r   r8  r9  rW  r  rw   complexr'  r)  r*  r-  rD   r   rK   ri   errstaterX  r@   r  r  rY  rZ  
datcomplexdatspcomplexr[  r]  r\  r^  valr   s               r;   rC  "_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`  rd  re  rH  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rs  rx  r{  s               r;   rC  "_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`  rd  re  rH  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NrS  r   rt  )rh   r  r  ru  rT  rU  rV  r)   r   r8  r9  rW  r  rw   ry  r'  r)  r*  r-  rD   r   rK   ri   r{  s               r;   rC  "_TestCommon.test_le.<locals>.check9     ((*%%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`  rd  re  rH  s   `  r;   test_le_TestCommon.test_le8  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  r{  s               r;   rC  "_TestCommon.test_ge.<locals>.checkq  r  r  r`  rd  re  rH  s   `  r;   test_ge_TestCommon.test_gep  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:w  a4  [        U R                  S5      R                  SS9[        / SQ5      5        g g )Nr  r  r   dia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:g  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  ru  r  znot implemented .* formatmatchr   )	r  r!  rn  rK   r  r   r   r@  NotImplementedError)r   axis_supportaxesrS   axexpecteds         r;   test_count_nonzero_TestCommon.test_count_nonzero  s    zz((E1'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@  rA  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   ru  r  (1 diagonals) ra  (blocksize=1x1)  r   r2   < sparse  of dtype ''
	with  stored elements 
and shape >)r  r!  r-   r:  r@   r  r   reprr   r  extrarM  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  )maxprintrX   )r  r  iF   )r   r@   rW  r  z'positional argument|unpack non-iterabler  )r  rK   r   r  r  r   strsplitr!  r  rF  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  rh   r  r  ra  r  r  r   r2   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r  r  r!  r-   r:  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  rh   )rK   r@   r  tocsctocsrtocoor   r   )
r   r   mytyperO   rU   cr3  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  r3  )r   r   absr  r   r   rS   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r3  )decimals)ndigits)r   r   rK   aroundroundr  r   )r   decimalrS   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  ru  r  r   r  rh   r  r  r3  rh   )r   r   rK   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  r3  )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   DrS   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   rh   r  r   rh   r  r   r   r  )r   r   rh   r   r  r   r  r  rh   r  r  krX   i)(   i?  r  r   r   )r  r   r   r  )rM   r   r   r   r  rL  r   diagonalr   rK   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  rh   r  r  r  r  )      	   ru  r  )offsetr  )rK   r   r  rL  r   trace)r   rS   rT   r  s       r;   
test_trace_TestCommon.test_traceO  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  r0  orderr   rX   r   r   r   r   r   r   r         r  rh   r  )r   rX   r   r   r   r   )r   r   r   r6  r7  r  rh   r  )r  r  r  rh   r  r  )
not_an_argr  r  TrW  zhas no setter|n't set attributer  )r  r   r  r   r@  rA  r  r   r   r:  AttributeErrorrn   )r   rA   r2  srB   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  )rK   r   rq   r   r   r   r   rn  )rO   vr  nr  jdense_setdiags         r;   rH  =_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  rh   r7  r   r  r6  rn   rS  z	{msg} {r}err_msg)r   rK   r   r   choicerL  randintrT  rU  filterwarningsWMSGr)   setdiagr   r   r   rq   r   )rO   rU   r  rrE  r3  rF  rH  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	rf   )r  r  r   r  r  r  r  r  r  r  r  rK  )rK   r   seedr   r  r   r   r  rN  rq   r   )r   rT  shapesr@   r  rF  ksr  rO   rU   k2rH  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  rh   r  rS  r  r  r  )r  r  r   )r   rh   rh   r  ru  r  r   r  )r)  rh   r   rh   r)  rh   r   r   r   r   r  r   )r   r   r   r  )r  rK   r'   rT  rU  rP  rQ  r)   r@  rA  rR  r   r  r   r   )r   r  m2rI   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   rS   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 ri  )r   r  r   rK   rl  rm  r   rn  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 )
Nrf   r   r  rh   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  rS  overr  r   r  ru  r  r   r  )
r/  r  rK   rz  r   sumr   r@   r   isscalar)r@   rG  r  r  matricesr   s       r;   rC  #_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 )rK   r   rY  r   randr   r   r   r7  rL  r   )
r   dat_1dat_2dat_3dat_4dat_5rC  r@   rG  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  ry  rz  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)	rK   r   r   r  r@  rA  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 )Nry  rz  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;   rC  )_TestCommon.test_sum_dtype.<locals>.check-  s=    ggEg*G			.I%g9	8r=   r   r  r7  r   rC  r@   r  r  s      @@r;   test_sum_dtype_TestCommon.test_sum_dtype'  sH    Y! " s#	9 ((E%L )r=   c                 ^   [        SS/SS//5      nU R                   GH  nUR                  U5      nU R                  U5      n[        R
                  " 5          [        R                  " S[        S9  U R                  (       d  [        R                  " U5      nS S S 5        U R                   GH-  n [        R                  " SS9   UR                  US	9nS S S 5        [        R                  " SS
9   UR                  US	9nUR                  US	9n[        X5        [        UR                   UR                   5        UR                  SUS9nUR                  SUS9n[        X5        [        UR                   UR                   5        UR                  SUS9nUR                  SUS9n[        X5        [        UR                   UR                   5        S S S 5        GM0     GM     g ! , (       d  f       GNS= f! , (       d  f       GN(= f! [         a     GMj  f = f! , (       d  f       GM~  = f)N333333?ffffff?皙??rS  )categoryraise)allr  r  r   r  r@   r  )r   r7  rw   r  rT  rU  rP  PendingDeprecationWarningr:  rK   r2   rz  r  	Exceptionr   r   r@   )	r   base_datinput_dtyper  r  output_dtyperM  r  r  s	            r;   test_sum_dtype_pair_of_dtypes)_TestCommon.test_sum_dtype_pair_of_dtypes7  s    3**& '  ..K//+.CNN3'E((*'';TU))))C.C +
 !% 3 31GG,G7 2 [[h/!ggLg9G %			 =I#I7 '--@ "gg1LgAG %		q	 EI#I7 '--@ "gg1LgAG %		q	 EI#I7 '--@! 0/ !4 / +* 21  
 0/sJ   AG&3H
G8H
3C H&
G5	8
HH
H


HH
H,c                 r   U R                  SS/SS//5      n[        U R                  (       a  SS/OSS//5      n[        U R                  (       a  SS/OS/S//5      n[        UR	                  [
        S9S5        [        UR	                  S[
        S9U5        [        UR	                  S[
        S9U5        g )	Nr  r  r  r  r   r  r  r  )r  r   r:  r   r  int)r   r  correct_rest_correct_ress       r;    test_sum_dtype_fractional_to_int,_TestCommon.test_sum_dtype_fractional_to_intc  s     c
* & ' d&8&8QF1vhG(:(:q!f!qc
KUYYSY)1-UYYASY1;?UYYASY1=Ar=   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)Nry  rz  r{  r   r  keepdimsr  r  r  r  r  r  r  r  r  zoutput parameterr  )
r:  r   r  r2   r  r   rK   r   r@  rA  r   keepr  r  dat_out	datsp_outs         r;   test_sum_out_TestCommon.test_sum_outp  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 Nry  rz  r{  )r   r  rK   r  r   r   r@   )r   r  r  r  r  s        r;   test_numpy_sum_TestCommon.test_numpy_sum  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 Nry  rz  r{  r   r  r  )
r   r  r/   r  r:  r
   rK   r2   rJ   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 )Nry  )r  r  r  )r  r'  r)  r  r  r  r  r   r  ru  r  r  )	r   r  r   r  r   r@   r   rK   r  )r@   r  r  r  r   s      r;   rC  $_TestCommon.test_mean.<locals>.check  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=   )r:  r7  )r   rC  r@   r  s   `  @r;   	test_mean_TestCommon.test_mean  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/  rK   r   r   r  r@  rA  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 )Nry  rz  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;   rC  *_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)Nry  rz  r{  r   r  r  r  r  r  r  r  z"output parameter.*wrong.*dimensionr  )
r:  r   r  r2   r  r   rK   r   r@  rA  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  rK   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  rS  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr  r   linalgr4   rT  rU  rP  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  rS  r  r  r  r  r  r  )r   rT  rU  rP  r)   r  r5   r   r   r   rK   r'   r@  r  )r@   r  r  sMinvr   s       r;   rC  #_TestCommon.test_inv.<locals>.check8  s    y)Z8%@A((*''D+
 ''2+	 ''<+
 ^^AU%^@B% +& &eiim&;&;&=rvvayI)S!,) +*s   A1C88
D)r  rH  s   `  r;   test_inv_TestCommon.test_inv7  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
NrS  r  r  )r   r  r   r  )r  r   r   )r         @r   r  r  )	rT  rU  rV  r   r   r   r  r   rw   r  s     r;   test_from_array_TestCommon.test_from_arrayR  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  )	rT  rU  rV  r   r/  r   r  todenserw   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  )	rT  rU  rV  r   r   r  r   r   rw   r  s     r;   test_from_list_TestCommon.test_from_listn  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  )
rT  rU  rV  r   r   r*  r   r  r   rw   r   r
  Ss      r;   test_from_sparse_TestCommon.test_from_sparse|  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#  r1  r/  r  r  r  r  r  r  r  r        @)r  r
  rJ   r:  rK   r
   r2   r   r  r   flagsc_contiguousf_contiguousr   r   r@   rR   r/  r   rn  r  rB  rw   )
r   chkr  rO   dense_dot_denserC  rU   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#  r1  r/  r  r  r  .r  r  )r   r  r  r   r   r   r  r  r  rK   r   r   r@   r   r   r  rB  rw   )r   r  r  r  rO   r  rC  rU   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)NrS  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   )	attributerO   rU   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=   rc  rb  ra  )indicesindptrdatacoo)rowcolr4  r  )offsetsr4  )rT  rU  rV  r   r   r  r.   rw   r   r@   r   r!  r   )
r   r
  r  rA   D_castedrW  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)NrS  r(  r)  r  r4  Fr1  )rT  rU  rV  r   r   r  hasattrr4  r  	writeabler!  r3  r2  r.   rw   r   r@   )r   r
  r  rA   r9  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 Nrh   L1@r8  r9  r   r   r@   r  r  r   s      r;   rC  *_TestCommon.test_mul_scalar.<locals>.check  sW    //%(C%%e,Es1uuQw&7&7&9:s4x%*)=)=)?@r=   r6  rH  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 rC  rE  rF  s      r;   rC  +_TestCommon.test_rmul_scalar.<locals>.check*  sW    //%(C%%e,Equqw&7&7&9:tCx$u*)=)=)?@r=   rH  rH  s   `  r;   test_rmul_scalar_TestCommon.test_rmul_scalar)  rK  r=   c                     U R                   [        R                     n[        [        5         S U-    S S S 5        g ! , (       d  f       g = fr?   )r9  rK   r  r@  r  )r   r  s     r;   test_rmul_scalar_type_error'_TestCommon.test_rmul_scalar_type_error5  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  rb  r   )r8  r9  rW  r   r   r  r@   r  r  rO   rU   r  r   s         r;   rC  #_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=   rH  rH  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  rb  )r8  r9  rW  r   r   rV  s         r;   rC  $_TestCommon.test_radd.<locals>.checkQ  sS    //%(C%%e,E
AAcFAAqaiik/2r=   rH  rH  s   `  r;   	test_radd_TestCommon.test_raddP  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  r3  )r8  r9  r   r   rK   r   r  r   r@   r  r  rS   r   s       r;   rC  #_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=   rB  r6  rK   r@   rH  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 )Nr4  r   ra  rb  rc  r3  r  )r8  r9  r   r   r  rd  s       r;   rC  $_TestCommon.test_rsub.<locals>.checkw  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=   rB  rf  rH  s   `  r;   	test_rsub_TestCommon.test_rsubv  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  )r8  r9  r   r   r  rL  r   )r@   r  r  r  sumSsumDr   s         r;   rC  $_TestCommon.test_add0.<locals>.check  s    //%(C%%e,E 	224c:5A;7;aE	;78Dq!5AC56D5 85s   B(8B-rH  rH  s   `  r;   	test_add0_TestCommon.test_add0  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)  )rh   r  r  )r   r'  r   )r   r  r   )rb  r  ra  rc  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r)  )r   r  r!  multiplyr   r   )
r   rS   rT   ro  Bspout_fmtr#  r
  CspDsps
             r;   test_elementwise_multiply%_TestCommon.test_elementwise_multiply  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)  r  r  rh   r  )r(  r  r  )r  r  rh   )r  r  r  r%  r;  r   r   N)r   rK   onesrn  r  r   rA  r@  rz  r   r  r(   )r   rS   rT   r#  r
  Er/  GHJKLr{  r~  EspFspHspHsppJspJsppKspr  
spmatricesr  rG  
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  ra  rb  rc  r3  r        ?r  g      ?r   rv  rw  rx  ry  r%  )r  rh   r  ry  )r   ru  r  rS  )divide)r  rw  )
rK   rX  r   r   r  r  r   r   r   rz  )r   r  denomrS   rT   ro  r{  s          r;   test_elementwise_divide#_TestCommon.test_elementwise_divide  s   rvvbffQ'rvva'VVAbffRVV,. 	74::

#:;XF	*Z@sKrvvbffS)s266*VVD*, 	74::#56A $^45$^45nnQnnQGCI.4 78$%78$%nnQnnQ[[)wsy1159 * Aa5!A- Aa5!A- nnQnnQ[[(;rxx	(:;QUC <; *) <;s   9J+4.J<+
J9<
K
c                    [        / SQ/ SQ/ SQ/ SQ/5      nU R                  U5      nU R                  (       a  S HE  nX#-  nX-  n[        UR	                  5       U5        [        UR                  UR                  5        MG     [        [        UR                  S5        [        [        UR                  S5        U R                  US S2S S 24   5      n[        US	-  R	                  5       UR	                  5       5        g S
 H`  nX#-  n[        R                  R                  X5      n[        UR	                  5       U5        [        UR                  UR                  5        Mb     S H  n[        [        UR                  U5        M      U R                  US S2S S 24   5      n[        [        UR                  S	5        g )Nr  r   rh   r   )r   r  r  r   )r   r  r   r   )r   r  r'  r(  )r  rh   皙@r  r  r   r  r  r  r   r  rh   r  )r  r  r  )r   r  r:  r   r   r   r@   r@  r  __pow__rA  rK   r  matrix_powerr  )r   rS   rT   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   rh   r   r  rh   r  r   r  )r  r   r   r   r   )r   r  r6  s      r;   test_rmatvec_TestCommon.test_rmatvec4  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  rh   r  r%  r  r  r  r   r  r   )r  r   r(   r   r   r   rK   r  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  rh   r  r  r%  r  r  )rK   r   r  r:  r   r  r   r   )r   rS   ro  s      r;   -test_star_vs_at_sign_for_sparray_and_spmatrix9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrixF  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  rh   r  r   r   )r  r   r   r   rS   rT   s      r;   test_binop_custom_type"_TestCommon.test_binop_custom_typeS  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  rh   r  r  r   r   )r  r   r   r  s      r;   !test_binop_custom_type_with_shape-_TestCommon.test_binop_custom_type_with_shaped  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>.Customir  c                     Xl         g r?   scalar)r   r  s     r;   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__s  s    $r=   c                     XR                   -  $ r?   r  r   s     r;   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__v  s    {{**r=   r  N)r   r   r   r   r   r   r   rd   r=   r;   Customr  r  s    %+r=   r  rh   r  r  )r  rD   r   r   r!  )r   r  r  rS   r  A_scalarA_cs          r;   test_mul_custom_type _TestCommon.test_mul_custom_typeq  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  rh   r  r   r   r   r   r   r  )r  r   r   r  s      r;   test_comparisons_custom_type(_TestCommon.test_comparisons_custom_type  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  rX   )r  r   r   r   r   )r   r  r  actualr  s        r;   test_dot_scalar_TestCommon.test_dot_scalar  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  rh   r3  r%  )	r  r   rn  operatormatmulr   r   r@  rA  )r   r  rT   r7  r  s        r;   test_matmul_TestCommon.test_matmul  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  rh   r  )r  r  r  )r  r   rn  r   r   r   r   r2   r   rJ   r
   r:  rK   r@  rA  r   r   r   
atleast_2d)r   r  r7  r  bad_vecsrA   s         r;   test_matvec_TestCommon.test_matvec  s   NNGGIg>?WI  !!'199;+<= 	a%.(//5a%!aS!..55e<a&1#qc1#//66u= 	
1uW~-w78%)%7%7'RYY
1vg000/BC 1Q%L%	"2EA3s)4D7OVaS!I%68A*allA6 
 	AeGn,c!))+g.FGAsA3smOR]]3qyy{7;S-T-V-VWr=   c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/ SQ/ SQ/5      n[        SS/SS/SS//S5      nU R                  U5      nU R                  U5      n[        XE-  R	                  5       X-  5        [        XC-  X-  5        [        X-  X-  5        [        X%-  X-  5        UR                  5       nUnX-  n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        UR                  5       n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        UR                  5       n[        XF-  R	                  5       U5        [        XG-  U5        [        X-  U5        [        X&-  U5        S	n	S
n
[        R                  " S5        [        U	S45      n[        U	5       H9  n[        S5       H'  n[        R                  " 5       nX:  d  M  X-  XU4'   M)     M;     U R                  U5      nXR                  -  n[        UR	                  5       UR	                  5       UR                  R	                  5       -  5        [        UR	                  5       UR	                  5       UR	                  5       R                  -  5        U R                  SS/SS//5      nU R                  SS/SS/SS//5      n[        [        UR                  U5        U R                   (       a  [        [        UR"                  U5        g g )Nr  r  r  r  r   r  rh   r3  r7  g333333?r  r  r  r  )r2   r   r  r   r   r  r  r  r   rY  r   rL  rn  r@  rA  r   r:  r   )r   rO   a2rU   aspbspcspr  wantr  fracrS   r  rG  rS  rT   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  rh   r  r  r  r  r  rh   )r  r   r2   r   rJ   r:  r
   typer   r   r   )r   rO   r  bsrU   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=   z3ignore:.*switching.*sparse array:DeprecationWarningc                    [         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  rh   r   r  )ra  r5  rb  rc  r  rE   lil              @)r   dense)r   r   r   r  asformatr   r!  r   )r   rS   r
  r!  rO   rU   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  r4  r   r   r  r  ry  r  r   r  )ra  to)r  rh   r  r  )r  rh   r  r  r  r0  	blocksize)r   r   r  r   r   r   )	r   rA   rB   rS   ro  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                  R                  5       UR                  R                  5       5        [	        [        U5      R                  5       UR                  R                  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
                  R	                  5       U5        [        [        U5      R	                  5       U5        [        UR                  UR                  5        g )Nr  r  r  )	r   r  r   r   r   mTr,   r   r@   )r@   rG  r  r  rO   rU   r  r   s         r;   rC  )_TestCommon.test_transpose.<locals>.check4  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqIuxx//115/6>>@!D!''*r=   r;  r  r  r   r  )r  rK   r   r  r   r   r   r   rn  r  r,   r@  rA  r7  rL  r   )r   r  r  rC  r  r@   rG  r  s   `      @r;   test_transpose_TestCommon.test_transpose/  s    ">	+ v&2<<.668<<f6	8577??,eFm<588++-uww/@A+E2::<eggoo>OP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?   )r8  r9  r   r@   r  r  sum1sum2r   s        r;   rC  )_TestCommon.test_add_dense.<locals>.checkP  sI    //%(C%%e,E ;Dt3Y/;Dt3Y/r=   rH  rH  s   `  r;   test_add_dense_TestCommon.test_add_denseO  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?   )r8  r9  r@   rB  r   r  s        r;   rC  )_TestCommon.test_sub_dense.<locals>.check_  s    //%(C%%e,E yyD {"4s3{"4s3 	C50"4s3-4"4s3r=   rB  rf  rH  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  rh   )r   r  r  r  )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   rS  zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rK   ro   complexfloatingr  rw   r  rA  rT  rU  rP  r)   maximumminimumr   r   r   r@   )r@   dtype2btyperS   rT   max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s            r;   rC  /_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   )rK   r   r6  r   r  r  r@   )r   rC  r@   r  r  r$  r%  r&  s   `    @@@r;   test_maximum_minimum _TestCommon.test_maximum_minimumx  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   rW  r!  	__class__r   r   r   rV   )r   rS   toselfs      r;   	test_copy_TestCommon.test_copy  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  rX   )r/  rK   r   r  r  zipr   r   )r   rT   rS   rA   rB   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  rV  r  r  )r   r  rK   r  r  r   r   r   r@  rA  rz  r   )r   r   rO   rU   r  r3  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  rV  )r   r  r  r   r  r   r  r  toliltodoktobsr)r   r   rO   rU   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  )rK   r   float16r@  rA  r  rw   r  )r   rO   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)NrS  )protocolr   )rT  rU  rV  r)   r  rW  rL  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r!  rH   itemsrJ   rK   r
   rm  r   )r  rG  sploadedkeyr~  pickler   s        r;   rC  &_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)rN  )r   rC  rN  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)rE   r  z%Unary ops not implemented for dok/lilr6  r  r        4@)rF  rG  r  r!  r   rK   r  r   r  r   r   )r   ufuncr  X0X2r   s        r;   rC  5_TestCommon.test_unary_ufunc_overrides.<locals>.check2	  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rintrT  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  rd   )r   rC  r   s   `  r;   test_unary_ufunc_overrides&_TestCommon.test_unary_ufunc_overrides1	  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  rh   r   r   r   r  r   r   r   r  rh   r  r   rh   r  rh   rh   r  r  )rh   r   r   r  )r5  rc  ))r  rh   r9  r%  )rK   r   r  r   resizer   r   r:  r!  r@  rA  r  
IndexError)r   r
  r  	bad_shapes       r;   test_resize_TestCommon.test_resizeF	  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@   rW  T)rc  rb  r5  r  rE   r  )r  r!  r+  rD   r   NON_ARRAY_BACKED_FORMATSr   rV   r@   rK   r  r   r  )r   rS   self_formatr#  other_formatrT   s         r;   test_constructor1_base"_TestCommon.test_constructor1_baseo	  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=   rd   N)yr   r   r   r   r&  r.   r6  r&   r'  r#   r(  r    r)  r!   r*  r%   r+  r"   r,  r$   r-  r   r/  classmethodr<  rI  rN  rf  rk  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r,  r@  rF  markslowr]  rf  rs  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r:  r?  rI  rO  rR  rX  r]  rg  rl  rs  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rP  r  r   r  r  r  r(  r-  r1  r7  r>  rC  rP  rk  rv  r|  r   rd   r=   r;   r1  r1  2  sm   @"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(" *AXB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+ [[ UV( W(2
D @6,D\:0)84t924*';R7r=   r1  c                   ,    \ rS rSrS rS rS rS rSrg)_TestInplaceArithmetici	  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)rK   r  r  rW  r   r:  r@  rA  rn  r   r   r  )r   rO   rU   rA   rB   s        r;   test_inplace_dense)_TestInplaceArithmetic.test_inplace_dense	  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)castingrh   rD  	r8  r9  rK   can_castr  rW  r   r   r  r@   r  r  rO   rU   r   s        r;   rC  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=   rH  rH  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 r  r  r  s        r;   rC  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=   )r6  rK   r  r@   r  rH  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  r  r  )r  rK   r'   r   r   r:  r@  r  )r   rO   rU   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+rd   N)	r   r   r   r   r  r  r  r  r   rd   r=   r;   r  r  	  s    0d.2r=   r  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   rh   r   r  r  r  r  r  )r  r   r  )r  r  r%  )
r   r  r   rL  r   r  r@  rt  r  __getitem__)	r@   r
  rS   r  r  r  rG  rp  r   s	           r;   rC  *_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.   rK   r@   rH  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  rS  r   r  r  r  rh   r  r  r  rc  r(  r   r  r'  r  ru  r  )r   r  r   r(  )r   r   r  r   )rh   r   r'  r   ))r   r  )r  r  r  r;  r  g     ^@r%  )r  )r  rT  rU  rP  rQ  r)   r  rK   bool_r   r   r@  rt  __setitem__r   rA  ro   r  r  )r@   scalar_containerrS   rp  rE  r   s        r;   rC  *_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!   rK   r   rA   s    r;   <lambda>-_TestGetSet.test_setelement.<locals>.<lambda>D
  s    i1#0r=   c                     U $ r?   rd   r  s    r;   r  r  D
  s    ar=   )rK   r   r.   r@   )r   rC  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  rX   r  rS  r  )r   r  )r  rT  rU  rP  rQ  r)   r   r@   rS   r   s     r;   rC  9_TestGetSet.test_negative_index_assignment.<locals>.checkM
  s[    we4A((*''$8OP% + 51% +*s   &A%%
A3rf  rH  s   `  r;   test_negative_index_assignment*_TestGetSet.test_negative_index_assignmentJ
  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  rX   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 ; rS  r  rL  )r  rT  rU  rP  rQ  r)   r   r  )r  rG  nitemsr7   rS   r  rF  r   s        r;   	_test_set3_TestGetSet.test_scalar_assign_2.<locals>._test_setZ
  s    EQEVJ/C1v&A((*''$8OPQ$ +  =Q$C8	 +*s   'B
Brh   r  r  r(  r  r  ru  r  )r   r   r  r  rG  r  rF  s   `   @@r;   test_scalar_assign_2 _TestGetSet.test_scalar_assign_2W
  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  rS  r  r  r  r  r)  
r  rK   r   rT  rU  rP  rQ  r)   r   r   r"  s       r;   test_index_scalar_assign$_TestGetSet.test_index_scalar_assignh
  s    NN6"HHV$$&##Hd4KLV###  ' 	199;* '&s   :B
B(rd   N)
r   r   r   r   r  r  r  r  r  r   rd   r=   r;   r  r  
  s    #,!9F#"	+r=   r  zfails in parallelreasonc                       \ rS rSrS rSrg)
_TestSolveit
  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)Nr6  r   r  r  r  rS  r  )rK   r   rY  r   ry  r  rL  r   r   r  rT  rU  rP  r)   r3   solver   )r   rF  rS   rA   rB   rS  r  s          r;   
test_solve_TestSolve.test_solvev
  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rd   N)r   r   r   r   r  r   rd   r=   r;   r  r  t
  s    %r=   r  c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	5      S
 5       rS rS rS rS rS rSrg)_TestSlicingi
  c                 <   [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R
                  S9SSS24   R                  [        R
                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        g )Nr  rX   r  r   r  r  )r   r  rK   r  r@   r\   r  r  r   s    r;   test_dtype_preservation$_TestSlicing.test_dtype_preservation
  s    T^^F"((^;AacEBHH"((ST^^F"((^;AacEBHH"((ST^^F"**^=a!eDJJBJJWT^^F"**^=a!eDJJBJJWr=   c                    [         R                  [         R                  [         R                  [         R                  4 H  nU R                  SUS9n[        US S 2SSS24   R                  U5        [        USSS2S S 24   R                  U5        [        USSSS24   R                  U5        [        USSS2S4   R                  U5        M     g )Nrq  r  r   rh   rK   r  r\   r  r  r  r   r@   r   dtrS   s      r;   #test_dtype_preservation_empty_slice0_TestSlicing.test_dtype_preservation_empty_slice
  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  rX   ry  r   r  rh   r  rh   r  r  r   r  r  r  r  r  r   r   ru     r  r'  )r/  r   r  r  r:  r   r   r@  rt  r  slice)
r   rT   rS   r0r1r2r#  r
  r  r/  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  rX   ry  r   r  rh   r  r  r  r  r  rj  r  ru  r  r  r'  )r   r  r  r:  r   r   r   r@  rt  r  r  )
r   rT   rS   c0c1c2r#  r
  r  r/  s
             r;   test_get_vert_slice _TestSlicing.test_get_vert_slice
  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  rX   rh   r   r  r  r  rj  r  r  r  )r   r  r  r   r   r   )r   rT   rS   r  r/  s        r;   test_get_slices_TestSlicing.test_get_slices
  s4   3K2&NN11QqS!A#X;..0!AaC1H+>1QR"W:--/12ss7<1SbS!"W:--/3B37< 9iI>?NN11QqS!A#X;!A#qs((;(;(=>1QU8Qq!"uX%5%5%78r=   c                    [         R                  R                  SS5      n U R                  U5      SSS2SSS24   n[        UR                  5       USSS2SSS24   5        g ! [         a    [
        R                  " S5      ef = f)Nr  r      rh   r7  r  feature not implemented)	rK   r   r  r  rA  rF  rG  r   r   )r   v0rE  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  rX   r  r  r  r  ru  rh   r  r  r)  r  r  )	r/  r   r  r  r   r   r   r  r   )r   rT   rS   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=   rh   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  rX   rh   r  r  r  r6  r(  r  r  ru  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 Nrd   r   )r   r   r  rn   r   r   )rO   rA   rB   rS   rT   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  )
rJ   rK   r
   r  r   r   r  rn   r   r   )rO   rU   aibirA   rB   rS   rT   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  rh   r  r  r  ru  r  i)r/  r   r  r  rK   s_r   r   	enumerate	itertoolsproductrM   r  )r   r
  slicesr  rG  rO   r  r  rU   extra_slicesr  rS   rT   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  rX   r  r   r  rh   r  )Nr  rh   Nr  )Nr  r  )r  N)rX   r  r  rh   r  )rh   )Nr  rh   )r  )r  Nrh   )r  rh   N)r/  r   r  r  r   r   r:  r   rT   rS   s      r;   test_None_slicing_TestSlicing.test_None_slicingQ  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  rX   .).)r  .).r  ).r  zindex .5. out of ranger  )r  .zindex .10. out of range).rX   r  rh   )r  r  .)r  .r  )r/  r   r  r  r   r   rF  r   rt  rn  r   r   rU   rO   s      r;   test_ellipsis_slicing"_TestSlicing.test_ellipsis_slicingu  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  rX   )TFTFTF.shape mismatchr  )r/  r   r  r  r   r   r@  rt  )r   numpy_arO   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  rX   r  .rh   r  )r/  r   r  r  r   r   r  s      r;   test_ellipsis_fancy_slicing(_TestSlicing.test_ellipsis_fancy_slicing  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  rh   z(an index can only have a single ellipsisr  )..).r  .)r  r   r  rF  r   rt  r   rO   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rd   N)r   r   r   r   r  r  r  r  r  r  r  rF  r  	fail_slowr  r  r  r"  r%  r)  r   rd   r=   r;   r  r  
  sl    X0C*C,9	<+3Z [[1@ @D"HH'1R,T"r=   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)_TestSlicingAssigni  c                    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  rS  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=rS  r  rL  )
r  rT  rU  rP  rQ  r)   rK   r   r   r   )r  rG  r7   rS   rT   r  rF  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(rh   r  rX   r  r  ru  )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  rS  rh   r  r'  r  r  r  rX   r  r   r  r  )r  rT  rU  rP  rQ  r)   r   r   rK   r   rn  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  rX   r   r   )r   r   r  )r   r  r   r  r  r   r  rS  r  r  r  r  r'  r  rh   )
r  r   rT  rU  rP  rQ  r)   r   r   r)  )r   rT   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  rS  r  r  r  r  r'  r  rX   r  r  r  r  r:  )r  rT  rU  rP  rQ  r)   r*  rK   r'   r   r   r   )r   rT   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        [%        [0        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  rh   r  r  r(  r  r  ru  r  r   r  r  rS  rX     r  d   r%  r  r  )r  r  r  r  rh   r  )r   r  r  r  )r  r   r   r  rK   r
  r   rT  rU  rP  rQ  r)   r  r   r   r  rL  r   r@  rA  r  listr  rW  rt  )	r   rS   rT   r
  r  rG  rO   r  rU   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  rh   r  r  r  r  )r  rK   r  r   r   r  s      r;   test_assign_empty$_TestSlicingAssign.test_assign_emptyR  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  rk  r  )r  rK   r  r   r   r   r   rS   rA   s      r;   test_assign_1d_slice'_TestSlicingAssign.test_assign_1d_sliceZ  sR    NN2776?+HHQK!Q$!Q$199;Iy(IJr=   rd   N)r   r   r   r   r/  r4  r7  r<  r?  rF  rJ  rN  r   rd   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)_TestFancyIndexingib  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 )Nrq  r  F)FFFr  r  s      r;   #test_dtype_preservation_empty_index6_TestFancyIndexing.test_dtype_preservation_empty_indexg  s     88RXXrzz2::>BvR0A1uen,-33R80!34::B?1b5,2q5, ?r=   c                 ^   U R                  [        R                  " SS/5      5      n[        [        UR
                  S5      R                  S5        [        [        UR
                  S5      R                  S5        / SQ/ SQ4n[        [        UR
                  U5      R                  S5        g )Nr  foozIndex dimensionrh   rV  r%  r  r  )r  rK   r   r@  rt  r  r  )r   rS   idxs      r;   test_bad_index!_TestFancyIndexing.test_bad_indexq  s{    NN288QF+,j!--7==>OPj!--<BBCTU,'j!--5;;<LMr=   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  rX   r  r  r  rh   r  )rh   r(  r  r  r  r)  r  r(  r  ru  r   r5  z"Only 1D or 2D|>2D is not supportedr  r  )r/  r   r  r  r   r   r   r!  rF  r   rt  r  r   rK   r  )r   rT   rS   r>  r  s        r;   test_fancy_indexing&_TestFancyIndexing.test_fancy_indexingx  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 )Nrf   r  r  r  r  r  rK  )rK   r   rY  r/  r  rz  rO  r  r(   r   r   r@  rt  r  )r   NUM_SAMPLESr  r  r
  Ir  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  rh   z(bool index .* has shape .* instead of .*r  )r/  r   r  r  rK   r  rB  r  r  r  rJ   rF  r   rt  )r   r  r  rT   rS   row_long	row_shortcol_long	col_shortr  r  rG  rM  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 )Nrf   r  r  rX   r   rh   rK  r  r  r)  )TFTTF)
FTTFTFFFFF)r  r  Tr  )r  r   r  )rK   r   rY  r/  r   r  r  r   rO  rB  r   r   r   r@  rt  r  rA  )	r   rT   rS   r`  r  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 )Nrf   r  r  rX   r   rh   r  rK  r  r)  )r  r  )r  rX   r  )rK   r   rY  r/  r   r  r  r   rO  rB  r*  r   r   r@  rt  r  rA  )	r   rT   rS   r  XspZr  ZspYsps	            r;   "test_fancy_indexing_sparse_boolean5_TestFancyIndexing.test_fancy_indexing_sparse_booleanH  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   rK   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  rh   )r  r   r@  rA  r  rK   r   s     r;   test_fancy_indexing_seq_assign1_TestFancyIndexing.test_fancy_indexing_seq_assignd  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   rh   r  rS  )	r  r   rT  rU  rP  rQ  r)   r   r   r   s     r;   test_fancy_indexing_2d_assign0_TestFancyIndexing.test_fancy_indexing_2d_assignh  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  rX   r   r  rh   r  r  FFFFFr  r   r  rh   r  r  	r/  r   r  r  rK   r   r   r   r  r   rT   rS   r  r  s        r;   test_fancy_indexing_empty,_TestFancyIndexing.test_fancy_indexing_emptyp  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=   rd   N)r   r   r   r   r&  rS  rY  r\  rd  rk  rq  rx  r}  r  r  r  r   rd   r=   r;   rQ  rQ  b  sF    -N~=@<4,G@I.O
L<0r=   rQ  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=  r  r2  rW  sort_indicesr   )r  r2  s     r;   check_remains_sortedr    sZ      1*++13G3G	iinnG ANNw		@Bs   A4A6c                   2    \ rS rSrS rS rS rS rS rSr	g)	_TestFancyIndexingAssigni  c                     U R                  [        R                  " SS/5      5      n[        [        [
        [        4UR                  SS5        [        [        [
        [        4UR                  SS5        g )Nr  rV  rh   rW  )r  rK   r   r@  rt  rA  r  r  r  s     r;   test_bad_index_assign._TestFancyIndexingAssign.test_bad_index_assign  sQ    NN288QF+,z:y91==%QRSz:y91==*VWXr=   c                 T  ^ ^^ Su  mmUUU 4S jnS[        S SS5      4[        R                  " S5      [        SS5      4[        S	S5      [        SS5      44 H  u  p#U" X#5        M     [        R                  " S5      [        R                  " S5      4S
4 H  u  p#U" X#5        M     g )Nr  c                   > TR                  TT45      nTR                  [        R                  " TT45      5      n[        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NrS  r  )r  r/  rK   r   rT  rU  rP  rQ  r)   r  r   r   r  rG  rS   rT   r  rF  r   s       r;   _test_set_sliceI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_slice  s    1v&ARXXq!f-.A((*''$8OPQ$)!,AdG - +
 &aiik15 -, +*s$   2CB5
C5
C	?C
Cr  rX   r  r  r  ru  rh   )r  rD  )r  rK   r   r   r  r  rG  r  rF  s   `   @@r;   test_fancy_indexing_set0_TestFancyIndexingAssign.test_fancy_indexing_set  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  rS  r  r   rh   r  r  rr  )	r  rT  rU  rP  rQ  r)   r  r   r  r  s     r;   rC  D_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.check  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  rH  s   `  r;   test_fancy_assignment_dtypes5_TestFancyIndexingAssign.test_fancy_assignment_dtypes  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  ry  rS  r   r  rh   r  rX   r6  r  )r   rX   r6  rq  r  r&  r%  )r%  ry  r  )r  r'   r   rT  rU  rP  rQ  r)   r  rn  r   r   r/  rK   r   r   r  )r   rS   rT   i0i1i2r#  s          r;   test_sequence_assignment1_TestFancyIndexingAssign.test_sequence_assignment  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  rX   r   r  rh   r  r  *   r  r  r  r  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=   rd   N)
r   r   r   r   r  r  r  r  r  r   rd   r=   r;   r  r    s    Y
"(#+/Z$r=   r  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  rh   r  r  r  rh   r%  r  r  r  r  rh   r  r  rf   r  r'  r5  r  )rK   r   r   rY  r/  r  r  r!  rM   r   r   r@  rt  r  r  )
r   IandJr
  r  r`  r  ra  DIJrb  rc  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=   rd   N)r   r   r   r   r  r   rd   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
Nrf   r  r'  rh   r  r%  r  r  r  )rK   r   rY  r/  r  r  r   r  r   r   r@  rt  r  )	r   r
  r  r  r`  r  rb  rc  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  r  rT  rU  rP  rQ  r)   r/  rK   r   r   r   r  s       r;   r  R_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_sliceK  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  rh   r  r   r  r%  r   rh   r  )r   r  r  )r  r  rh   )rK   r   r  s   `   @@r;    test_fancy_indexing_multidim_set9_TestFancyMultidimAssign.test_fancy_indexing_multidim_setH  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  )rK   r   rY  r/  r  r  r   r   r@  rt  r  )r   r
  r  r  r`  r  r  iirb  rG  jjrc  r#  s                r;   test_fancy_assign_list/_TestFancyMultidimAssign.test_fancy_assign_listY  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 )Nrf   r  r'  )r  rh   r  r  r  rh   )r  r  r  rh   r  r  )r  rh   r  r  r  r  r'  )rK   r   rY  r/  r  r  r   r@  rt  r  r  )r   r
  r  r`  r  r  rb  r  rc  C1C2s              r;   test_fancy_assign_slice0_TestFancyMultidimAssign.test_fancy_assign_slicev  s    
		tLL1-.NN1"#$!Ba!$"#$!Ba!$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,D  Drd   N)	r   r   r   r   r  r  r  r  r   rd   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)	_TestArithmetici  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   rw   r  r  )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r;   __arith_init_TestArithmetic.__arith_init  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=   r6  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)NrS  rv  rB  )_TestArithmetic__arith_initr   r   r.   rK   rz  rw   r  ro   r  r  r   r@   r   r  r  r  r  rA   rS   ro  rB   rT   r{  D1S1s                r;   test_add_sub_TestArithmetic.test_add_sub  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)NrS  rv  g+=)atol)r  r   rn  r   r.   rK   rz  rw   r  ro   r  r  r   r  r[   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rd   N)r   r   r   r   r&  r  rF  r  r+  r  r  r   rd   r=   r;   r  r    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 )Nr6  r  r  r  r      r  iir  rX   r  Texplicitr  rh   r  r   rX   rX   r   )rK   r  r  r\   ri   r  r   r  r  r   rq   r[   r@   r   r  r@  rA  )r   r@   r
  r  ru  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  rX   r   r  r)  r  r  rr  ru  r  r  Tr  r  )
r  )   r  +   ,   -   .   /   0   r   )
r6  r  r  r  r  r  r   r'  r(  r   )
r6  r  r  r  r  r  r  r'  r(  r   )r(  r      &   r  )r  r   r  r7  r  rX  3   r  )rX   r  r  Fr  )r:  rK   r   r  r  r   r[   r   rq   r   r/  anyr4  r   r   rE  r  r  r@  rA  )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  r:  r
   rK   r2   r*   r+   r/   rq   rJ   r[   nanminnanmaxargminargmax)r   r  r  r  spmatrix_or_sparrays        r;   test_minmax_container_type&_TestMinMax.test_minmax_container_type  sF   Y! " s#%)%7%7'RYY)-););gEIIK((((%)))+-@AAAA%)))+-@AAAAEIIK((((%)))+-@AAAA%)))+-@AAAAELLN++++%,,A,.0CDDDD%,,A,.0CDDDDELLN++++%,,A,.0CDDDD%,,A,.0CDDDDELLN++++%,,A,.@@@@%,,A,.@@@@ELLN++++%,,A,.@@@@%,,A,.@@@@r=   c           	      B   U R                  [        R                  " S5      R                  SS5      [        S9nSUSS S 24'   SUS S 2S4'   SUS'   S	US
'   [        R
                  US'   [        R
                  US'   U R                  U5      nUR                  5       n[        R                  " U5      (       d   eU[        R                  " U5      :X  d   eUR                  5       n[        R                  " U5      (       d   eU[        R                  " U5      :X  d   eUR                  SS9n[        R                  " U5      (       d   eU[        R                  " USS9:X  d   e/ SQnU H  nUR                  US9n[        UR                  5       [        R                  " XS95        [        XpR                  5      (       d   eUR                  US9n[        UR                  5       [        R                  " XS95        [        XR                  5      (       a  M   e   g )Nr  r  rX   r  r   r  r)  r  r  rr  r  )r  r  r  r  )ru  r  r   r  )r/  rK   r   r  r  rX  r  r
  r  r	  r   r   rJ   r(  )	r   r
  r  X_nan_maximumX_nan_minimumr  r  X_nan_maximaX_nan_minimas	            r;   test_nanminmax_TestMinMax.test_nanminmax  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 )Nry  rz  r{  )rq   r[   r  r  r  r  r  r  )r   r  r   r@  rA  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   _datary  rz  r{  )
scipy.sparser  r   r  rJ   _minmax_mixinr   rK   rq   r[   )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  rh   r  )r   r   r  ru  )r  ru  r  r  r  )r  rh   r   r   r  r  r'  r  )r  r  r  )r  r)  rX   )r  r  r)  r  r  Tr  rh   r  rV  FrD  zCannot applyr  r  r  r  )r  r   r  r  )r   rh   rh   rh   )r  rh   r   r  r  )r   r  r  r   r   r  r  rX  rr  )r  r  rK   r   r   r/  r  rJ   r   r   r  r  r  r  r  r   rF  r   rA  r:  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rd   N)r   r   r   r   r  r  r  r  r  r!  r+  r   rd   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   rh   r  r  r|  r)  r  r  ru  r  )r   rw   rB  r  rK   r\   ri   r:  r  getnnzr   r  r<   r@   r@  rA  )r   r  bool_datr  accepted_return_dtypesr0  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=   rd   N)r   r   r   r   r3  r   rd   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  rA  rt  r=  rF  rG  )rO   r   fcs     r;   r   6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper`  sF    Aq<B<'+Y
"N4 A ++&?@@As	    6A)r   r   )r8  r   s   ` r;   wrap%_possibly_unimplemented.<locals>.wrap_  s'    __R A !A Nr=   test_NotImplemented)dictrH   rK  
startswithr  r   	__bases__)r;  requirer:  new_dictr   r   s         r;   _possibly_unimplementedrC  W  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)r1  rC  r  r  r  r  r  r-  rQ  r  r  r  r  r.  rH   r?  getrA  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_classrS  s  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  r  r  r  rR  rK   r  r  r	  s      r;   _test_setdiag_sorted%_CompressedMixin._test_setdiag_sorted  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  rh   r  r  r  r  r   rK   r   c_r+  rW  )r   r  valsdiagsN_newr8  r
  s          r;   test_setdiag_noconvert'_CompressedMixin.test_setdiag_noconvert  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      $ )NrZ  r  r[  r  r  r  r\  r]  )r   r  r_  r`  r8  r
  s         r;   test_setdiag_cooconvert(_CompressedMixin.test_setdiag_cooconvert  so    
 yyAE"j!D(ae/v>((++r=   rd   N)r   r   r   r   rW  rb  re  r   rd   r=   r;   rU  rU    s    	),",r=   rU  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NrS  )rT  rU  rP  rQ  r)   r!   r;  argsrC   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  r3  )r  r  rh   rj  r  r  rc  )r   r*  r   r4  r   r2  r3  r   r  r!  r   r   rU   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  r3  r  r;  r  )r   r   r   r   r  r  r  )r   r*  r   r4  r   r2  r3  r   rq  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   rh   r  r3  r%  r  r  )r   r*  r   r4  r   r2  r3  r   rq  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rh   r  r  r  r   r  r  r   rh   r  rh   r   r  r   r   r  r  rh   rh   rh   rh   r        @g      $@r        "@r  r  g      &@r         @      @r  r  r0  r  r             r  r   r  r  r  r  r  r   rh   rh   r   r   r  r  r   rh   )
r   r	   r*  r   r   r  r   rK   uint64r  )r   r6  r7  r4  rp  rc  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  rh   r  r  )r   r*  r   r   r   r3  r2  r4  rc  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 r  )r*  r   r   r   rK   ro   r@   signedintegerr  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  rh   r  r   r   rh   r  r   rh   r  r  r  r\  ry  r  )r  r   r  r3  )r   r   rK   ri   r*  r@   r:  r\   r   r3  r2  r   r   )r   r4  r7  ptrrO   rU   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  rC  r   rh   r  r  r  )r   rK   rZ   r\   r[   r   ri   r*  r   r3  r@   r2  r   r   )r   r4  larger7  r  rO   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'  rh   r  r  r  r   r  r  rh   rX   r\  r  rh   r'  r  r  )r   r   r*  rW  r  r   r2  r   r   r4  r2  r3  r  r  s         r;   test_sort_indicesTestCSR.test_sort_indices6  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   rh   r   r  r   r  rh   r  r  r  r  r'  r(  r   r  r(  r  r\  r  r%  )r   r*  rW  eliminate_zerosr   r  r4  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 )Nr6  r  r  rU  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rT  rc  rd  re  rf  rg  rh  ri  rj  T)r*  rK   r   r  r   r=  r  r   r   r   r2  r3  r   r   r  r  rX  s       r;   test_ufuncsTestCSR.test_ufuncsK      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  r\  r  r(  r  r  r'  rh   r  r   rh   r  )r   r   r*  r   r   r  s         r;   test_unsorted_arithmetic TestCSR.test_unsorted_arithmeticW      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  rh   r  r  rf   r  r'  
rK   r   r   rY  r/  r  r  r(   r   r   r   r`  r  r
  r  ra  s         r;   test_fancy_indexing_broadcast%TestCSR.test_fancy_indexing_broadcastb      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  rh   TFN)rK   r   r*  rW  r   r  rJ   rB  r  r   r2  )r   sorted_indsunsorted_indsr4  r3  r  s         r;   test_has_sorted_indicesTestCSR.test_has_sorted_indicesp  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_duplicatesrh   r   r  TF)r   r  r  r  r  rS  r  Nr  r  rb  )rK   r   r*  r   has_canonical_formatrW  rJ   rB  sum_duplicatesr   r2  r4  r3  r   rT  rU  rP  rQ  r)   )r   info_no_dupsinfo_with_dupsr  Mchecks        r;   test_has_canonical_format!TestCSR.test_has_canonical_format  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 )Nrh   r  r   r  r\  r          rc  )rK   r   r\   r*  r   r3  r@   ri   r   r3  r2  r_  rO   rU   rp  r  r3  r  r  rA   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   rh   r  )r*  r  rz  r   rO   rU   s      r;   test_binop_explicit_zeros!TestCSR.test_binop_explicit_zeros  sX     	{+	{+{{azz!}  A%%%r=   rd   N)r   r   r   r   r~  r  rK   r  int_r  r  r6  rr  rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rd   r=   r;   rh  rh    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58B(H0&r=   rh  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rj  )rT  rU  rP  rQ  r)   r   rk  s      r;   r  TestCSRMatrix.spcreator  :    $$&##Hd4KLt.v. '&&ro  rd   Nr   r   r   r   r~  r  r   rd   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   rK   r   rJ   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rj  )rT  rU  rP  rQ  r)   r    rk  s      r;   r  TestCSC.spcreator  rn  ro  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   rd  r   rh   r   r  r3  )r  rh   r  r  )r   rh   r  rh   r  r  rb  )r   r)  r   r4  r   r2  r3  r   r  r   r!  rq  s      r;   rr  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 )Nru  r3  r  rh   r  rh   )r   r   r   r   r   r  r  )r   r)  r   r4  r   r2  r3  rq  s      r;   rv  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   rh   r3  ry  )r   r)  r   r4  r   r2  r3  rq  s      r;   ry  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 )Nr|  r}  r~  r  r0  r  r  r  r  r  rh   )r   r	   r)  r   r   r  r   r  )r   r6  r7  r4  rp  rb  s         r;   r  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 Nr  r  r  )r  r  )r   r)  r   r   r   r3  r2  r4  rb  s        r;   r  TestCSC.test_constructor54  r  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   rK   ro   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  rX   rh   r\  r  r%  )r   r)  rW  r  r   r  r4  r   r  s         r;   r  TestCSC.test_eliminate_zerosE  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  r\  r  )r   r   r)  rW  r  r   r2  r   )r   r4  r6  r  r  r  s         r;   r  TestCSC.test_sort_indicesP  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)  rK   r   r  r   r=  r  r   r   r   r2  r3  r   r  s       r;   r  TestCSC.test_ufuncsZ  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  r\  r  r  r  )r   r   r)  r   r   r  s         r;   r   TestCSC.test_unsorted_arithmeticf  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_broadcastq  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 )
Nrh   r  r   )r  r  r\  )r  r  rc  r  r  )	rK   r   r\   r)  r*  r   r3  r@   ri   r  s               r;   r  TestCSC.test_scalar_idx_dtype  r  r=   rd   N)r   r   r   r   r~  r  rK   r  r  r  r  r6  rr  rv  ry  r  r  r  r  r  r  r  r  r  r   rd   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rj  )rT  rU  rP  rQ  r)   r   rk  s      r;   r  TestCSCMatrix.spcreator  r  ro  rd   Nr  rd   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	)
rE  i  c                     U R                  S5      nSUS'   SUS'   XR                  -  nXR                  R                  5       -  n[        UR	                  5       UR	                  5       5        g )N)rX   r0  rX   r  r6  r  r  )r,  rn  r   r   r   )r   rS   r
  r  s       r;   	test_multTestDOK.test_mult  sW    x($$G199;		4r=   c                     U R                  S5      nSUS'   SUS'   US-   n[        SS/SS/SS//5      n[        UR                  5       U5        US	-   nUS	-   n[        UR                  5       U5        g )
Nrq  r  r6  rc  rX   r   r7  r  )r  r   r   r   r  s      r;   test_add_nonzeroTestDOK.test_add_nonzero  sz    NN5!##FB7RHr2h/0199;*FF199;*r=   c                     U R                  S5      nSUS'   SUS'   [        US-  R                  5       UR                  5       S-  5        [        US-  R                  5       UR                  5       S-  5        g Nrq  r  r  r6  rc  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  rh   rb  r  r  r  rW  r  r  r  r  )	r,  r   r   r   r  r   r   r   r  )r   r  rF  rO   rb  rU   rc  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  rd  r  r3  ry  r  r  )r@  r  r,  r   r   r@   r   r*  rK   r  r   )r   rU   rS   r  r4  r3  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=   rd   N)r   r   r   r   r"   r  rK   r  r  r  r6  r  r  r  r"  r&  r*  r   rd   r=   r;   rE  rE    s>    I77BJJ6K5
+;<>%*Br=   rE  )rN  rO  c                       \ rS rSr\rSrg)TestDOKMatrixi  rd   N)r   r   r   r   r   r  r   rd   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rX   rX   rX   r  y              4@r  r  ppc64le)
r   rK   r  r-  platformmachiner   rn  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  rh   r  r  r   )r-  r   )r   rA   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   rh   r  r  r  r  )addsubmul__i__r  r  r  )皙?rE  rE  r   )	r-  rK  rW  r   r   r   rK   r@   r/  )r   rS   rT   r4  opr   r  r  s           r;   test_inplace_opsTestLIL.test_inplace_ops5  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_datarT   rS  r6  s        r;   test_lil_iterationTestLIL.test_lil_iterationI  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 )Nr2  rX   r  r6  r  r7  )r(  r  r  )r  r(  r  )r(  r)  )r-  r  r   r   )r   rT   r#  r
  s       r;   test_lil_from_csrTestLIL.test_lil_from_csrO  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%  rh   r  )r/  r   r  r-  r   r   r   )r   r  rS   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  rh   r  r  rr  r  r  r  rq  r  r  r   r   r)  )r   r  r   )r-  r   rz  r   )r   lr  s      r;   test_point_wise_multiply TestLIL.test_point_wise_multiplyb  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-  rK   r  r(  s     r;   test_lil_multiply_removal!TestLIL.test_lil_multiply_removaly  s0    rwwv/	R!Q$r=   rd   N)r   r   r   r   r$   r  rK   r  r  r  r6  r6  r9  r<  rG  rL  rO  rR  rW  rZ  r   rd   r=   r;   r0  r0    sN    I77BJJ6KQ!?1(R
5/).r=   r0  )rN  c                       \ rS rSr\rSrg)TestLILMatrixi  rd   N)r   r   r   r   r   r  r   rd   r=   r;   r]  r]    r.  r=   r]  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)BaseTestCOOi  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 )Nr|  r}  r~  r  r0  r  r  r  r  r   r  )r   r(  r   r   r  r   rK   r  )r   r6  r7  r4  r5  r  s         r;   rr  BaseTestCOO.test_constructor1  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5++-0r=   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X1U44S5      n[        / SQ/ SQ/ SQ/5      n[        XTR                  5       5        g )N)
r   r  rh   rh   rh   rh   r   r   rh   rh   )
r   rh   r   rh   r  r  r  r   r   rh   )
rh   r)  r  r  r'  r   r  rh   r  r  r  )r  r  r   rU  )r  r'  r   )r   r(  r   r   )r   r6  r7  r4  r5  r   s         r;   rv  BaseTestCOO.test_constructor2  s[    )*)*-.  $Cy!1%8ZJ783.r=   c                    U R                  S5      n[        UR                  S5        [        UR                  / 5        [        UR                  / 5        [        UR
                  / 5        [        UR                  5       [        S5      5        g )Nr  )r(  r   r   r6  r7  r4  r   r   r   r5  s     r;   ry  BaseTestCOO.test_constructor3  s^      '399U+3772&3772&388B'3;;=%-8r=   c                 `   [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR                  5       U5        [        / SQ5      nU R                  U5      nU R                  (       a  UOUR                  SS5      n[        UR                  5       U5        [        R                  " [        SS9   U R                  / SQ/ S	Q/ S
Q45        S S S 5        [        R                  " [        SS9   U R                  / SQSS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr   r  r   r   )r'  r   r  r   )r   r  r   r   r  r  zobject cannot be interpretedr  )r   r     !   r  r4  r  r`  r\  )
r   r(  r   r   r:  r  rF  r   r  rA  )r   r   r5  r  s       r;   r  BaseTestCOO.test_constructor4  s    Y  !   %3;;=#. I  %,,3#++a2D3;;=(3 ]]9,KL|0LM M ]]:-CDf= ED	 ML EDs   6D2D
D
D-c                     S/nU R                  US/S/44S S9nUR                  [        R                  " U5      R                  :X  d   eg )Nr  r   r  )r(  r@   rK   r   )r   r4  r5  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?   rd   r   s    r;   r1  BaseTestCOO.test_iterator      r=   c                     SS//nU R                  U5      R                  5       n[        UR                  5       U5        g rm   )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  rh   r   r  )r(  r  r   r   r6  r7  r4  re  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 )Nr  r  r  )r(  r;  r   r   )r   r5  rE   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 )Nr  r  r  rh   )r(  r  r   r  r  )r   r5  rc  rb  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  rh   r   r  Fr<  N)r(  r   r  rK   r   r  r  )r   rS   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  r\  r   )	r   r(  rW  r  r   r4  r  r   r   )r   r4  r6  r7  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 )Nr3  r4  r5  r8  Fr<  T)r(  r  r   r4  rK   rR   )r   rr   	new_shaperA   rB   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- rB  )-   )r  r  r#  r1  r   r/  )r(  r   r  r  )r   mat1mat2s      r;   test_large_dimensions_reshape)BaseTestCOO.test_large_dimensions_reshape0  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr=   rd   N)r   r   r   r   rK   r  r  r  r6  rr  rv  ry  r  rm  rF  r  xfailr1  rv  ry  r|  r  r  r  r  r  r   rd   r=   r;   r_  r_    s    77BJJ6K1	/9>,1
 [[5)JK L1
*9
++Z99	Mr=   r_  c                       \ rS rSr\rSrg)TestCOOi;  rd   N)r   r   r   r   r#   r  r   rd   r=   r;   r  r  ;  s	     Ir=   r  )rG  rH  rI  rJ  rK  c                       \ rS rSr\rSrg)TestCOOMatrixiA  rd   N)r   r   r   r   r   r  r   rd   r=   r;   r  r  A  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#   rK   r   rm  r  rJ   r   r  r  r  s    r;   test_sparray_subscriptabler  M  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)TestDIAiY  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  rh   r   r  )r   rh   r  r   )r   r   r  r  r  r  r   r  r   r  rh   r`  r\  )r   rK   repeatr   r+  r   )r   r
  r4  r8  s       r;   rr  TestDIA.test_constructor1_  sr    <! " xx$++A1+5((8$T''v'FNNPRSTr=   FzDIA does not have a __getitem__ro  c                     g r?   rd   r   s    r;   r1  TestDIA.test_iteratorh  rs  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  rh   r  r  )	r+  rK   r'   r   r8  r@   r\   rR  ri   r   r  s     r;   test_setdiag_dtypeTestDIA.test_setdiag_dtypel  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)rh   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  rh   r  r  ru  r  r  z)overfilled shorter-diagonal, out of orderri  )r'  r  r     z(overfilled longer-diagonal, out of order)rK   r   r  )r   d1d3s      r;   	ill_casesTestDIA.ill_casesx  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rr  rb  rc  r\  r   case: )r  r+  _getnnz)r   r4  ofsetsr  refcaser   rS   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?   rd   r   s    r;   r3  TestDIA.test_getnnz_axis  rs  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  r\  r   r  r  rL  )	r  r+  r  rK   r   r  r  r   r   )r   r4  r  rM  rS  r  r   rS   rT   r  r  s              r;   
test_tocsrTestDIA.test_tocsr  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  r\  )r+  r   r   r  r  )r   r  r  s      r;   test_convert_gh14555TestDIA.test_convert_gh14555  s]    bT2&A99;1779,,.91779,,.9r=   c                 :   U R                  SS/SS//5      R                  5       n[        R                  " UR                  UR
                  4UR                  5      n[        R                  " [        R                  " U5      S:  5      nUR                  U:X  d   eg )Nr  rh   r  r  r   )
r+  r  rK   ravel_multi_indexr6  r7  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  r`  r\  )rK   r   r  r\   r   r%   r  r7  r@   r  r2  r  )r   r4  r8  r  r5  rc  rb  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  rh   r  )r   r+  rJ   r   r   r   rS   rT   ro  r{  r}  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  rh   r  rc  )r   r+  rJ   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  rh   r   r  r  r  r0  )r+  rJ   r+  r   r   rz  )r   r  resres2s       r;   rI  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  r0  r  r  r  r  r  r   r  )ru  r  r   r  rh   )r  r  r  )r  r  r  r  ru  r  )r  r  r  )r  r  r  rh   r  )      8@g     A@r  )r        ,@      ;@)r  r  r  )r  r  r  )r   r+  r4  r   r   rJ   r8  )r   rS   rT   ro  r{  r#  r}  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=   rd   N)r   r   r   r   r%   r  rK   r  r  r  r6  rr  rF  r  r  r1  r   r  r  r  rG  r3  r  r  r  r  r  r  rI  r  r   rd   r=   r;   r  r  Y  s     I77BJJ6KU [[5)JK L Q	0  	0#>J	; [[56 7N :9-19&	>*7r=   r  )rG  rH  rI  rJ  rK  rN  rO  c                       \ rS rSr\rSrg)TestDIAMatrixi1  rd   N)r   r   r   r   r   r  r   rd   r=   r;   r  r  1  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)TestBSRi9  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   rh   rh   r  )r   rh   rh   r  )r  rh   r  ry  r  r   r  )r  r   rX   r  )r   r  r(  )r0  r   r6  rh   )r   r  rX   )r  r   r  r  r  r4  r  r  r0  r\  )r   r   r   r'  r   r   )r   r3  r2  r4  rS   ro  s         r;   rr  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  rX  r  )rX   r  )r  r'  r  )r  r  rr  r  r  r  r4  r  ry  r  r  r\  r  r8  )rh   r0  )r  r0  rh  )r   r   r'  r   r   )r   r   rS   s      r;   rv  TestBSR.test_constructor2W  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%  rk  r  r  r   rh   r  rr  r  )r   r   r'  r   )r   argrS   s      r;   ry  TestBSR.test_constructor3o  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  rW  )rK   r  r   r   r\   r   r'  )r   rF  r4  r3  r2  s        r;   r  TestBSR.test_constructor4u  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   rI  r  r  )rK   r  r   r   r@  rA  r'  )r   rF  	data_1dimr4  r3  r2  s         r;   r  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   rh   r  r  r  )rK   r   r\   r'  r@   )r   rI   r3  r2  rU   s        r;   test_default_dtypeTestBSR.test_default_dtype  s    3*sQCj)1a&1((Aq628FKww"((6*00000r=   c                 (   [        / SQ5      n[        / SQ5      n[        S5      n[        / SQ/ SQ/5      US'   [        / SQ/ SQ/5      US	'   [        / S
Q/ SQ/5      US'   [        / SQ/ SQ/5      US'   [        / SQ/ SQ/ SQ// SQ/ SQ/5      nU R                  X2U4SS9nUR	                  5       nUR                  5       R	                  5       n[        UR                  5       U5        [        UR                  5       UR                  5       5        g r  )r   r   r   r'  r  r  r   r   )r   r3  r2  r4  rS   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  rh   r  r  )r  r6  r\  r0  )
r   rn  r  r   r'  rW  r  r   r  r   r  s         r;   r  TestBSR.test_eliminate_zeros  s    ,!uaUm<>>||Bq#01y!  $!8 Ghhj377C(3;;=#++-8r=   c                 h   [         R                  R                  S5        U R                  [         R                  R                  S5      SS9nSUR                  UR                  S:*  '   UR                  5         [        UR                  S5        [        UR                  R                  S5        SUR                  UR                  S:*  '   UR                  5         [        UR                  S5        [        UR                  R                  S	5        [        UR                  5       [         R                  " S5      5        UR                  5         [        UR                  S5        [        UR                  R                  S	5        [        UR                  5       [         R                  " S5      5        g )
Nr   )r0  r0  r  r  r  B   )r  rh   r  r  r?  )rK   r   rY  r'  r4  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  )rh   r  rh   )r   rh   r  )r  r   rh   Tr   rh   Fr  N)rK   r   r'  r   r  rW  rJ   rB  r  r   r2  r4  r3  )r   rS   r  r2  r4  r3  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   rM  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  rM  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__ro  c                     g r?   rd   r   s    r;   r1  TestBSR.test_iterator  rs  r=   zBSR does not have a __setitem__c                     g r?   rd   r   s    r;   rf  TestBSR.test_setdiag  rs  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 )Nrn  ro  rp  r  r  rq  r  r   rh   r  rr  r;  r  r4  r  )	rK   r   r  r   rs  r   r   r@  rA  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?   rd   r   s    r;   r]  "TestBSR.test_setdiag_comprehensive6  rs  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)
Nrh   r  r   rk  r  r\  r  )r   r  r  )r   r  r  )
rK   r   r\   r'  r   r3  r@   ri   MemoryErrorrA  )r   r3  r2  r_  rO   rU   r  r3  vals2vals3r  r  rA   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rd   N)"r   r   r   r   r&   r  rK   r  r  r  r6  rr  rv  ry  r  r  r  r  r  r  r  r  r  rF  r  r  r1  rf  r	  r]  skipifIS_COLABr  r   rd   r=   r;   r  r  9  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  )rG  rH  rI  rJ  rK  rO  c                       \ rS rSr\rSrg)TestBSRMatrixi[  rd   N)r   r   r   r   r   r  r   rd   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 matrixr3  Nr   rh   r  r  c              3   *   #    U  H	  oS    v   M     g7fr  rd   ).0ps     r;   	<genexpr>&_same_sum_duplicate.<locals>.<genexpr>z  s     ,)QaD)s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)rh   N)r  )r  r2  s     r;   r  r    s     7$w""$s   )
poprK   ro   r@   r  unsignedintegerrl  r  rn   rm  )r4  indsrC   r3  	zeros_pospospos1pos2s           r;   _same_sum_duplicater$  g  sR   ZZ$'F	}}TZZ**	}}TZZ!3!344>7T>!7T>VI--##%I ;;qq;!D1INIDAJ |1,),,#a&{SW$#a&
}s12w&

7$77D~w~w~!--r=   c                      ^  \ rS rSrSS.U 4S jjr\R                  R                  SS9S 5       r\R                  R                  SS9S	 5       r	\R                  R                  S
S9S 5       r
SrU =r$ )_NonCanonicalMixini  Fsorted_indicesc                  > [         TU ]  nU" U/UQ70 UD6nUR                  5       S:H  R                  5       nUS   R                  S:  nU(       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   rh   rS  r  Nr   gh㈵>gHz>)rtol)superr  r   rl  rn   rT  rU  rP  rQ  r)   _insert_explicit_zero_arg1_for_noncanonicalr   r@   rK   r  r  r   r   r4  r  )r   r
  r(  rl  rC   	constructr  zero_pos	has_zerosr  arg1NCr*  r+  s                r;   r  _NonCanonicalMixin.spcreator  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?   rd   r   s    r;   rI  _NonCanonicalMixin.test_bool  rs  r=   z!getnnz-axis counts explicit zerosc                     g r?   rd   r   s    r;   r3  #_NonCanonicalMixin.test_getnnz_axis  rs  r=   znnz counts explicit zerosc                     g r?   rd   r   s    r;   r  _NonCanonicalMixin.test_empty  rs  r=   rd   )r   r   r   r   r  rF  r  rG  rI  r3  r  r   __classcell__)r+  s   @r;   r&  r&    s    16 # #J [[AB C [[@A B [[89 :r=   r&  c                   $    \ rS rSrSS jrS rSrg)_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)r3  r  Nr  )r$  r4  r2  r3  r0  rW  )r   r  r(  r4  r2  r3  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$ rm   rd   r   r  r  rG  s       r;   r,  2_NonCanonicalCompressedMixin._insert_explicit_zero  s    A#r=   rd   N)F)r   r   r   r   r-  r,  r   rd   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   rL  r   r@  rt  r  r  )
r@   r(  r
  rS   r  r  r  rG  rp  r   s
            r;   rC  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   rC  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  rS  rh   )rK   r'   r  r   rT  rU  rP  rQ  r)   r   r{  rn  )r   r
  rS   rT   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 matrixro  c                     g r?   rd   r   s    r;   r  _NonCanonicalCSMixin.test_inv  rs  r=   z&solve broken with non-canonical matrixc                     g r?   rd   r   s    r;   r  _NonCanonicalCSMixin.test_solve  rs  r=   rd   N)r   r   r   r   r  rL  rF  r  r  r  r  r   rd   r=   r;   rF  rF    s`    7*+" [[5)ST U [[5)QR Sr=   rF  c                       \ rS rSrSrg)TestCSRNonCanonicali  rd   Nr   r   r   r   r   rd   r=   r;   rS  rS        r=   rS  c                       \ rS rSrSrg)TestCSRNonCanonicalMatrixi  rd   NrT  rd   r=   r;   rW  rW    rU  r=   rW  c                       \ rS rSrSrg)TestCSCNonCanonicali  rd   NrT  rd   r=   r;   rY  rY    rU  r=   rY  c                       \ rS rSrSrg)TestCSCNonCanonicalMatrixi  rd   NrT  rd   r=   r;   r[  r[    rU  r=   r[  c                       \ rS rSrS r\R                  R                  SSS9S 5       r\R                  R                  SSS9S 5       r	S	r
g
)TestBSRNonCanonicali  c                 `    UR                  5       nSXBU4'   UR                  UR                  S9$ )Nr   r  )r  r<  r  )r   r  r  rG  rA   s        r;   r,  )TestBSRNonCanonical._insert_explicit_zero  s-    GGIA#www--r=   Fz&diagonal broken with non-canonical BSRro  c                     g r?   rd   r   s    r;   r"  !TestBSRNonCanonical.test_diagonal  rs  r=   z"expm broken with non-canonical BSRc                     g r?   rd   r   s    r;   r  TestBSRNonCanonical.test_expm  rs  r=   rd   N)r   r   r   r   r,  rF  r  r  r"  r  r   rd   r=   r;   r]  r]    s[    .
 [[5)QR S [[5)MN Or=   r]  c                       \ rS rSrSrg)TestBSRNonCanonicalMatrixi  rd   NrT  rd   r=   r;   re  re    rU  r=   re  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$  r4  r6  r7  )r   r  r(  r4  r6  r7  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$ rm   )rK   r_r4  r@   r  r6  r7  rC  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  rh   r  r  r   )	r  rK   r'   r  rR  r   r  r  r7  r  s     r;   test_setdiag_noncanonical.COONonCanonicalMixin.test_setdiag_noncanonical*  sf    NN266!9%				1a&A		rwwquu~*+,r=   rd   r?   )r   r   r   r   r-  r,  rn  r   rd   r=   r;   rg  rg    s     
-r=   rg  c                       \ rS rSrSrg)TestCOONonCanonicali2  rd   NrT  rd   r=   r;   rq  rq  2  rU  r=   rq  c                       \ rS rSrSrg)TestCOONonCanonicalMatrixi6  rd   NrT  rd   r=   r;   rs  rs  6  rU  r=   rs  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   rh   r  r'  r4  r  r;  r`  r  r  zcannot be broadcastr  )r  rh   r   ra  r  r\  ry  rq  )rK   r   r   r    r   r!   _broadcast_tor   r   broadcast_torF  r   rA  )rO   rU   r  r3  r  r  	containerres_ares_bres_cres_dres_eres_fs                r;   test_broadcast_tor~  :  s
   
)A
1#sQC!A
)Y'(A
1#A
1#A
)A )ZC	!**51!**51!**51!**51!**51!**515==?BOOAu,EF5==?BOOAu,EF5==?A.5==?BOOAu,EF5==?BOOAu,EF5==?BOOAu,EF]]:-BCy),-;;&;I D ]]:-BCyk"00v0> DC# D DC DCs   KK
K	
K"	r?   )NFNNF)T)	TTTTTTTTT)r&  
contextlibr   r  r4  r  sysrT  rF  r   r@  numpyrK   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+   r,   scipy.sparse._baser-   scipy.sparse._sputilsr.   r/   r0   r1   r2   scipy.sparse.linalgr3   r4   r5   r   r  r<   rD   	frozensetry  rQ  rV   r   r   r   r   r   r  r1  r  r  r  thread_unsafer  r  r-  rQ  contextmanagerr  r  r  r  r  r  r.  rC  rS  rU  rh  r<  r  r  r  r  rE  r-  r0  r]  r_  r  r  r  r  r  r  r  r$  r&  r<  rF  rS  rW  rY  r[  r]  re  rg  rq  rs  r~  rd   r=   r;   <module>r     s        
   *       ,         (F F / /ckk)/
'
 %eW- (( JN?DWt$ $6"$ "$H 4 D\!7 \!7~B| |~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=   