
    (phB                     	   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr	  SSK
rSSK
JrJrJrJrJrJrJrJrJrJrJrJrJr  SSKrSSKJrJrJrJrJrJ r J!r!  SSK"r#SSK$J%r%  SSK$J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  SSK8J9r9  SSK:J;r;J<r<J=r=J>r>J?r?  SS	K@JArAJBrBJCrC  SS
KDJErE  SSKFJGrG  S\R                  ;   rIS{S jrJS rK\L" S/5      rMS rN\!" 5       rO\OR                  \G5          S|S jrQS rR " S S5      rS " S S5      rT " S S5      rU " S S5      rV " S S5      rW " S S5      rX " S  S!5      rY\R                  R                   " S" S#5      5       r\ " S$ S%5      r] " S& S'5      r^ " S( S)5      r_\R                  S* 5       ra " S+ S,5      rb " S- S.5      rc " S/ S05      rd " S1 S25      re " S3 S45      rf " S5 S65      rgS}S7 jrh    S~S8 jri " S9 S:\i" 5       5      rj\jR                  5          " S; S<\V\j5      rl\lR                  5          " S= S>\i" 5       5      rm\mR                  5          " S? S@\V\m5      rn\nR                  5          " SA SB\i" SSSC95      ro " SD SE\V\o5      rp\oR                  5         \pR                  5          " SF SG\i" SSH95      rq " SI SJ\V\q5      rr\qR                  5         \rR                  5          " SK SL\i" SSSSSSM95      rs " SN SO\V\s5      rt\sR                  5         \tR                  5          " SP SQ\i" SSSSSSSSR95      ru " SS ST\V\u5      rv\uR                  5         \vR                  5          " SU SV\i" SSSSSSSW95      rw " SX SY\V\w5      rx\wR                  5         \xR                  5         SZ ry " S[ S\5      rz " S] S^\z5      r{ " S_ S`\{5      r| " Sa Sb\|\j5      r} " Sc Sd\}\l5      r~ " Se Sf\|\m5      r " Sg Sh\\n5      r " Si Sj\{\w5      r " Sk Sl\\x5      r " Sm Sn\z\s5      r " So Sp\\t5      rSq r " Sr Ss5      r " St Su5      r\R                  R                  \R                  GR                   " Sv Sw\5      5       5       r\R                  R                   " Sx Sy\5      5       rSz rg)zTest functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

    N)raises)arangezerosarraydotasarrayvstackndarray	transposediagkroninf	conjugateint8)assert_equalassert_array_equalassert_array_almost_equalassert_almost_equalassert_assert_allclosesuppress_warnings)
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)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminv)	decorator)ComplexWarningzgoogle.colabc                 8    Ub  UOU < SU< 3n[        X;   US9  g )Nz not found in )msg)r   )member
collectionr6   messages       O/var/www/html/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_base.py	assert_inr;   3   s%    _cVJnZN*SGF g.    c                 `    [        U R                  UR                  :H  5        [        X40 UD6  g N)r   dtyper   )xykwargss      r:   assert_array_equal_dtyperC   8   s$    AGGqwwq&v&r<   dokc                     S nU" U 5       H0  nU" U5       H!  n[         R                  " X45      (       d  M       g   M2     g)Nc                     / nU R                   R                  5        HF  n[        U[        R                  [        R
                  -  5      (       d  M5  UR                  U5        MH     U$ r>   )__dict__values
isinstancenpr
   genericappend)r@   arraysas      r:   _underlying_arrays3sparse_may_share_memory.<locals>._underlying_arraysB   sM     ""$A!RZZ"**455a  % r<   TF)rJ   may_share_memory)ABrO   rN   bs        r:   sparse_may_share_memoryrU   ?   s@      "#A&A""1(( ' # r<   Fc                 B  ^ ^^^^^ T c  [         R                  " S5      m O[         R                  " T 5      m U(       a  S
S jmOATb	  S
U4S jjmO5U(       a&  [         R                  R                  SS9mS
U4S jjmOS
U 4S jjmTb  U4S jm[        UUU4S	 j5       nU$ )zv
Monkeypatch the maxval threshold at which scipy.sparse switches to
64-bit index arrays, or make it (pseudo-)random.


   c                 6   [        XU5      n[        [        R                  " U5      R                  [        R                  " [        R
                  5      R                  5        [        U[        R
                  :H  =(       d    U[        R                  :H  5        U$ r>   )r-   r   rJ   iinfomaxint32r   intc)rM   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>    )rM   r]   r^   fixed_dtypes      r:   r`   ra   l   s	    r<     )seedc                 h   > [         R                  [         R                  4TR                  S5         $ )N   )rJ   r[   int64randint)rM   r]   r^   counters      r:   r`   ra   q   s$    HHbhh'(:;;r<   c                   > [         R                  nUb  UT:  a  [         R                  nU  H  n[         R                  " U5      nUR                  [         R                  :  d  M9  U(       au  UR
                  S:X  a  MR  [         R                  " UR                  [         R                  5      (       a/  UR                  5       nUR                  5       nUT* :  a  UT::  a  M  [         R                  nM     U$ Nr   )
rJ   r[   ri   r   r?   size
issubdtypeintegerrZ   min)rM   r]   r^   r?   arrminvalmaxval_limits         r:   r`   ra   t   s    HHE!L(HHEjjo99rxx'%88q=$]]399bjjAA%(WWYF%(WWYF%,66\;Q (HHE  Lr<   c                    > U R                  5       T:  a  [        S5      eU R                  [        R                  5      $ )Nzdowncast limited)rZ   AssertionErrorastyperJ   intp)rr   downcast_maxvals    r:   new_downcast_intp_index8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s0    wwy?*$%788::bgg&&r<   c           
      \  > / n[         R                  R                  [         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  /
n U H`  nUR                  US[        USS 5      45        [        UST
5        Tc  M4  UR                  US[        USS 5      45        [        UST	5        Mb     U " U0 UD6U H  u  pVnUc  M  [        XVU5        M     $ ! U H  u  pVnUc  M  [        XVU5        M     f = f)Nr-   downcast_intp_index)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_constructrL   getattrsetattr)funcrN   kwbackupmodulesmodnameoldfuncry   rz   r`   s           r:   deco%with_64bit_maxval_limit.<locals>.deco   sS   <<$$ell&7&79J9J<<$$ell&7&79J9J<<$$ell&;&;<<++U\\-D-DF	0s$5&s,=tDF G.0CD".MM3(=#*30Et#L#N OC!68OP  >b>&,"7&Cw/ '-f"7&Cw/ '-s   2F 77F 
F+F+)rc   NF)rJ   ri   randomRandomStater3   )	rt   r   rd   ry   assert_32bitr   rk   rz   r`   s	   ` ``  @@@r:   with_64bit_maxval_limitr   W   s     xx| xx-	
 
	 	 		))''T'2	< 	<	* "	'
 0 0* Kr<   c                     [        U [        R                  5      (       d  [        U 5      (       a  U $ U R	                  5       $ r>   )rI   rJ   r
   r,   toarray)rN   s    r:   r   r      s,    !RZZ  LOO99;r<   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)BinopTester   c                     gNmatrix on the rightrc   selfmats     r:   __add__BinopTester.__add__       $r<   c                     gr   rc   r   s     r:   __mul__BinopTester.__mul__   r   r<   c                     gr   rc   r   s     r:   __sub__BinopTester.__sub__   r   r<   c                     gNmatrix on the leftrc   r   s     r:   __radd__BinopTester.__radd__       #r<   c                     gr   rc   r   s     r:   __rmul__BinopTester.__rmul__   r   r<   c                     gr   rc   r   s     r:   __rsub__BinopTester.__rsub__   r   r<   c                     gr   rc   r   s     r:   
__matmul__BinopTester.__matmul__   r   r<   c                     gr   rc   r   s     r:   __rmatmul__BinopTester.__rmatmul__   r   r<   rc   N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   __static_attributes__rc   r<   r:   r   r      s*    %%%$$$%$r<   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)BinopTester_with_shape   c                     Xl         g r>   _shape)r   shapes     r:   __init__BinopTester_with_shape.__init__   s    r<   c                     U R                   $ r>   r   r   s    r:   r   BinopTester_with_shape.shape   s    {{r<   c                 ,    [        U R                  5      $ r>   )lenr   r   s    r:   ndimBinopTester_with_shape.ndim   s    4;;r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__add__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__mul__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__sub__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__radd__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__rmul__   r   r<   c                     gr   rc   r   s     r:   r   BinopTester_with_shape.__rsub__   r   r<   c                     gr   rc   r   s     r:   r   !BinopTester_with_shape.__matmul__   r   r<   c                     gr   rc   r   s     r:   r   "BinopTester_with_shape.__rmatmul__   r   r<   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r<   r:   r   r      s9     %%%$$$%$r<   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ComparisonTester   c                     g)Neqrc   r   others     r:   __eq__ComparisonTester.__eq__       r<   c                     g)Nnerc   r   s     r:   __ne__ComparisonTester.__ne__   r   r<   c                     g)Nltrc   r   s     r:   __lt__ComparisonTester.__lt__   r   r<   c                     g)Nlerc   r   s     r:   __le__ComparisonTester.__le__   r   r<   c                     g)Ngtrc   r   s     r:   __gt__ComparisonTester.__gt__   r   r<   c                     g)Ngerc   r   s     r:   __ge__ComparisonTester.__ge__   r   r<   rc   N)r   r   r   r   r   r   r   r   r   r   r   rc   r<   r:   r   r      s     r<   r   c                   V    \ rS rSrSr\r\r\	r
\r\r\r\r\" \5      rS rS rS rSrg)_MatrixMixini  z8mixin to easily allow tests of both sparray and spmatrixc                    [        U R                  R                  S5      R                  5       U R                  S/S S 24   5        [        U R                  R                  S5      R                  5       U R                  S/S S 24   5        g N   )r   datspgetrowr   datr   s    r:   test_getrow_MatrixMixin.test_getrow  sd    4::,,Q/779488QCF;KL4::,,R088:DHHbT1W<MNr<   c                    [        U R                  R                  S5      R                  5       U R                  S S 2S/4   5        [        U R                  R                  S5      R                  5       U R                  S S 2S/4   5        g r  )r   r  getcolr   r
  r   s    r:   test_getcol_MatrixMixin.test_getcol  sd    4::,,Q/779488AsF;KL4::,,R088:DHHQW<MNr<   c                    U R                  [        SSS9R                  SS5      5      n[        UR	                  5       R
                  [        R
                  " S5      5        [        UR	                  5       R                  UR                  5        [        UR                  S5      R	                  5       R
                  [        R
                  " S5      5        [        UR                  S	5      R	                  5       R
                  [        R
                  " S	5      5        UR	                  5       nUR	                  5       n[        X#L 5        g )
N   r[   r?   rh      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper?   rJ   formatrw   r   )r   rR   rS   Cs       r:   test_asfptype_MatrixMixin.test_asfptype  s    NN6!'2::1Q?@QZZ\''))<=QZZ\((!((3QXXg&//177)9LMQXXl+446<<bhh|>TUJJLJJLr<   rc   N)r   r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr.   asdenser  r  r  r   rc   r<   r:   r  r    sC    BMMMMMMM8$GOO
r<   r  c                      \ rS rSrSr\r\r\	r
\r\r\r\r\r\r\S 5       rS rS rS rS rS rS	 rS
 rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0\1Rd                  Rf                  S 5       r4S r5S r6S r7S  r8S! r9S" r:S# r;S$ r<S% r=S& r>S' r?S( r@S) rAS* rBS+ rC\DS, 5       rE\DS- 5       rF\DS. 5       rG\DS/ 5       rHS0 rIS1 rJ\DS2 5       rK\DS3 5       rLS4 rMS5 rNS6 rOS7 rPS8 rQS9 rRS: rSS; rTS< rUS= rVS> rWS? rXS@ rYSA rZSB r[SC r\SD r]SE r^SF r_SG r`SH raSI rbSJ rcSK rdSL reSM rfSN rgSO rhSP riSQ rjSR rkSS rlST rmSU rnSV roSW rpSX rqSY rrSZ rsS[rtg\)]_TestCommoni)  z6test common functionality shared by all sparse formatsc                    [        / SQ/ SQ/ SQ/S5      U l        U R                  U R                  5      U l        [	        [
        5      R                  U R                  5      U l        0 U l	        0 U l
        U R                   Hb  nU R                  R                  U5      U R                  U'   U R                  U R                  R                  U5      5      U R                  U'   Md     [        U R                  U R                  [        R                     5        [        U R                  R                  5       U R                  [        R                     R                  5       5        [!        U R                  ["        5      U l        g )N)r  r   r   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   rJ   r  r   rI   r)   is_array_test)clsr?   s     r:   
init_class_TestCommon.init_class6  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   )r3  assert_raises
ValueErrorboolr   r  )r?   r  r   s     r:   check$_TestCommon.test_bool.<locals>.checkO  sL    %%e,E*dE2DNNQC5)*u--.r<   z%Cannot create a rank <= 2 DOK matrix.)rI   TestDOKpytestskipr1  r   r=  r?   s   `  r:   	test_bool_TestCommon.test_boolN  s;    	/ dG$$KK?@((E%L )r<   c                     [        SS//5      nU R                  U5      n[        S5       H  nX"-   nX-   nM     [        XR	                  5       5        g )NTFrW   )r   r  ranger   r   )r   r
  r  _s       r:   test_bool_rollover_TestCommon.test_bool_rollover[  sN     dE]O$s#rAME)C  	30r<   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 b  > T	R                   U    nT	R                  U    nUR                  5       nSUS S 2S4'   T	R                  U5      nT	R	                  U5      nT	R                  U5      nT	R                  U5      nT	R                  U5      n[        X:H  X$:H  R                  5       5        [        X:H  XT:H  R                  5       5        [        X:H  Xd:H  R                  5       5        [        X:H  Xt:H  R                  5       5        [        X:H  X:H  R                  5       5        [        X:H  XA:H  5        [        US:H  US:H  R                  5       5        [        US:H  US:H  R                  5       5        [        U[        R                  :H  U[        R                  :H  R                  5       5        g Nr   r  )r2  r3  copyr  r!  r$  r#  r'  rC   r   rJ   nan)
r?   r
  r  dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r:   r=  "_TestCommon.test_eq.<locals>.checkj  sm    //%(C%%e,E88:DD1I^^D)F'',F'',F'',F'',F %S[5?2K2K2MN$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S[63C2L2L2NO$S]FMB$SAX
/C/C/EF$SAX
/C/C/EF$SBFF]&+rvvo%>%>%@Br<   bsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.	r   filterr(   sup_complexr  r  r@  rA  r1  r   supr=  r?   s   `   r:   test_eq_TestCommon.test_eqf  sm    !

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

*+			B 
 
	B8 ::$99KKRS((E%L )r<   c                   ^  [        5       nUR                  [        5        U[        U 4S j5       5       nT R                  R
                  S;  a  [        R                  " S5        T R                   H  nU" U5        M     g )Nc                 N  > TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      nUR	                  [
        5      nSUS S 2S4'   TR                  U5      nTR                  U5      nTR                  U5      nTR                  U5      n	TR                  U5      n
[        X:  X$:  R                  5       5        [        XS:  Xd:  R                  5       5        [        X:  Xt:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X:  X:  R                  5       5        [        X1:  XG:  R                  5       5        [        X1:  XH:  R                  5       5        [        X1:  XI:  R                  5       5        [        X1:  XJ:  R                  5       5        [        X:  X#:  5        [        XS:  Xc:  5        S HU  n[        R                  " U5      n[        X+:  R                  5       X:  5        [        X:  R                  5       X:  5        MW     [        R                  " SS9   [        U[        R                  :  R                  5       U[        R                  :  5        S S S 5        TR                   U    nTR                  U    nUR                  5       nSUS S 2S4'   TR                  U5      n[        X:  X#:  5        g ! , (       d  f       Ng= fNr         ?      ?)rh   r  r   r  ignoreinvalidr2  r3  rM  r  rw   complexr!  r#  r$  r'  rC   r   rJ   ri   errstaterN  r?   r
  r  rO  rP  
datcomplexdatspcomplexrQ  rS  rR  rT  valr   s               r:   r=  "_TestCommon.test_lt.<locals>.check  s    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %SZ%.1I1I1KL$Z%6&2&;%D%D%FH %SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$SZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$TZ&/1J1J1LM$SZ>$Z%68KL(hhsm(%+)>)>)@#)L(#+)>)>)@#)L )
 X.(%"&&.)A)A)C),rvv7 /
 //%(C%%e,E88:DD1I^^D)F %S\5<@ /.   8=L
L$rV  rZ  r[  r^  s   `   r:   test_lt_TestCommon.test_lt  sn    !

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

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

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

((a(0 WV VVs   +C
Cc                     [        [        U R                  S5        [        [        U R                  S5        [        [        U R                  S5        g )Nr  r  r  r  r  r  )r:  r;  r  r   s    r:   test_invalid_shapes_TestCommon.test_invalid_shapes  s2    j$..&9j$..&9j$..':r<   c                 `   U R                  / SQ/ SQ/ SQ/5      nUR                  S:X  a  SOUR                  S:X  a  SOSn[        UR                     u  p4U R                  (       a  S	OS
nSU SU SUR                   SUR
                   SU SUR                   S3n[        U5      U:X  d   eg )Nr  r   r   r  r   r   rk  dia(1 diagonals) rW  (blocksize=1x1)  r   r/   < sparse  of dtype ''
	with  stored elements 
and shape >)r  r  r*   r4  r?   r  r   reprr   r  extrarG  fmt
sparse_clsr  s          r:   	test_repr_TestCommon.test_repr  s    	9jAB % 5',||u'<# 	
 %,,' $ 2 2W
uHZLEKK= Aii[ 1%
5;;-qR 	 E{h&&&r<   c                 4   U R                  [        R                  " S5      R                  SS5      5      nUR                  S:X  d   e[        [        U5      R                  S5      5      S:X  d   e[        R                  " S5      R                  SS5      nU R                  U5      nUR                  S:X  a  S	OUR                  nU R                  US
S9n[        [        U5      R                  S5      5      US-   :X  d   e[        [        U5      R                  S5      5      S:X  d   eU R                  USSSSS9nU R                  USSSSS9n[        R                  " [        SS9   U R                  USSSS5        S S S 5        g ! , (       d  f       g = f)NK         2   
6   r  r     r  )maxprintrW   )r  r  iF   )r   r?   rM  r  z'positional argument|unpack non-iterabler  )r  rJ   r   r  r  r   strsplitr  r  r@  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  rW  r  r  r   r/   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r  r  r  r*   r4  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   )rJ   r?   r  tocsctocsrtocoor   r   )
r   r   mytyperN   rT   cr-  efms
             r:   test_empty_arithmetic!_TestCommon.test_empty_arithmetic  s    xx("((9*=#RXXk%:&(F u3AAAAGGIAGGIAGGIA!a]QYY[!))+aiik*ABQWWV,QYY[..v6	 #(r<   c                     [        / SQ/ SQ/ SQ/ SQ/S5      n[        [        U5      [        U R                  U5      5      R	                  5       5        g )Nr  r      r   r   r  r   r  r-  )r   r   absr  r   r   rR   s     r:   test_abs_TestCommon.test_abs  s<    ;
J	BCHSVS!23;;=>r<   c                     Sn[        SS/SS//S5      n[        [        R                  " X!S9[	        U R                  U5      US9R                  5       5        g )	Nr  ggQ?g     @1@gQr-  )decimals)ndigits)r   r   rJ   aroundroundr  r   )r   decimalrR   s      r:   
test_round_TestCommon.test_round
  sP    E4=5%.137RYYq34>>!,g>FFH	Jr<   c                    [        / SQ/ SQ/ SQ/S5      n[        [        R                  " US5      U R	                  U5      R                  S5      R                  5       5        [        [        U R	                  U5      R                  U5        g )N)r  rk  )r  r   r  rh   r  r  r-  rh   )r   r   rJ   powerr  r   r:  r  r  s     r:   test_elementwise_power"_TestCommon.test_elementwise_power  sd    <Y7=RXXa^T^^A%6%<%<Q%?%G%G%IJ 	)4>>!+<+B+BAFr<   c                     [        / SQ/ SQ/ SQ/ SQ/S5      n[        U* U R                  U5      * R                  5       5        [        / SQ/ SQ/5      n[	        [
        U R                  U5      R                  5        g )Nr  r  r  r  r-  )TFF)FFT)r   r   r  r   r:  r  __neg__r  s     r:   test_neg_TestCommon.test_neg  se    ;
J	BCHaR4>>!,,5578 ')=>?)4>>!+<+D+DEr<   c                     [        SS//5      nU R                  U5      n[        UR                  R	                  5       UR                  5        g N      ?      @y       @      )r   r  r   realr   r   DrR   s      r:   	test_real_TestCommon.test_real  ;    FF#$%NN1QVV^^%qvv.r<   c                     [        SS//5      nU R                  U5      n[        UR                  R	                  5       UR                  5        g r  )r   r  r   imagr   r  s      r:   	test_imag_TestCommon.test_imag$  r  r<   c           
         / nUR                  / SQ/5        UR                  S/S/S//5        UR                  SS/SS/SS//5        UR                  / SQ/ SQ/ SQ/5        UR                  SS/SS//5        UR                  [        US   SS//5      5        UR                  [        US   S/S//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   SS/SS	//5      5        UR                  [        US   / S
Q/5      5        U H  n[        U5      R                  u  p4U R	                  U5      n[        U* S-
  US-   5       H#  n[        UR                  US9[        X&S95        M%     [        UR                  SS9[        USS95        [        UR                  SS9[        USS95        M     [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  5       [        R                  " S5      5        [        U R	                  S5      R                  S5      [        R                  " S5      5        g )Nr  r   rh   r  r   rh   r  r   r   r  )r   r   rh   r   r  r   r  r  rh   r  r  krW   i)(   i?  r  r   r   )r  r   r   r  )rL   r   r   r   r  rF  r   diagonalr   rJ   r   empty)r   matsr  rowscols
sparse_matr  s          r:   test_diagonal_TestCommon.test_diagonal)  sg   WIaS!aSM"aUAa5!A'(WWW-.aUAa5M"Da1Q%)*Da1#qc+,Da1Q%1/0Da1Q%1/0Da1Q%1/0Da)-.AqJD*JD57DF+Z00105tA|D , ,,r,2DbMB,,s,3T!s^D  	T^^K099;RXXb\J 	T^^F+446DT^^G,557!ET^^F+44R8"((1+Fr<   c                    [         R                  " / SQ/ SQ/ SQ/5      nU R                  U5      n[        SS5       H)  n[	        UR                  US9UR                  US95        M+     [         R                  " / SQ/ SQ/5      nU R                  U5      n[        SS5       H)  n[	        UR                  US9UR                  US95        M+     g )Nr  rh   r  r  r  r  )      	   rk  r  )offsetr  )rJ   r   r  rF  r   trace)r   rR   rS   r  s       r:   
test_trace_TestCommon.test_traceJ  s    HHiI67NN1r1A*AGG1G,=>  HHi+,NN1r1A*AGG1G,=> r<   c           
         U R                  / SQ/ SQ/ SQ/ SQ/5      nS HN  nS HE  n[        UR                  X2S9R                  5       UR                  5       R                  X2S95        MG     MP     U R                  / SQ/ S	Q/ S
Q/5      nUR                  S5      n/ SQ/ SQ/n[        UR                  5       U5        UR                  S5      n[        UR                  5       U5        UR                  S5      n[        UR                  5       U5        [	        [
        UR                  S5        UR                  SS5      n[        UR                  5       U5        [	        [        UR                  SSSS9  UR                  S5      n[        XAL 5        UR                  SSS9n[        XAL5        [        UR                  S5        U R                  (       a  [	        [        SS9   SUl        S S S 5        O!SUl        [        UR                  5       U5        [	        [
        UR                  UR                  45        [	        [
        UR                  SUR                  S45        g ! , (       d  f       N]= f)N)r  r   r   r  r  )r   r   r  )r  F))   r  )r  r)  orderr   rW   r   r   r   r   r   r   r         r  rh   r  )r   rW   r   r   r   r   )r   r   r   r/  r0  r  rh   r  )r  r  r  rh   r  r  )
not_an_argr  r  TrM  zhas no setter|n't set attributer  )r  r   r  r   r:  r;  r  r   r   r4  AttributeErrorrn   )r   r@   r+  srA   desireds         r:   test_reshape_TestCommon.test_reshapeW  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 rL  )rJ   r   rq   r   r   r   r   r  )rN   vr  nr  jdense_setdiags         r:   r@  =_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag  s    

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

3&@A&@%)&@AT" >As   B"?B'c                   ^ ^	 [         R                  R                  S5        [         R                  " / SQ/ SQ/ SQ/5      n[         R                  R	                  SS5      n[         R                  " / /5      n[         R
                  " S5      n[        R                  " SSSS9R                  5       nXX4U/m	U	U 4S	 jnT R                   H&  n[        [        T	5      5       H  nU" Xx5        M     M(     g )
Nre   r   r  rh   r  r  r  r   r"  r  )r  r  g{Gz?)densityc           	        > 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        S S S 5        g ! , (       d  f       g = f)	Nr  rl  )overr  r   r  rk  r  )
r)  r  rJ   rq  r   sumr   r?   r   isscalar)r?   r?  r
  r  matricesr   s       r:   r=  #_TestCommon.test_sum.<locals>.check  s   ,,x{%,8CNN3N4E(+)#'')UYY[ASWWY__eiik.?.?@EII4I$89:)#''t'*<*/)))*>@SWW$W/55"YYDY1779)#''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 ,++s   I1J22
K )rJ   r   rf   r   randr   r   r   r1  rF  r   )
r   dat_1dat_2dat_3dat_4dat_5r=  r?   r?  rw  s
   `        @r:   test_sum_TestCommon.test_sum  s    
		t)""$ % 		q!$""Aq$/779%6	O( ((E3x=)e * )r<   c                 D   [         R                  " S5      n[        / SQ/ SQ/ SQ/5      nU R                  U5      n[	        [
        UR                  SS9  [	        [        UR                  SS9  [	        [        UR                  SS9  [	        [
        UR                  S	US
9  g Nr  r  rn  ro  rp  r  r  r   r        ?r  r  out)rJ   r   r   r  r:  r;  ru  r  r   r  r
  r  s       r:   test_sum_invalid_params#_TestCommon.test_sum_invalid_params  sy    hhvY! " s#j%))!4i8i5j%))!=r<   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 )Nrn  ro  rp  c                    > TR                  U S9nTR                  U S9n[        X5        [        UR                  UR                  5        g Nr  )ru  r   r   r?   )r?   dat_sum	datsp_sumr
  r  s      r:   r=  )_TestCommon.test_sum_dtype.<locals>.check#  s=    ggEg*G			.I%g9	8r<   r   r  r1  r   r=  r?   r
  r  s      @@r:   test_sum_dtype_TestCommon.test_sum_dtype  sH    Y! " s#	9 ((E%L )r<   c                    U R                   (       + n[        / SQ/ SQ/ SQ/5      nU R                  U5      nU R                   (       a  [        S5      O[        S//5      nU R                   (       a  [        S5      O[        S//5      nUR	                  XAS9  UR	                  US9  [        XE5        U R                   (       a  [        R                  " S5      O[        R                  " S5      nU R                   (       a  [        R                  " S5      O[        [        R                  " S5      5      nUR	                  S	XAS
9  UR	                  S	US9  [        XE5        [        [        SS9   UR	                  [        S/5      S9  S S S 5        [        [        SS9   UR	                  [        U R                   (       a  S//OS5      S9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = fNrn  ro  rp  r   )r  keepdimsr  r  r  r  r  )r  r  r  r  z"output parameter.*wrong.*dimensionr  )
r4  r   r  r/   ru  r   rJ   r   r:  r;  r   keepr
  r  dat_out	datsp_outs         r:   test_sum_out_TestCommon.test_sum_out-  sk   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	G+		i	 !'5$($6$6"((4.BHHV<L&*&8&8BHHTNfRXXfEU>V	QG3		qi	(!'5 :-QRII%*I% S:-QRII%););!CID SR SRRR   .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 Nrn  ro  rp  )r   r  rJ   ru  r   r   r?   )r   r
  r  r  r  s        r:   test_numpy_sum_TestCommon.test_numpy_sumH  s]    Y! " s#&&+FF5M	!'5W]]IOO4r<   c                 n   ^ ^ T R                   (       + mUU 4S jnT R                   H  nU" U5        M     g )Nc                 4  > [        / 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        g )Nrn  r  r  r  )r  r   r"  r  r  r  r  r   r  rk  r  )	r   r  r   meanr   r?   r   rJ   rv  )r?   r
  r  r  r   s      r:   r=  $_TestCommon.test_mean.<locals>.checkW  s"   ""$+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Lr<   )r4  r1  )r   r=  r?   r  s   `  @r:   	test_mean_TestCommon.test_meanU  s0    %%%	M< ((E%L )r<   c                 b   U R                  [        R                  " S5      5      n[        / SQ/ SQ/ SQ/5      nU R	                  U5      n[        [        UR                  SS9  [        [        UR                  SS9  [        [        UR                  SS9  [        [        UR                  S	US
9  g r  )	r)  rJ   r   r   r  r:  r;  r  r  r  s       r:   test_mean_invalid_params$_TestCommon.test_mean_invalid_paramsx  s    ll288F+,Y! " s#j%**15i&9i#6j%**1#>r<   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 )Nrn  ro  rp  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:   r=  *_TestCommon.test_mean_dtype.<locals>.check  s?    xxex,H%0J%h;)9)9:r<   r  r  s      @@r:   test_mean_dtype_TestCommon.test_mean_dtype  sH    Y! " s#	; ((E%L )r<   c                    U R                   (       + n[        / SQ/ SQ/ SQ/5      nU R                  U5      nU R                   (       a  [        S5      O[        S//5      nU R                   (       a  [        S5      O[        S//5      nUR	                  XAS9  UR	                  US9  [        XE5        U R                   (       a  [        R                  " S5      O[        R                  " S5      nU R                   (       a  [        R                  " S5      O[        [        R                  " S5      5      nUR	                  S	XAS
9  UR	                  S	US9  [        XE5        [        [        SS9   UR	                  [        S/5      S9  S S S 5        [        [        SS9   UR	                  [        U R                   (       a  S//OS5      S9  S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = fr  )
r4  r   r  r/   r  r   rJ   r   r:  r;  r  s         r:   test_mean_out_TestCommon.test_mean_out  sk   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	W,

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

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

2KN

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

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

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

s#3$*a+Azz))+,?2- c+TZZ'')1-?35**T"6>>+W5r<   c                   ^^	 [        / SQ/ SQ/ SQ/5      nU R                  U5      n[         GH1  nUR                  U5      nS Hl  nUR                  X5S9m[	        TR
                  UR
                  5        [	        TR                  5       U5        [	        TR                  UR                  5        Mn     [        TR                  USS9TL 5        TR                  USS9m	[        T	TL5        UU	4S jnTR                  S	;   a  S
 H  nU" U5        M     M  TR                  S:X  a  S H  nU" U5        M     GM  TR                  S:X  d  GM   S H  nU" U5        M     GM4     g )Ny       @      @r   r   r   y      @      @r   r  )TFr5  FTc                    > [        TU 5      n[        TU 5      n[        X5        [        XL5        SUR                  -  nX#   nX#   (       + X#'   [        X   X#   :g  5        XBU'   g )N)r   )r   r   r   r   )	attributerN   rT   r  b_iS_castedS_copieds        r:   (check_equal_but_not_same_array_attributeI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute  sc    Hi0Hi0"1(
#166Md4x%!r<   rY  rX  rW  )indicesindptrdatar  )rowcolr  r  )offsetsr  )	r   r  r+   rw   r   r?   r   r  r   )
r   r  r  r@   D_castedrM  r  r  r  r  s
           @@r:   test_astype_TestCommon.test_astypeu  s3   ##  NN1!!Axx{H%88A81X^^X^^<X--/:X__ahh7	 & HOOAEO2h>?qt4HHH,-	 "77!>I<YG "?E)!7I<YG "8E)!4I<YG "5? "r<   c                    [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        US5      (       a  SUR                  R                  l        UR                  S;   a6  SUR                  R                  l        SUR                  R                  l        [         HE  nUR                  U5      nUR                  U5      n[        UR                  UR                  5        MG     g )Nr  r   r  r  Fr  )r   r  hasattrr  r  	writeabler  r
  r	  r+   rw   r   r?   )r   r  r  r@   r  r  s         r:   test_astype_immutable!_TestCommon.test_astype_immutable  s    ##  NN11f%*AFFLL"88,,',AHHNN$(-AIIOO%!Axx{Hxx{H8 "r<   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    n[        US-  US-  R                  5       5        [        US-  US-  R                  5       5        g Nrh   L1@r2  r3  r   r   r?   r
  r  r   s      r:   r=  *_TestCommon.test_mul_scalar.<locals>.check  sW    //%(C%%e,Es1uuQw&7&7&9:s4x%*)=)=)?@r<   r0  rB  s   `  r:   test_mul_scalar_TestCommon.test_mul_scalar  "    	A %%E%L &r<   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    n[        SU-  SU-  R                  5       5        [        SU-  SU-  R                  5       5        g r  r  r  s      r:   r=  +_TestCommon.test_rmul_scalar.<locals>.check  sW    //%(C%%e,Equqw&7&7&9:tCx$u*)=)=)?@r<   r  rB  s   `  r:   test_rmul_scalar_TestCommon.test_rmul_scalar  r!  r<   c                     U R                   [        R                     n[        [        5         S U-    S S S 5        g ! , (       d  f       g = fr>   )r3  rJ   r  r:  r  )r   r  s     r:   test_rmul_scalar_type_error'_TestCommon.test_rmul_scalar_type_error  s1    !!"**-9%5L &%%s	   <
A
c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                   > TR                   U    nTR                  U    nUR                  5       nSUS'   UnXC-   n[        XTR	                  5       U-   5        XDR                  5       -   n[        UR	                  5       UR	                  5       UR	                  5       -   5        XCS   -   n[        XTR	                  5       US   -   5        g )Nr  rW  r   )r2  r3  rM  r   r   r  r?   r
  r  rN   rT   r  r   s         r:   r=  #_TestCommon.test_add.<locals>.check  s    //%(C%%e,E
AAcFAAq))+/2GGIAqyy{ yy{QYY[8: aDAq))+!"45r<   r  rB  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  rW  )r2  r3  rM  r   r   r,  s         r:   r=  $_TestCommon.test_radd.<locals>.check  sS    //%(C%%e,E
AAcFAAqaiik/2r<   r  rB  s   `  r:   	test_radd_TestCommon.test_radd  s!    	3 %%E%L &r<   c                    ^  U 4S jnT R                    H'  nU[        R                  " S5      :X  a  M  U" U5        M)     g )Nc                   > TR                   U    nTR                  U    n[        X"-
  R                  5       [        R
                  " S5      5        [        US-
  R                  5       U5        TR                  [        R                  " / SQ/ SQ/ SQ/S5      5      n[        X#-
  R                  5       XR                  5       -
  5        [        X2-
  R                  5       UR                  5       U-
  5        [        X!S   -
  XS   -
  5        g )Nr4  r   r  r   r   r  r  r   r   r   r   r!  r   r  r-  )r2  r3  r   r   rJ   r   r  r   r?   r
  r  rR   r   s       r:   r=  #_TestCommon.test_sub.<locals>.check  s    //%(C%%e,E668"((6:JK	224c:,}EsKA 	224cIIK6GH	224aiikC6GH u1v~sV|<r<   r<  r0  rJ   r?   rB  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 )Nr-  r   r7  r8  r9  r-  r  )r2  r3  r   r   r  r:  s       r:   r=  $_TestCommon.test_rsub.<locals>.check  s    //%(C%%e,Ei	)-LMi	)-LME	224sd;	*Z@sKA#		*;<!))+*;<qyy{U2AIIK#4EFuyy{2C))+4EF s1v~s1v|<r<   r<  r<  rB  s   `  r:   	test_rsub_TestCommon.test_rsub  s5    	=" %%E((%L &r<   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                 d  > TR                   U    nTR                  U    n[        US-   R                  5       U5        [	        [        SS5       Vs/ s H  o3U-  PM	     sn5      n[	        [        SS5       Vs/ s H  o3U-  PM	     sn5      n[        UR                  5       U5        g s  snf s  snf )Nr   r  r  )r2  r3  r   r   ru  rF  r   )r?   r
  r  r  sumSsumDr   s         r:   r=  $_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-r  rB  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                  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       XV-  5        [        UR                  U5      R	                  5       XV-  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   y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r"  )r   r  r   multiplyr   )	r   rR   rS   rd  Bspr  r  CspDsps	            r:   test_elementwise_multiply%_TestCommon.test_elementwise_multiply.  s-   78$%78$%nnQnnQ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                    [        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 Hi  nU H`  n UR                  5       U-  nUR                  U5      n[        U5      (       a  [        UR                  5       U5        MT  [        UU5        Mb     Mk     g ! [         a    [        [        UR                  U5         M  f = f! [         a     M  [         a    [        [        UR                  U5         M  f = f)Nr  r  r  r   )r   r"  rW  r  rh   r  )r!  r  r  )r  r  rh   )r  r  r  r  r4  r   r   N)r   rJ   onesr  r  r   r;  r:  rP  r   r  r'   )r   rR   rS   r  r  Er(  GHJKLrQ  rS  EspFspHspHsppJspJsppKsprw  
spmatricesr  r?  
dense_multsp_mults                              r:   #test_elementwise_multiply_broadcast/_TestCommon.test_elementwise_multiply_broadcastC  sL   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 **Q-G$$'(9:F'<   " !*ajj!< ! ! !*ajj!<s*   !H#>I#%II
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  r7  r8  r9  r-  r        ?r  g      ?r   rL  rM  rN  rO  r  )r  rh   r  rn  )r   rk  r  rl  )divide)ro  rn  )
rJ   rN  r   r   r  r  r   r   r   rq  )r   r  denomrR   rS   rd  rQ  s          r:   test_elementwise_divide#_TestCommon.test_elementwise_dividez  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  rh   r  )r  ru  r   )r   r  r4  r   r   r   r?   r:  r  __pow__r;  rJ   r  matrix_powerr  )r   rR   rS   exponentret_spret_nps         r:   test_pow_TestCommon.test_pow  sS   <|\JKNN1 +"6>>#3V<V\\6<<8	 + -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  r  s      r:   test_rmatvec_TestCommon.test_rmatvec  sU    NNGGIg>?!)a-Y		1LMYK !#'3+<=r<   c                 6   U R                  S/S/S//5      n[        [        U[        S5      -  5      5        [	        U[        S5      -  R                  5       S/S/S//5        [	        U[        S/5      -  [        / SQ5      5        [	        U[        S//5      -  [        S/S/S//5      5        [	        U[        R                  " S5      -  [        S/S/S//5      5        [	        U[        R                  " S5      -  [        R                  " S5      5        g )Nr  rh   r  r  r  r  r  r   r  r   )r  r   r'   r   r   r   rJ   rZ  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  )rJ   r   r  r4  r   rZ  r   r   )r   rR   rd  s      r:   -test_star_vs_at_sign_for_sparray_and_spmatrix9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrix  s    HHqcA3_%nnQ%sRWWV_'<&E&E&GK%sUQC5\'9&B&B&DaHuaSz)5+;<uqcU|+UQC!qc?-CDrwwv.@r<   c                 &   U R                  S/S/S//5      n[        5       n[        X-   S5        [        X-
  S5        [        X-  S5        [        X!-   S5        [        X!-
  S5        [        X!-  S5        [        X-  S5        [        X!-  S5        g )Nr  rh   r  r   r   )r  r   r   r   rR   rS   s      r:   test_binop_custom_type"_TestCommon.test_binop_custom_type  s    
 NNQC!qc?+MQU01QU01QU01QU12QU12QU12QU01QU12r<   c                 (   U R                  S/S/S//5      n[        S5      n[        X-   S5        [        X-
  S5        [        X-  S5        [        X!-   S5        [        X!-
  S5        [        X!-  S5        [        X-  S5        [        X!-  S5        g )Nr  rh   r  r  r   r   )r  r   r   r  s      r:   !test_binop_custom_type_with_shape-_TestCommon.test_binop_custom_type_with_shape  s    NNQC!qc?+"5)QU01QU01QU01QU12QU12QU12QU01QU12r<   c                      " S S5      nSnU R                  S/S/S//5      nU" U5      nX2-  nX4-  n[        UR                  5       UR                  5       5        [        UR                  UR                  5        g )Nc                        \ rS rSrS rS rSrg)0_TestCommon.test_mul_custom_type.<locals>.Customi  c                     Xl         g r>   scalar)r   r  s     r:   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__  s    $r<   c                     XR                   -  $ r>   r  r   s     r:   r   9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__  s    {{**r<   r  N)r   r   r   r   r   r   r   rc   r<   r:   Customr    s    %+r<   r  rh   r  r  )r  rC   r   r   r  )r   r  r  rR   r  A_scalarA_cs          r:   test_mul_custom_type _TestCommon.test_mul_custom_type  so    	+ 	+ NNQCQC=)6N:e !1!1!3S[[]CX__cjj1r<   c                     U R                  S/S/S//5      n[        5       n[        X:H  S5        [        X:g  S5        [        X:  S5        [        X:  S5        [        X:  S5        [        X:*  S	5        g )
Nr  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  rW   )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   r-  r  )	r  r   r  operatormatmulr   r   r:  r;  )r   r  rS   r  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   r  r   r   r   r   r/   r   rI   r
   r4  rJ   r:  r;  r   r   r   
atleast_2d)r   r  r  matrix_or_arraybad_vecsr@   s         r:   test_matvec_TestCommon.test_matvec5  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   r-  r0  g333333?r  r  r  r  )r/   r   r  r   r   r  r  r  r   rf   r   rF  r  r:  r;  r   r4  r   )r   rN   a2rT   aspbspcspr  wantr`  fracrR   r  r?  rH  rS   s                   r:   test_matmat_sparse_TestCommon.test_matmat_sparseT  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   r/   r   rI   r4  r
   typer   r   r   )r   rN   r  bsrT   results         r:   test_matmat_dense_TestCommon.test_matmat_dense  s    WYw/nnQ aUAa5!A'(&1Q%1qe1D*EFAWFJv2D2Dw$q'RSu-Q*	 r<   c                    [         R                  " / SQ/ SQ/ SQ/SS/SS//5      nUR                  5       nU R                  U5      nS H  nUR	                  U5      n[        UR                  U5        [        UR                  5       U5        U R                  US	-   5      R	                  U5      n[        UR                  U5        [        UR                  5       US	-   5        U R                  U5      R	                  U5      n[        UR                  U5        [        UR                  5       U5        M     S
 HP  nUR	                  U5      n[        XB5        U R                  US	-   5      R	                  U5      n[        XRS	-   5        MR     g )Nr  r   r  r  )r  r   r   r  rh   r   r  )rW  r  rX  rY  r  rD   r                @)r   dense)r   r   r   r  asformatr   r  r   )r   rR   r  r  rN   rT   r  s          r:   test_sparse_format_conversions*_TestCommon.test_sparse_format_conversions  s6   KK1QqE1Q%=AIIKNN1AF

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

6"Aq$qt$--f5AqB$' )r<   c           	         [        / SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        X5      nU R                  U5      nS HC  n[        USU-   5      nS H+  nS	 H"  n[	        U" Xx4S
9R                  5       U5        M$     M-     ME     g )Nrt  r-  r   r   r  r  rn  r  r   r  )rW  to)r  rh   r  r  )r  rh   r  r  r  r)  	blocksize)r   r   r  r   r   r   )	r   r@   rA   rR   rd  r  fnXYs	            r:   
test_tobsr_TestCommon.test_tobsr  s    9Yy1277#$InnQFdVm,B!,A qf!5!=!=!?C - " r<   c                   ^ ^ T R                   n[        R                  " / /5      nX/mUU 4S jnT R                  S5      n[	        [        R
                  " U5      R                  5       [        R
                  " [        S5      5      5        [	        UR                  R                  5       [        S5      5        [        [        UR
                  SS9  T R                   H&  n[        [        T5      5       H  nU" XV5        M     M(     g )Nc                   > [        TU   U S9nTR                  U5      nUR                  5       nUR                  5       n[        UR	                  5       U5        [        UR                  5       R	                  5       U5        [        UR                  SS9R	                  5       U5        [        UR                  UR                  5        g )Nr  r  r  )r   r  r   r   r   r   r?   )r?   r?  r
  r  rN   rT   rw  r   s         r:   r=  )_TestCommon.test_transpose.<locals>.check  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqI!''*r<   r4  r  r  r   r  )r
  rJ   r   r  r   r   r   r   r  r:  r;  r1  rF  r   )r   rz  r{  r=  r  r?   r?  rw  s   `      @r:   test_transpose_TestCommon.test_transpose  s    ">
	+ v&2<<.668<<f6	8577??,eFm<j%//:((E3x=)e * )r<   c                 H   ^  U 4S jnT R                    H  nU" U5        M     g )Nc                    > TR                   U    nTR                  U    nX-   n[        X1U-   5        X!-   n[        XAU-   5        g r>   )r2  r3  r   r?   r
  r  sum1sum2r   s        r:   r=  )_TestCommon.test_add_dense.<locals>.check  sI    //%(C%%e,E ;Dt3Y/;Dt3Y/r<   r  rB  s   `  r:   test_add_dense_TestCommon.test_add_dense  s!    	0 %%E%L &r<   c                    ^  U 4S jnT R                    H'  nU[        R                  " S5      :X  a  M  U" U5        M)     g )Nc                   > TR                   U    nTR                  U    nUR                  [        :X  a%  X-
  n[	        X1U-
  5        X!-
  n[	        XAU-
  5        g X-   U-   U-
  n[	        X1U-   5        X"-   U-   U-
  n[	        XAU-   5        g r>   )r2  r3  r?   r<  r   r  s        r:   r=  )_TestCommon.test_sub_dense.<locals>.check  s    //%(C%%e,E yyD {"4s3{"4s3 	C50"4s3-4"4s3r<   r<  r<  rB  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  rX  )r   y      @       @r  )r                 ?y             c                   > [         R                  " U [         R                  5      (       a!  TR                  TR	                  U 5      5      nO TR                  T
R	                  U 5      5      nUS:X  a  UR                  S5      nOaUS:X  a  UR                  S5      nOIUS:X  a  TR	                  U5      nO1US:X  a!  TR                  TR	                  U5      5      nO
[        5       e[        5        nUR                  [        S5        UR                  U5      nUR                  U5      nS S S 5        [         R                  " [        U5      [        U5      5      n[        [        W5      U5        [        UR                  UR                  5        [         R                  " [        U5      [        U5      5      n	[        [        W5      U	5        [        UR                  U	R                  5        g ! , (       d  f       N= f)Nr  r  scalar2r  r  r   zHTaking maximum .minimum. with > 0 .< 0. number results to a dense matrix)rJ   ro   complexfloatingr  rw   r  r;  r   r\  r(   maximumminimumr   r   r   r?   )r?   dtype2btyperR   rS   r_  max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s             r:   r=  /_TestCommon.test_maximum_minimum.<locals>.check	  si   }}UB$6$677NN;#5#5e#<=NN7>>%#89 KKN)#KKO'!NN6*("NN7>>&#9: l""$

278 		!		! % JJwqz71:6Ewu~u5ekk2JJwqz71:6Ewu~u5ekk2 %$s   09G..
G<)r  r  r  r   )rJ   r   r0  r   r  r  r?   )r   r=  r?   r  r  r  r  r  s   `    @@@r:   test_maximum_minimum _TestCommon.test_maximum_minimum  s    ((Iy)<=((Iy*=>hh	<FG	3 	3@ %%E77BJJ>EE"((5/288F+;UC F ? &r<   c                    U R                   n[        UR                  5       R                  UR                  5        [        UR	                  USS9R                  UR                  5        [        UR	                  USS9R                  UR                  5        [        UR                  5       R                  5       UR                  5       5        [        UR	                  USS9R                  5       UR                  5       5        [        UR	                  USS9R                  5       UR                  5       5        [        USUR                  -   5      n[        U" 5       UL 5        [        U" SS9UL 5        [        U" SS9R                  UR                  5        [        U" SS9R                  5       UR                  5       5        [        [        UR                  5       U5      (       + 5        g )NTr5  Fr  )	r  r   rM  r  	__class__r   r   r   rU   )r   rR   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  rW   )r)  rJ   r   r  r  zipr   r   )r   rS   rR   r@   rA   s        r:   test_iterator_TestCommon.test_iteratorF  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  rK  r  r  )r   r  rJ   rZ  r  r   r   r   r:  r;  rP  r   )r   r   rN   rT   r  r-  r  r  r  r  r  dspespfsps                 r:    test_size_zero_matrix_arithmetic,_TestCommon.test_size_zero_matrix_arithmeticM  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  rK  )r   r  r  r   r  r   r  r  toliltodoktobsr)r   r   rN   rT   r  r  spms          r:   test_size_zero_conversions&_TestCommon.test_size_zero_conversions  s    BiKKKKKKA..#Csyy{224a8syy{224a8syy{224a8syy{224a8syy{224a8syy{224a8 r<   c                    [         R                  " / SQ/ SQ/[         R                  S9n[        [        SS9   U R                  U5        S S S 5        U R                  UR                  [         R                  5      5      n[        [        SS9   U R                  U[         R                  S9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)N)g      @r   g?r  r  zdoes not support dtyper  )rJ   r   float16r:  r;  r  rw   r  )r   rN   A32s      r:   test_dtype_check_TestCommon.test_dtype_check  s    HHmY/rzzB:-EFNN1 G nnQXXbjj12:-EFNN3bjjN1 GF	 GF GFs   B6C6
C
Cc                 t   ^ ^ SS K m[        5       nUR                  [        5        UUU 4S j5       nU" 5         g )Nr   c                    > TR                   R                  5       n [        TR                  5       GHX  nTR	                  TR                  XS95      n[        U R                  UR                  5        [        U R                  5       UR                  5       5        [        U R                  UR                  5        U R                  R                  5        H  u  p4[        U[        R                  5      (       a  [        XBR                  U   5        M>  [        U[         5      (       aC  U(       a<  [        US   [        R                  5      (       a  [        XBR                  U   5        M  [#        XBR                  U   :H  5        M     GM[     g )N)protocolr   )r  rM  rF  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r  rG   itemsrI   rJ   r
   rb  r   )r  r  sploadedkeyru  pickler   s        r:   r=  &_TestCommon.test_pickle.<locals>.check  s
   JJOO%E!&"9"9:!<<U(NOU[[(..9"5==?H4D4D4FGU\\8??; !& 4 4 6HC!#rzz22*30A0A#0FG$S%00S(Q<<*30A0A#0FG'8'8'= => !7 ;r<   )r"  r   r\  r(   )r   r_  r=  r"  s   `  @r:   test_pickle_TestCommon.test_pickle  s4    !

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

<(AAE*A$QYY[!))+>AD)A$QYY[!))+>/556 Gr<   rc   N)ur   r   r   r   r   r+   r0  r%   r!  r"   r"  r   r#  r    r$  r$   r%  r!   r&  r#   r'  r   r)  classmethodr6  rC  rH  r`  re  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r%  r9  r@  markslowrQ  r[  rh  rk  r  r  r  r  r  r  r  r  r  r  r  r  r]  r  r  r  r  r  r  r  r  r  r%  r(  r.  r3  r=  rB  rI  rT  rk  rq  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r?  rJ  rP  r   rc   r<   r:   r+  r+  )  s   @"KMMMMMMMG; ;.	1#J%N=~<|8t8tY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F
> E65!F
? F67A8$ Y Y 

 

 

 

 . ..'6R#6J &H &HP 9 9		
,02<*5=n!DF%3N>
;A3"32 #>0$X>64p+(2
D 86)DV:0)84t928*';R7r<   r+  c                   ,    \ rS rSrS rS rS rS rSrg)_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NJ= f! , (       d  f       N= f! , (       d  f       N= f! [         a     N\f = f! , (       d  f       g = f)Nr4  inconsistent shapesr  zdimension mismatchunsupported operand)rJ   rZ  r  rM  r   r4  r:  r;  r  r   r   r  )r   rN   rT   r@   rA   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	%HA AAz1EF Gacc
AHAq$ 9,ABGA CBC HG GF" GF  		 CBsB   H4H1I II#
H.1
H?
I
I I #
I1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   r  	r2  r3  rJ   can_castintrM  r   r   r  r?   r
  r  rN   rT   r   s        r:   r=  6_TestInplaceArithmetic.test_imul_scalar.<locals>.checkU	  s    //%(C%%e,E {{3{;JJLQHHJQ"1iik2{{5%=JJLT	HHJT	"1iik2 >r<   r  rB  s   `  r:   test_imul_scalar'_TestInplaceArithmetic.test_imul_scalarT	  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^  ra  rd  s        r:   r=  6_TestInplaceArithmetic.test_idiv_scalar.<locals>.checkl	  s    //%(C%%e,E{{3{;JJLQHHJQ"1iik2{{5%=JJLT	HHJT	"1iik2 >r<   )r0  rJ   rb  r?   rc  rB  s   `  r:   test_idiv_scalar'_TestInplaceArithmetic.test_idiv_scalark	  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  rY  r  )r  rJ   r&   r   r   r4  r:  r  )r   rN   rT   bps       r:   test_inplace_success+_TestInplaceArithmetic.test_inplace_success	  s     NN266!9%NN266!9%^^BFF1I&	V		RZZ\2FABAIIK6	V		RZZ\2	V		RZZ\29,ABGA CBBs   E
E+rc   N)	r   r   r   r   rZ  rf  rk  ro  r   rc   r<   r:   rV  rV  	  s    6p.2r<   rV  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  r   rF  r   r  r:  rH  r  __getitem__)	r?   r  rR   r  r  r  r?  re  r   s	           r:   r=  *_TestGetSet.test_getelement.<locals>.check	  s    w  (-.A q!A''CAA2q\r1A Q3Q30 & " afu-Bz95q}}bI Cr<   r+   rJ   r?   rB  s   `  r:   test_getelement_TestGetSet.test_getelement	  s%    	J$ &E"((5/" &r<   c                 d   ^  U 4S jn[          H  nU" [        R                  " U5      5        M!     g )Nc                   > TR                  SU S9n[        5        nUR                  [        S5        U R	                  S5      US'   U R	                  S5      US'   U R	                  S5      US	'   U R	                  S
5      US'   U R	                  S5      US'   U R	                  S5      US'   U R	                  S5      US	'   S S S 5        U [
        R                  :w  a#  [        UR                  5       / SQ/ SQ/ SQ/5        S H  n[        [        UR                  US5        M!     / SQ[        / SQ5      4 H  n[        [        UR                  SU5        M!     [
        R                  " U [
        R                  5      (       d;  U [
        R                  :w  a&  S H  n[        [         UR                  SU5        M!     g g g ! , (       d  f       GN= f)Nr4  r  rU  r   r  r  r  rh   r  r  r  rX  r!  r   r  r   r  rk  r  )r   r  r   r!  )r   r   r  r   )rh   r   r   r   ))r   r  )r  r  r  r4  r  g     ^@r  )r  )r  r   r\  r(   r  rJ   bool_r   r   r:  rH  __setitem__r   r;  ro   r  r  )r?   rR   r_  re  r=  r   s        r:   r=  *_TestGetSet.test_setelement.<locals>.check	  so   uE2A"$

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

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

24UVQ$ %  =Q$C8	 %$s   A99
Brh   r  r  r!  r  r  rk  r  )r   r   r  r  r?  r  r>  s   `   @@r:   test_scalar_assign_2 _TestGetSet.test_scalar_assign_2	  sV    1	9 WhrB"eBiBir+-DAaA-r<   c                 ,   U R                  S5      n[        R                  " S5      n[        5        nUR	                  [
        S5        X4 H  nSUS'   SUS'   SUS'   M     S S S 5        [        UR                  5       U5        g ! , (       d  f       N)= f)Nr  rU  r  r  r  r  r"  r  rJ   r   r   r\  r(   r   r   r   rR   rS   r_  r  s        r:   test_index_scalar_assign$_TestGetSet.test_index_scalar_assign	  s}    NN6"HHV CJJ.0QRV###  ! 	199;* ! s   0B
Brc   N)
r   r   r   r   r|  r  r  r  r  r   rc   r<   r:   rr  rr  	  s    #,##J#"	+r<   rr  c                       \ rS rSrS rSrg)
_TestSolvei
  c                    Sn[         R                  R                  S5        [        X4[        S9n[         R                  R                  U5      n[         R                  R                  US-
  5      S[         R                  R                  US-
  5      -  -   n[         R                  R                  U5      n[        [        U5      5       H  nX6   X&U4'   M     [        [        U5      5       H"  nXF   X&US-   4'   [        XF   5      X&S-   U4'   M$     U R                  U5      n[        5        nUR                  [        S5        [        U5      R                  U5      nS S S 5        [        X#-  U5        g ! , (       d  f       N= f)Nr/  r   r  r  r  r  )rJ   r   rf   r   rp  ry  rF  r   r   r  r   r\  r(   r0   solver   )r   r>  rR   r@   rA   rH  r  r_  s           r:   
test_solve_TestSolve.test_solve
  s,    
		q1%w'IINN1IINN1Q3299>>!A##6 66IINN1s1vATAcF s1vAtA!eH Ac!eH  NN1 CJJ.?AQa A ! 	AE!$	 ! s   /1E77
Frc   N)r   r   r   r   r  r   rc   r<   r:   r  r  
  s    %r<   r  c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	5      S
 5       rS rS rS rS rS rSrg)_TestSlicingi
  c                 <   [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R
                  S9SSS24   R                  [        R
                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        [        U R                  S[        R                  S9SSS24   R                  [        R                  5        g )Nr  rW   r  r   r  r  )r   r  rJ   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 )NrE  r  r   rh   rJ   r  r[   r  r  r  r   r?   r   dtrR   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  rW   rn  r   r  rh   r  rh   r  r  r   r  r  r  r  r  r   r   rk     r  r   )r)  r   r  r  r4  r   r   r:  rH  ry  slice)
r   rS   rR   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  rW   rn  r   r  rh   r  r  r  r  r  r_  r  rk  r  r  r   )r   r  r  r4  r   r   r   r:  rH  ry  r  )
r   rS   rR   c0c1c2r  r  r[  r(  s
             r:   test_get_vert_slice _TestSlicing.test_get_vert_sliceD
  s   3K2&NN1"&"4"4YA3aS/
1QqS"W:q1ay'8'8':;1QU8Qq!tW__%679iI>?NN11QqS"W:q1ay'8'8':;1QU8Qq!tW__%67 9iI>?NN11QU8Qq!tW__%671RS"W:qay'8'8':; 	j!--%+r1BCj!--!U1a[1ABr<   c                 d   [        S5      R                  SS5      nU R                  U5      n[        USS2SS24   R	                  5       USS2SS24   5        [        USS 2S S24   R	                  5       USS 2S S24   5        [        US S2SS 24   R	                  5       US S2SS 24   5        [        / S	Q/ S
Q/ SQ/ SQ/5      nU R                  U5      n[        USS2SS24   USS2SS24   R	                  5       5        [        US S 2SS 24   US S 2SS 24   R	                  5       5        g )Nr  r  rW   rh   r   r  r  r  r_  r  r  r  )r   r  r  r   r   r   )r   rS   rR   r[  r(  s        r:   test_get_slices_TestSlicing.test_get_slicesZ
  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   r0  r  feature not implemented)	rJ   r   ry  r  r;  r@  rA  r   r   )r   v0r=  s      r:    test_non_unit_stride_2d_indexing-_TestSlicing.test_non_unit_stride_2d_indexingg
  s    YY^^B#	9r"1R61R6>2A
 	199;1R61R6>(:;	  	9++788	9s   A$ $!Bc                    U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US   US   5        [	        US   US   5        [	        US   US   5        [	        U[        S5      S4   US   5        [	        US[        S5      4   US   5        [	        U[        S5      [        S5      4   US   5        [	        US	S S 24   R                  5       US	S S 24   5        [	        US	SS24   R                  5       US	SS24   5        [	        U[        S	5      SS24   R                  5       US	SS24   5        [	        US S 2S	4   R                  5       US S 2S	4   5        [	        US
S2S4   R                  5       US
S2S4   5        [	        USS2S4   R                  5       USS2S4   5        [	        US	S2S
4   R                  5       US	S2S
4   5        [	        US	S2[        S
5      4   R                  5       US	S2S
4   5        [	        USS	2SS	24   R                  5       USS	2SS	24   5        [	        USS 2S
S 24   R                  5       USS 2S
S 24   5        [	        US S2S S24   R                  5       US S2S S24   5        [	        US	S2S S24   R                  5       US	S2S S24   5        [	        USS S 24   R                  5       USS S 24   5        [	        USS S 24   R                  5       USS S 24   5        [	        U[        S5      S S 24   R                  5       USS S 24   5        [	        USS R                  5       USS 5        [	        USS R                  5       USS 5        [        [        S	5      [        S5      S 5      n[	        X#S S 24   R                  5       US	S2S S 24   5        [	        US S 2U4   R                  5       US S 2S	S24   5        g )Nr  r  rW   r  r  r  r  rk  rh   r  r  r"  r  r  )	r)  r   r  r  r   r   r   r  r   )r   rS   rR   r7  s       r:   test_slicing_2_TestSlicing.test_slicing_2r
  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  rW   rh   r  r  r  r/  r!  r  r  rk  r   r  r  c                    > TU    nTU    nUR                   S:X  a  [        X[        U 5      5        g UR                  S:X  a  UR                  S:X  a  g [	        UR                  5       U[        U 5      5        g Nrc   r   )r   r   r  rn   r   r   )rN   r@   rA   rR   rS   s      r:   check_1,_TestSlicing.test_slicing_3.<locals>.check_1
  s\    !A!Aww"}Q47+66Q;166Q;&qyy{AtAw?r<   c                   > [        U [        R                  5      (       a  [        U 5      nOU n[        U[        R                  5      (       a  [        U5      nOUnTX4   nTX#4   nUR                  S:X  a  [        XE[        X45      5        g UR                  S:X  a  UR                  S:X  a  g [        UR                  5       U[        X45      5        g r  )
rI   rJ   r
   rc  r   r   r  rn   r   r   )rN   rT   aibir@   rA   rR   rS   s         r:   check_2,_TestSlicing.test_slicing_3.<locals>.check_2
  s     !RZZ((V!RZZ((V!$A"&	Aww"}Q4<066Q;166Q;&qyy{AtQF|Dr<   )
Nr   r  rh   r  r  r  rk  r  i)r)  r   r  r  rJ   s_r   r   	enumerate	itertoolsproductrL   r  )r   r  slicesr  r?  rN   r  r  rT   extra_slicesr  rR   rS   s              @@r:   test_slicing_3_TestSlicing.test_slicing_3
  s   LL++Ab12NN1UURa&"Qq'2ab62add8R)R!WQqV*bBiEQrEQ1r!AwB)RWWR[	*		@ f%DAAJ &	E0 f%DA!&) * &
  (( -= ,>>?,@ BGA!AvaA/	B AAMArNBN r<   c                 N   U R                  [        S5      R                  SS5      5      nU R                  U5      nUS   R                  S:X  d   eUS SSS24   R
                  S:X  d   eUS	   R
                  S
:X  d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   eUS SS S 24   R
                  S:X  d   eUSS S S 24   R
                  S:X  d   eUSS S 2S 4   R
                  S:X  d   eUS SS2S4   R
                  US SS2S4   R
                  s=:X  a  S:X  d   e   eUSS2S S4   R
                  USS2S S4   R
                  s=:X  a  S:X  d   e   eUSS2SS 4   R
                  USS2SS 4   R
                  s=:X  a  S:X  d   e   eUS SSS24   R
                  US SSS24   R
                  s=:X  a  S:X  d   e   eUSS SS24   R
                  USS SS24   R
                  s=:X  a  S:X  d   e   eUSSS2S 4   R
                  USSS2S 4   R
                  s=:X  a  S:X  d   e   eU R                  (       a  USS2S4   R
                  USS2S4   R
                  s=:X  a  S:X  d   e   eUSSS24   R
                  USSS24   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S:X  d   e   eg USSS24   R
                  USSS24   R
                  s=:X  a  S:X  d   e   eUSS2S4   R
                  USS2S4   R
                  s=:X  a  S:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eUS   R
                  US   R
                  s=:X  a  S
:X  d   e   eg )Nr  r  rW   r  r   r  rh   r  )Nr  rh   Nr  )Nr  r  )r  N)rW   r  r  rh   r  )rh   )Nr  rh   )r  )r  Nrh   )r  rh   N)r)  r   r  r  r   r   r4  )r   rS   rR   s      r:   test_None_slicing_TestSlicing.test_None_slicing
  s   LL++Ab12NN1w||q   q!A#$$...!"((F222 z7***z7***q!}""g---D!}""g---At}""g---qsA$$$!Q,(=(=GGGGGG1dA$$!A#tQ,(=(=GGGGGG1a$$!A#q$,(=(=GGGGGGq!A#$$$1Q3,(=(=GGGGGGD!A#$$!T1Q3,(=(=GGGGGGAaC$$!QqS$,(=(=GGGGGG QqS!V9??a!Qioo======Q!V9??a1Q3ioo======Z=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEQ!V9??a1Q3ioo??????QqS!V9??a!Qioo??????Z=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGr<   c                    U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [	        US   R                  5       US   5        [        R                  " [        S	S
9   US     S S S 5        [        R                  " [        SS
9   US     S S S 5        [        R                  " [        S	S
9   UR                  S     S S S 5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        US S2S4   R                  5       US S2S4   5        [	        USS S24   R                  5       USS S24   5        [	        US S2S4   R                  5       US S2S4   5        [	        USS S24   R                  5       USS S24   5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        USS 2S4   R                  5       USS 2S4   5        [	        USSS 24   R                  5       USSS 24   5        [	        USS 2SS4   R                  5       USS 2SS4   5        [	        USSSS 24   R                  5       USSSS 24   5        [	        USSSS 24   R                  5       USSSS 24   5        [	        US S2SS4   R                  5       US S2SS4   5        [	        USSS S24   R                  5       USSS S24   5        [	        USSS S24   R                  5       USSS S24   5        [        US   US   5        [        US   US   5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)Nr  r  rW   .).)r  .).r  ).r  zindex .5. out of ranger  )r  .zindex .10. out of range).rW   r  rh   )r  r  .)r  .r  )r)  r   r  r  r   r   r@  r   rH  r  r   r   rT   rN   s      r:   test_ellipsis_slicing"_TestSlicing.test_ellipsis_slicing  s   LL++Ab12NN11S6>>+QsV41T7??,ag61V9,,.&	:1V9,,.&	:1V9,,.&	:]]:-EFfI G]]:-FGgJ H]]:-EFCCK G 	1QRW:--/12s7<1S!"W:--/37<1RaRW:--/2A2s7<1S"1"W:--/37< 	1RaRW:--/2A2s7<1S"1"W:--/37<1QRW:--/12s7<1S!"W:--/37<1RS#X;..0!BCH+>1S"#X;..0!CH+> 	1QRCZ=002Aab!SjMB1QQRZ=002AaabjMB1S!QRZ=002AaabjMB1RaRCZ=002Abqb!SjMB1QRaRZ=002AabqbjMB1S!RaRZ=002AabqbjMBQy\1Y<0Qy\1Y<0; GFGGFFs$   5PPP0
P
P-0
P?c                    U R                  [        S5      R                  SS5      5      nU R                  U5      n/ SQnS/S-  U-   nX3-   nU/S-  n[	        [        X&S4   5      XS4   5        [	        [        USU4   5      USU4   5        [	        [        X#S4   5      XS4   5        [	        [        USU4   5      USU4   5        [	        [        X#SU4   5      XSU4   5        [	        [        USX44   5      USX44   5        [	        [        X#US4   5      XUS4   5        [        [        SS9   X#U4     S S S 5        g ! , (       d  f       g = f)	Nr  r  rW   )TFTFTF.zshape mismatchr  )r)  r   r  r  r   r   r:  r;  )r   numpy_arN   ix5ix10
ix10_6Truefull_ixs          r:   test_ellipsis_fancy_bool%_TestSlicing.test_ellipsis_fancy_bool/  sR   ,,vbz11!R89NN7#.w{S Y
&1*71c\?3Wc\5JK71S'\?3WS'\5JK71#X;/c1BC71S$Y<0'#t)2DE71#t^#45wC~7NO71S#^#45wsC~7NO71$^#45wD#~7NO:-=>:o ?>>s   6E
Ec           	         U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        US/S4   R                  5       US/S4   5        [	        USS/S4   R                  5       USS/S4   5        [	        USS/4   R                  5       USS/4   5        [	        USSS/4   R                  5       USSS/4   5        [	        US/SS4   R                  5       US/SS4   5        [	        USS/SS4   R                  5       USS/SS4   5        [	        US/SS4   R                  5       US/SS4   5        [	        USS/S4   R                  5       USS/S4   5        [	        [        USS/SSS/4   5      USS/SSS/4   5        [	        [        USSS/SS/4   5      USSS/SS/4   5        g )Nr  r  rW   r  .rh   r  )r)  r   r  r  r   r   r  s      r:   test_ellipsis_fancy_slicing(_TestSlicing.test_ellipsis_fancy_slicingE  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  r@  r   rH  r   rN   s     r:   test_multiple_ellipsis_slicing+_TestSlicing.test_multiple_ellipsis_slicingV  s    NN6!9,,Q23]]:!KMhKM ]]:!KMkNM MM MM Ms   A:+B:
B
Brc   N)r   r   r   r   r  r  r  r  r  r  r  r@  rS  	fail_slowr  r  r  r  r  r  r   rc   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)_TestSlicingAssignia  c                 n   U R                  S5      n[        R                  " S5      n[        5        nUR	                  [
        S5        X4 H3  nSUSS2S4'   SUSS2S4'   SUSS2S4'   SUSSS 24'   SUSS S2SS 24'   M5     S S S 5        [        UR                  5       U5        g ! , (       d  f       N)= f)	Nr  rU  r  r   r  r  r"  r  r  r  s        r:   test_slice_scalar_assign+_TestSlicingAssign.test_slice_scalar_assignb  s    NN6"HHV CJJ.0QRV!A#a%!A#a%!A#a%!AB$!%R%(  ! 	199;* ! s   AB&&
B4c                    ^ ^^ Su  mmUUU 4S jnS[        S5      4S[        S SS5      4S[        SS5      4[        S5      [        SS5      44 H  u  p#U" X#5        M     g )	Nr  c                 ,  > SU < SU< 3nTR                  TT45      n[        5        nUR                  [        S5        SX0U4'   S S S 5        [        R
                  " TT45      nSXPU4'   [        UR                  5       XRS9  g ! , (       d  f       NE= f)Nzi=z; j=rU  r  rD  )r  r   r\  r(   rJ   r   r   r   )	r  r?  r6   rR   r_  rS   r  r>  r   s	         r:   r  9_TestSlicingAssign.test_slice_assign_2.<locals>._test_setr  s    qe4u%C1v&A"$

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

 	QaSzAq6)*224a!qc
QF8J6KLtbTB4 1b')*224tbTB4 1b')*	
 	ebTB4"&'!R0199;tbTB4 1b')*	
 	tbTB4 %B.0199;tbTB4 1b')*	
 	ebTB4"&'2w78@@BtbTB4 1b')*	
 	Q1vY&&(!QF)4QBx[((*Ar2hK8Qub"X'//11b"X;? 	QsAvYq1#v&..0!QCF)AsF2CDq!faiLQF#++-q!Q|A1vI/F	
 	r2hkN1q"g:&..0!RHaK.QG2L	
 	eRHoq !!UAr7^"34<<>r2hkN1q"g:&	
 	a1a&kNQF8Q;'//11Q!Q[>Aq6(A+3N	
 	a2r(mq"gY\*224aRH:6FByRS|6T	
 ]]:-KLbqbAq6(lO M]]:-KL1vhlO M 	a!QiL!Q#++-qQF|QFAI/F	
 	a"bkNAr7A:&..0!ABxK.!R!2L	
 	aBx !%B.!"34<<>a"bkNAr7A:&	
 $q'$q'$'Q!tW__&!A#q&	2Qq!tW__&!QqS&	2 HHqcU#&Q!tW__&Q$0 	QtbTz]**,ard
m<9 MLLLs   
h18i1
i 
ic                 p   [         R                  R                  S5        SnSnSnU R                  [         R                  R	                  X#5      5      n[         R
                  " XDS:  5      n[         R                  R                  U* S-   X!S9n[         R                  R                  U* S-   X1S9nU R                  U5      nXuU4   n[        U5      (       a  UR                  5       n[        XXV4   5        XR-   n	Xc-
  n
[        [        UR                  X45        [        [        UR                  XZ45        g )Nre   r  r  r  rn  r  rC  )rJ   r   rf   r)  ry  rP  rj   r  r'   r   r   r:  rH  ry  )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  rJ   rZ  r<  r  r  r  rI   r@  r   rH  )r   r  r  rS   rR   row_long	row_shortcol_long	col_shortr  r  r?  rG  s                r:   test_missized_masking(_TestFancyIndexing.test_missized_masking  s   LL..q45NN1 771q5-GGAE.	771q5-GGAE.	8%%%+.%+.
DA !U##
1e(<(<z7dG 87
 87s   *D>>
E	c                    [         R                  R                  S5        U R                  [	        S5      R                  SS5      5      nU R                  U5      n[         R                  " [         R                  R                  SSSS9[        S9n[         R                  " [         R                  R                  SSSS9[        S9n[         R                  " [         R                  R                  SSS	S9[        S9n[        [        X#   5      X   5        [        [        US S 2U4   5      US S 2U4   5        [        [        X%   5      X   5        [        [        X!S
:     5      XS
:     5        [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        X#U4   5      XU4   5        [         R                  " S[        S9n[         R                  " S[        S9nSUS'   [         R                  " S[        S9nSUS'   [        [        UR                  U5        [        [        UR                  U5        [        [        UR                  U5        [        [        [         4UR                  US45        g )Nre   r  r  rW   r   rh   rC  r  r  r"  )TFTTF)
FTTFTFFFFF)r  r  Tr  )r  r   r  )rJ   r   rf   r)  r   r  r  r   rj   r<  r   r   r   r:  rH  ry  r;  )	r   rS   rR   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 )Nre   r  r  rW   r   rh   r  rC  r  r"  )r  r  )r  rW   r  )rJ   r   rf   r)  r   r  r  r   rj   r<  r$  r   r   r:  rH  ry  r;  )	r   rS   rR   r  XspZr  ZspYsps	            r:   "test_fancy_indexing_sparse_boolean5_TestFancyIndexing.test_fancy_indexing_sparse_boolean  sG   
		tLL++Ab12NN1HHRYY&&q!'&:$G  #WQV_ad+WQ1uX&a%1HHRYY&&q!'&:$GHHRYY&&q!'&:$G  #  #j!--5j!--5z:.QxHr<   c                     U R                  [        / SQ/ SQ/ SQ/5      5      n[        R                  " UR	                  S5      5      S:  n[        US S 2U4   R                  5       SS/SS/SS//5        g )Nr  r  r   r  )r  r   rJ   ravelru  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:  r;  r  rJ   r   s     r:   test_fancy_indexing_seq_assign1_TestFancyIndexing.test_fancy_indexing_seq_assign  s@    nnUQFQF#345j#//6288QqE?Kr<   c                 (   U R                  [        SS/SS//5      5      n[        5        nUR                  [        S5        USS/SS/4   USS/SS/4'   S S S 5        [        [        U5      [        SS/SS//5      5        g ! , (       d  f       N3= f)Nr  r   rh   r  rU  )r  r   r   r\  r(   r   r   )r   r   r_  s      r:   test_fancy_indexing_2d_assign0_TestFancyIndexing.test_fancy_indexing_2d_assign  s    nnUQFQF#345 CJJ.0QR"%q!fq!fn"5CAA ! 	WS\51a&1a&)9#:; ! s   +B
Bc                 `   U R                  [        S5      R                  SS5      5      nSUSS S 24'   SUS S 2S4'   SUS'   U R                  U5      n[        R
                  " / SQ5      n[        [        X#   5      X   5        [        R
                  " / [        S	9n[        [        X#   5      X   5        [        [        X#U4   5      XU4   5        [        R
                  " / S
Q[        S	9S S 2S 4   n[        [        X#U4   5      XU4   5        [        [        X$U4   5      XU4   5        g )Nr  r  rW   r   r  rh   r  r  FFFFFr  r   r  rh   r  r  	r)  r   r  r  rJ   r   r   r   rc  r   rS   rR   r_  r^  s        r:   test_fancy_indexing_empty,_TestFancyIndexing.test_fancy_indexing_empty  s    LL++Ab12!A#!A##NN1HH89WQT]AD)HHRs#WQT]AD)WQ!tW%qAw/HH_C048WQ!tW%qAw/WQ!tW%qAw/r<   rc   N)r   r   r   r   r   r  r$  r'  r/  r6  r<  rC  rH  rK  rN  rV  r   rc   r<   r:   r  r    sE    -1{=z<4,G@I.O
L<0r<   r  c              #      #    [        U S5      (       a  U R                  (       d  Sv   gSv   U R                  R                  5       nSU l        U R	                  5         [        XR                  S5        g7f)zIChecks that sorted indices property is retained through an operation
    has_sorted_indicesNFz'Expected sorted indices, found unsorted)r  rY  r	  rM  sort_indicesr   )r  r	  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  r"  rh   r#  )r  rJ   r   r:  rH  r;  r  r  r  s     r:   test_bad_index_assign._TestFancyIndexingAssign.test_bad_index_assign  sQ    NN288QF+,z:y91==%QRSz:y91==*VWXr<   c                 T  ^ ^^ Su  mmUUU 4S jnS[        S SS5      4[        R                  " S5      [        SS5      4[        S	S5      [        SS5      44 H  u  p#U" X#5        M     [        R                  " S5      [        R                  " S5      4S
4 H  u  p#U" X#5        M     g )Nr  c                   > TR                  TT45      nTR                  [        R                  " TT45      5      n[	        5        nUR                  [        S5        SX0U4'   [        U5         SX U4'   S S S 5        S S S 5        [        UR                  5       U5        g ! , (       d  f       N1= f! , (       d  f       N:= fNrU  r  )
r  r)  rJ   r   r   r\  r(   r[  r   r   )r  r?  rR   rS   r_  r  r>  r   s        r:   _test_set_sliceI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_slice%  s    1v&ARXXq!f-.A"$

24UVQ$)!,AdG - %
 &aiik15 -, %$s$   (B1.B 5B1 
B.	*B11
B?r  rW   r  r  r  rk  rh   )r  r  )r  rJ   r   r   rd  r  r?  r  r>  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                 V  > TR                  SU S9n[        5        nUR                  [        S5        U R	                  S5      USS/SS/4'   [        UR                  5       U R	                  S5      S-  5        U R	                  S5      USS2SS24'   [        UR                  5       U R	                  S5      S-  5        U R	                  S5      US	'   [        UR                  5       U R	                  S5      S-  U R	                  S5      -   5        S S S 5        g ! , (       d  f       g = f)
Nr  r  rU  r  r   rh   r  r  rF  )r  r   r\  r(   r  r   ru  r  s      r:   r=  D_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.check7  s    vU3A"$

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

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

24UVQ$ +>( RXXq!f-.AAdG%aiik15 +>*=((s"   B1B B1 
B.	*B11
B?r  rh   r  r   r  r  r   rh   r  )r   r  r  )r  r  rh   )rJ   r   rf  s   `   @@r:    test_fancy_indexing_multidim_set9_TestFancyMultidimAssign.test_fancy_indexing_multidim_set  s    1	6 hhAA/01a&91a&)QFQF+;<#Y/)Y1GHJDA A!Jr<   c           	      >   [         R                  R                  S5        U R                  [         R                  R	                  SS5      5      nU R                  U5      n[         R                  R	                  SS5      n/ SQ/ SQ/n/ SQ/ S	Q/nX2XE4'   X1XE4'   [        UR                  5       U5        U VVs/ s H  of Vs/ s H  owS-   PM	     snPM     nnnU V	V
s/ s H  o V
s/ s H  oS-   PM	     sn
PM     nn	n
/ SQnXXE4'   XXE4'   [        UR                  5       U5        SX$U4'   SXU4'   [        UR                  5       U5        [        [        UR                  X4U5        [        [        UR                  XK4U5        g s  snf s  snnf s  sn
f s  sn
n	f r  )rJ   r   rf   r)  ry  r  r   r   r:  rH  r  )r   r  r  r  r+  r^  r  iir-  r?  jjr.  r  s                r:   test_fancy_assign_list/_TestFancyMultidimAssign.test_fancy_assign_list  sT   
		tLL1-.NN1IINN1a 	"	"!#!#QYY[!$/01q!1%1Rq&1%q1/01q!1%1Rq&1%q1!#!#QYY[!$A#A#QYY[!$j!--%A>j!--!A> &1%1s0   9	FF	F	F(F6F	FFc                    [         R                  R                  S5        U R                  [         R                  R	                  SS5      5      nU R                  U5      n/ SQn/ SQnU Vs/ s H  oUS-   PM	     nnU Vs/ s H  owS-   PM	     nn/ SQn	[         R                  " S5      S S 2S 4   n
[        [        UR                  U[        S 5      4U	5        [        [        UR                  [        S 5      U4U
5        g s  snf s  snf )Nre   r  r   )r  rh   r  r  r  rh   )r  r  r  rh   r  r  )r  rh   r  r  r  r  r   )rJ   r   rf   r)  ry  r  r   r:  rH  r  r  )r   r  r  r+  r^  r  r-  r  r.  C1C2s              r:   test_fancy_assign_slice0_TestFancyMultidimAssign.test_fancy_assign_slice  s    
		tLL1-.NN1"#$!Ba!$"#$!Ba!$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,D  Drc   N)	r   r   r   r   r  r  r  r  r   rc   r<   r:   r  r    s    ?B""?:Kr<   r  c                   f    \ rS rSrSrS r\R                  R                  S5      S 5       r	S r
Srg)	_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<   r/  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)Nrl  rm  r<  )_TestArithmetic__arith_initr   r   r+   rJ   rq  rw   r  ro   r  r  r   r?   r   r  r  r  r  r@   rR   rd  rA   rS   rQ  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)Nrl  rm  g+=)atol)r  r   r  r   r+   rJ   rq  rw   r  ro   r  r  r   r  rZ   r   r?   r  s                r:   test_mu_TestArithmetic.test_muW  s/   !%!2!2!4% 	EGGO446%%K	) "!AX.JJqM /..#C%==B$6$677

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

b%*3r7;;=%8:RXXbhh/ &	 ".. 76s   $F(F(
F%	(
F6rc   N)r   r   r   r   r   r  r@  rS  r  r  r  r   rc   r<   r:   r  r    s5    &0 [[2)/ )/V0r<   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
_TestMinMaxir  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* n[        UR                  5       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 )Nr/  r  r  r  r      r  iir  rW   r  r  rh   r  r   rW   rW   r   )rJ   r  r  r[   ri   r  r   r  r  r   rq   rZ   r?   r   r  r:  r;  )r   r?   r  r  r@  s        r:   test_minmax_TestMinMax.test_minmaxs  s|   jj"**bhh"--PE		"E*221Q7Aq!A!$"%..GAq!A#&!$FAq!A#&!$# Q( NN299Q+33Aq9:QUUWa QUUW]]AGG,BQUUWb! 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 H  nUSS S 24   nUSS S 24   n	U R                   (       d  US SS S 24   nUS SS S 24   n	[        UR                  USS9R                  5       U5        [        UR                  USS9R                  5       U	5        M     U H  nUS S 2S4   nUS S 2S4   n	U R                   (       d  US S 2SS 4   nUS S 2SS 4   n	[        UR                  USS9R                  5       U5        [        UR                  USS9R                  5       U	5        M     U R                  [        R                  " S5      5      nU R	                  U5      nXE-    Hm  n[        UR                  USS9R                  5       UR                  US95        [        UR                  USS9R                  5       UR                  US95        Mo     U R                  [        R                  " S5      5      nU R	                  U5      nSS/n
[        [         R"                  " XJ5      5      n[        [         R"                  " XZ5      5      nU H7  u  pm[%        [&        UR                  XmS9  [%        [&        UR                  XmS9  M9     U Hm  u  pm[        UR                  XmS9R                  5       UR                  US95        [        UR                  XmS9R                  5       UR                  US95        Mo     U R                  [        R                  " S5      5      nU R	                  U5      nU H7  u  pm[%        [&        UR                  XmS9  [%        [&        UR                  XmS9  M9     U Hm  u  pm[        UR                  XmS9R                  5       UR                  US95        [        UR                  XmS9R                  5       UR                  US95        Mo     g )Nr  r  rW   r   r  r"  r  r  rF  rk  r  r  Tr  explicit)
r  )   ru  +   ,   -   .   /   0   r   )
r/  r  r  r  r  r  r   r   r!  r   )
r/  r  r  r  r  r  r  r   r!  r   )r!  r      &   r  )r  r   r  r0  r  rM  3   )rW   r  r  Fr  )r4  rJ   r   r  r  r   rZ   r   rq   r   r)  anyr  r   r   r  r  r  r:  r;  )r   r  r  r  	axes_evenaxes_oddr  r  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r:   test_minmax_axis_TestMinMax.test_minmax_axis  s   %%%IIbM!!!R(!Q$!Q$$$NN1G	r7(D4 ((*AEEtE,K 4 ((*AEEtE,K	 ) D4$/779DE vvaffk""<<(HI<<(HID48@@BHM  D88$67L88$67L%%+33F;+33F;D48@@BLQD48@@BLQ  IIa$$R+NN1(D4 ((*AEEtE,K 4 ((*AEEtE,K	 ) 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           	         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/ SQnU H  nUR                  US9n[        UR                  5       [        R                  " XS95        [        XpR                  5      (       d   eUR                  US9n[        UR                  5       [        R                  " XS95        [        XR                  5      (       a  M   e   g )Nr  r  rW   r  r   r  r"  r  r  rF  r  )r  r  )rk  r  r   r  r  )r)  rJ   r   r  r  rN  r  nanmaxrv  nanminr   r   rI   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
{{=))))		!,,,
{{=))))		!,,,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 HK  n[        X#5      n[        [        USS9  [        [
        USS9  [        [
        USS9  [        [        US	S	S
9  MM     g )Nrn  ro  rp  )rq   rZ   r  r  r  r  r  r  )r   r  r   r:  r;  r  )r   r
  r  fnamer   s        r:   test_minmax_invalid_params&_TestMinMax.test_minmax_invalid_params#  so    Y! " s##E5(D*d3)T7)T4*d: $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   _datarn  ro  rp  )
scipy.sparser  r   r  rI   _minmax_mixinr   rJ   rq   rZ   )r   r  r
  r  s       r:   test_numpy_minmax_TestMinMax.test_numpy_minmax0  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                  [        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  rk  )r  rk  r  r  r  )r  rh   r   r   r  r  r   r  )r  r  r  )r  r"  rW   )r  r  r"  r  r  r  rK  TFrL  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  rh   r  rM  rF  )r  r  rJ   r   r   r)  r  rI   r  r   argmaxargminr  r  r  r   r@  r   r;  r4  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_argmaxB  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 &  ^^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   	T=:U1U"#U3=
U	
U	"
U03
Vrc   N)r   r   r   r   r  r  r  r  r  r  r   rc   r<   r:   r  r  r  s&    --^cTJ@8;;$M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  rq  r"  r  r  rk  r  )r   rw   r<  r  rJ   r[   ri   r4  r  getnnzr   ru  r;   r?   r:  r;  )r   r
  bool_datr  accepted_return_dtypesr  s         r:   test_getnnz_axis _TestGetNnzAxis.test_getnnz_axis  s_   aVV!W  ::d#s#"$((BHH!5(,(:(:$$8<<T<2F4EF8<<>6848<<Q</Q@&a.&&(>?8<<Q</Q@&a.&&(>?8<<R<0&b/B&b/'')?@8<<R<0&b/B&b/'')?@j&q1r<   rc   N)r   r   r   r   r  r   rc   r<   r:   r  r    s    2r<   r  c                    U(       a  U $ S n[        U R                  5      nU R                  R                  5        H'  u  pEUR                  S5      (       d  M  U" U5      X4'   M)     [	        U R
                  S-   U R                  U5      $ )zy
Construct a class that either runs tests as usual (require=True),
or each method skips if it encounters a common error.
c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                     >  T" U 0 UD6$ ! [         [        [        [        [        4 a    [
        R                  " S5      ef = f)Nr  )r  r  r;  rH  r6  r@  rA  )rN   r   fcs     r:   wrapper6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper  sF    Aq<B<'+Y
"N4 A ++&?@@As	    6A)	functoolswraps)r  r  s   ` r:   wrap%_possibly_unimplemented.<locals>.wrap  s'    __R A !A Nr<   test_NotImplemented)dictrG   r  
startswithr  r   	__bases__)r5  requirer   new_dictr   r   s         r:   _possibly_unimplementedr	    sy    
 
		 %,,,,.JDw''!%d / CLL#33MM 	r<   c	                 f   [         [        [        U 5      [        [        [
        [        [        U5      [        [        U5      [        [        U5      [        [        U5      [        [        U=(       a    U5      [        [        U=(       a    U5      [        [        U5      [        [        U5      4n	0 n
U	 Hn  nUR                   H[  nUR                  S5      (       d  M  U
R!                  U5      nUb(  [#        SUR$                   SU SUR$                   35      eXU'   M]     Mp     ['        SU	0 5      $ )z|
Construct a base class, optionally converting some of the tests in
the suite to check that the feature is not implemented.
r  zTest class z overloads test z defined in TestBase)r+  r	  rr  r  rV  r  r  r  r  r]  ry  r  r  r  rG   r  getr;  r   r  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr5  r   old_clss                 r:   sparse_test_classr    s    $[&9#$\7;$%7H$%7H$%=%13$%7%3%O8OQ$%=%:%K|M$[&9$_h?AE$ ELLD??7++iioG" ;s||n<L$(6g6F6F5G"I J J$K !  
E2&&r<   c                       \ rS rSr\S 5       r\R                  \R                  \R                  \R                  /rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)TestCSRi  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fNrU  )r   r\  r(   r    r5  argsrB   r_  s       r:   r  TestCSR.spcreator  3     CJJ.0QRd-f- !  	   !6
Ac                 l   [        / SQ/ SQ/ SQ/S5      nU R                  U5      n[        UR                  / SQ5        [	        UR
                  / SQ5        [	        UR                  / SQ5        [        UR                  S5        [        UR                  S	5        [	        UR                  5       U5        g )
N)r   r  r   r  rv  r-  )r  r  rh   r_  rv  r  rY  )r   r$  r   r  r   r	  r
  r   r  r  r   r   rT   r  s      r:   test_constructor1TestCSR.test_constructor1  s    9"$   #!#((733;;w/3::i0SWWQSZZ&3;;=!,r<   c                    [        SS5      nSUS'   U R                  U5      n[        UR                  S/5        [	        UR
                  S/5        [	        UR                  / SQ5        [        UR                  5       U5        g )Nr  r  r-  r  r4  r  )r   r   r   r   r  r  r  )r   r$  r   r  r   r	  r
  r   r$  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  r-  r  r  rv  )r   r$  r   r  r   r	  r
  r   r$  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      @g      $@r  g      "@r  r  g      &@r  g       @g      @r  r  r)  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   rJ   uint64r  )r   r  r  r  re  rY  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  rQ  )r   r$  r   r   r   r
  r	  r  rY  s        r:   test_constructor5TestCSR.test_constructor52  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   rJ   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   rn  ru  )r  r   r  r-  )r   r   rJ   ri   r$  r?   r4  r[   r   r
  r	  r   r   )r   r  r  ptrrN   rT   expected_dtypes          r:   test_constructor_smallcol!TestCSR.test_constructor_smallcolC  s    ay1}&bhh7L13/v>9"$
 d.@.@"((bhhOQXX^^^4QYY__n5199;*r<   c           	      r   [        S5      S-   n[        R                  " [        R                  5      R                  S-   n[        SSSX"S-   US-   /[        R                  S9n[        / SQ[        R                  S9nU R                  XU45      n[        UR                  R                  [        R                  " [        R                  5      5        [        UR                  R                  [        R                  " [        R                  5      5        [        UR                  S[	        U5      S-   45        g )	Nr  r  r  r   rh   r  rF  r  )r   rJ   rY   r[   rZ   r   ri   r$  r   r
  r?   r	  r   r   )r   r  larger  rH  rN   s         r:   test_constructor_largecol!TestCSR.test_constructor_largecolU  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   rW   rG  r  rh   r   r  r  )r   r   r$  rM  rZ  r   r	  r   r   r  r	  r
  r  r  s         r:   test_sort_indicesTestCSR.test_sort_indicesb  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!  rS  rG  r  r  )r   r$  rM  eliminate_zerosr   r  r  r   rU  s         r:   test_eliminate_zerosTestCSR.test_eliminate_zerosl      -.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 )Nr/  r  r  r)  r.  r/  r0  r1  r2  r3  r4  r5  r6  r(  r7  r8  r9  r:  r;  r<  r=  r>  T)r$  rJ   r   r  r   r  r  r   r   r   r	  r
  r   r   r  r  r,  s       r:   test_ufuncsTestCSR.test_ufuncsw      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  rQ  rR  rS  rG  r  r!  r  r  r   rh   r  r   rh   r  )r   r   r$  r   r   rU  s         r:   test_unsorted_arithmetic TestCSR.test_unsorted_arithmetic      ay(y!  $!8 Gay*+y!  $!8 Gci((*CKKMCKKM,IJr<   c                    [         R                  " S/S/S//5      n[         R                  " / SQ5      n[         R                  R                  S5        U R	                  [         R                  R                  SS5      5      nU R                  U5      nXAU4   n[        U5      (       a  UR                  5       n[        XSX4   5        g Nr  rh   r  r{  re   r  r   
rJ   r   r   rf   r)  ry  r  r'   r   r   r   r+  r^  r  r  r,  s         r:   test_fancy_indexing_broadcast%TestCSR.test_fancy_indexing_broadcast      HHqcA3_%HHY
		tLL1-.NN1!fC==++-CSAC&!r<   c                 N   [         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      nU R                  X1U45      R                  5       n[	        SUR
                  5        [        UR
                  [        5      (       d   eU R                  X2U45      R                  5       n[	        SUR
                  5        UR                  5         [	        SUR
                  5        [        UR                  U5        U R                  X2U45      R                  5       nSUl        [	        SUR
                  5        [        UR                  U5        UR                  5         [        UR                  U5        g)z@Ensure has_sorted_indices memoizes sorted state for sort_indicesr   r  rh   TFN)rJ   r   r$  rM  r   rY  rI   r<  rZ  r   r	  )r   sorted_indsunsorted_indsr  r
  r  s         r:   test_has_sorted_indicesTestCSR.test_has_sorted_indices  sG   hh1v&!Q(xxA1a&!6:;@@BT1//0!..5555V<=BBDUA001 	
T1//0199k2V<=BBD#T1//0199m4 	
199m4r<   c                    U R                  [        R                  " S/5      [        R                  " S/5      [        R                  " SS/5      45      n[        SUR                  5        [        R                  " SS/5      n[        R                  " SS/5      n[        R                  " SS/5      nU R                  X2U45      R                  5       n[        SUR                  5        [        UR                  [        5      (       d   eUR                  5         [        SUR                  5        [        S[        UR                  5      5        U R                  X2U45      R                  5       nSUl        [        SUR                  5        [        S[        UR                  5      5        UR                  5         [        S[        UR                  5      5        g)z=Ensure has_canonical_format memoizes state for sum_duplicatesrh   r   r  TFN)r$  rJ   r   r   has_canonical_formatrM  rI   r<  sum_duplicatesr   r	  )r   r  r	  r  r
  s        r:   test_has_canonical_format!TestCSR.test_has_canonical_format  sa    !rxx}bhh1v>NOPT1112((Aq6"xxA1a&!v67<<>UA223!00$7777 	
T1112QAII'v67<<>!%T1112QAII' 	
QAII'r<   c                    [         R                  " S[         R                  S9n[         R                  " S[         R                  S9n[         R                  " S5      nU R                  X2U4SS9nU R                  X2U4SS9n[         R                  " S[         R                  S9nU R                  X64SS9nU R                  X64SS9nU R                  S5      n	U R                  S5      n
[	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        UR
                  R                  [         R                  5        [	        U	R
                  R                  [         R                  5        [	        U
R
                  R                  [         R                  5        XEXxX4 H  nX-     M	     g )Nrh   r  r   r  rG  r          rX  )rJ   r   r[   r$  r   r
  r?   ri   r   r
  r	  valsrN   rT   re  r  r-  r  r  r@   s               r:   test_scalar_idx_dtypeTestCSR.test_scalar_idx_dtype  k    !288,((1BHH-xx{v6lKv6jIXXfBHH-z>z<|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX. a#AE $r<   c                     U R                  [        R                  " S5      /S/4SS9nU R                  U5      nUR	                  S[        R
                  " UR                  S   5      -  5        US   S:X  d   eg N  r   )r  r  rG  r  r  r%  rJ   r   r  rG  rZ  r   r  s      r:   test_setdiag_csrTestCSR.test_setdiag_csr  i    4 1A37|LNN1			!bggaggaj))*yA~~r<   c                     U R                  / SQ/5      nU R                  / SQ/5      nX-   R                  S:X  d   eUR                  U5      R                  S:X  d   eg )Nr  r  r  r   rh   r  )r$  r  rP  r   rN   rT   s      r:   test_binop_explicit_zeros!TestCSR.test_binop_explicit_zeros  sX     	{+	{+{{azz!}  A%%%r<   rc   N)r   r   r   r   rR  r  rJ   r  int_r  r  r0  r%  r)  r,  r7  r>  rC  rJ  rN  rV  r]  rc  ri  rp  rv  r{  r  r  r  r   rc   r<   r:   r  r    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58(:0&r<   r  c                   $    \ rS rSr\S 5       rSrg)TestCSRMatrixi   c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr  )r   r\  r(   r   r  s       r:   r  TestCSRMatrix.spcreator  3     CJJ.0QRt.v. !  r"  rc   Nr   r   r   r   rR  r  r   rc   r<   r:   r  r         / /r<   r  c                       \ rS rSr\S 5       r\R                  \R                  \R                  \R                  /rS rS rS rS rS rS rS	 rS
 rS rS rS rS rS rSrg)TestCSCi  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr  )r   r\  r(   r   r  s       r:   r  TestCSC.spcreator  r!  r"  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   rY  r   rh   r   r  r-  )r  rh   r  r  )r   rh   r  rh   rS  r  rX  )r   r#  r   r  r   r	  r
  r   r  r   r  r$  s      r:   r%  TestCSC.test_constructor1  s}    <|<cB  #!#((953;;y13::k2SWWQSYYqww'SZZ&r<   c                     [        SS5      nSUS'   U R                  U5      n[        UR                  S/5        [	        UR
                  S/5        [	        UR                  / SQ5        g )Nr(  r-  r  rh   r  rh   )r   r   r   r   r   r  r  )r   r#  r   r  r   r	  r
  r$  s      r:   r)  TestCSC.test_constructor2  sU    %#  #!#((A3/3;;s+3::o6r<   c                     [        SS/SS/SS//S5      nU R                  U5      n[        UR                  SS/5        [	        UR
                  SS/5        [	        UR                  / SQ5        g )Nr  r   rh   r-  rn  )r   r#  r   r  r   r	  r
  r$  s      r:   r,  TestCSC.test_constructor3%  sc    Aq6Aq6Aq6*C0  #!#((Aa513;;!u-3::g.r<   c                 P   [        / SQ5      n[        / SQ5      n[        / SQ5      n[        X45      nU R                  X44S5      n[        [	        S5      R                  SS5      UR                  5       5        U R                  / SQ/ S	Q/ S
Q445      nUR                  S:X  d   eg )Nr/  r0  r1  r  r)  r  r  r3  r4  r5  rh   )r   r	   r#  r   r   r  r   r  )r   r  r  r  re  rX  s         r:   r7  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   r
  r	  r  rX  s        r:   r>  TestCSC.test_constructor5:  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   rJ   ro   r?   rB  r  s        r:   rC  TestCSC.test_constructor6B  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 )NrY  rZ  r[  rW   rh   rG  r  r  )r   r#  rM  r\  r   r  r  r   rU  s         r:   r]  TestCSC.test_eliminate_zerosK  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  rQ  rR  r  rG  rT  )r   r   r#  rM  rZ  r   r	  r   )r   r  r  rH  r  r  s         r:   rV  TestCSC.test_sort_indicesV  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@ra  T)r#  rJ   r   r  r   r  r  r   r   r   r	  r
  r   rb  s       r:   rc  TestCSC.test_ufuncs`  re  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  rQ  rR  r  rG  r  rg  rh  )r   r   r#  r   r   rU  s         r:   ri   TestCSC.test_unsorted_arithmeticl  rk  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 rm  rn  ro  s         r:   rp  %TestCSC.test_fancy_indexing_broadcastw  rr  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  rG  )r  r  rX  r~  r  )	rJ   r   r[   r#  r$  r   r
  r?   ri   r  s               r:   r  TestCSC.test_scalar_idx_dtype  r  r<   c                     U R                  [        R                  " S5      /S/4SS9nU R                  U5      nUR	                  S[        R
                  " UR                  S   5      -  5        US   S:X  d   eg r  r  r  s      r:   test_setdiag_cscTestCSC.test_setdiag_csc  r  r<   rc   N)r   r   r   r   rR  r  rJ   r  r  r  r  r0  r%  r)  r,  r7  r>  rC  r]  rV  rc  ri  rp  r  r  r   rc   r<   r:   r  r    sw    . . 88RWWbjj"--@K'7/,<	99
J	K"0r<   r  c                   $    \ rS rSr\S 5       rSrg)TestCSCMatrixi  c                     [        5        nUR                  [        S5        [        U0 UD6sS S S 5        $ ! , (       d  f       g = fr  )r   r\  r(   r   r  s       r:   r  TestCSCMatrix.spcreator  r  r"  rc   Nr  rc   r<   r:   r  r    r  r<   r  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rSrg	)
r?  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)rW   r)  rW   rx  r/  r  r  )r&  r  r   r   r   )r   rR   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 )
NrE  r  r/  rX  rW   r   r0  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 NrE  r  r  r/  rX  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   rW  r  r  r  rL  r  r  r  r  )	r&  r   r   r   r  r   r   r   r  )r   r  r>  rN   rX  rT   rY  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  rY  r  r-  rn  r  r  )r:  r  r&  r   r   r?   r   r$  rJ   r  r   )r   rT   rR   r  r  r-  das          r:   	test_ctorTestDOK.test_ctor  s    i!3!34 <|<cBq!QWWagg&QYY[!$ q!QYY[!))+.9%t2::6QWWbjj)YY[RXXrzz*2$r<   c                     U R                  S5      nSUS'   [        SUR                  5       ;  S5        U R                  S5      nSUS S 2S4'   [        [        UR                  5       5      S:H  S5        g )Nr  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r&  r   keysr   r  s      r:   test_ticket1160TestDOK.test_ticket1160  sl    u%# 	QVVX%'GH u%!A#AFFH"$@Ar<   rc   N)r   r   r   r   r!   r  rJ   r  r  r  r0  r  r  r  r  r  r  r   rc   r<   r:   r?  r?    s>    I77BJJ6K5
+;<>%*Br<   r?  )r  r  c                       \ rS rSr\rSrg)TestDOKMatrixi  rc   N)r   r   r   r   r   r  r   rc   r<   r:   r  r        Ir<   r  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rS rS	 rS
 rSrg)TestLILi  c                    [        S[        R                  5      nSUS'   SUS'   U R                  S[        R                  S9nSUS'   SUS'   [        R
                  " 5       S:w  a2  [        XR                  -  X"R                  -  R                  5       5        [        XR                  5       R                  -  X"R                  5       R                  -  R                  5       5        g )NrW   rW   rW   rx  y              4@r  r  ppc64le)
r   rJ   r  r'  platformmachiner   r  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   r@   s     r:   test_scalar_mulTestLIL.test_scalar_mul0  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  )皙?r  r  r   )	r'  r  rM  r   r   r   rJ   r?   r)  )r   rR   rS   r  opr   r  r  s           r:   test_inplace_opsTestLIL.test_inplace_opsB  s    	956	956q5zq5z1q5z# &*ZZ\!B!VVXFFc"RL)%0v~~/1A1A1CD	 &2 vRXXi-@ALL)	!Q$11QT7??,a0r<   c           	          / SQ/ SQ/nU R                  [        U5      5      n[        U5       H3  u  p4[        UR	                  5       [        X   UR
                  S95        M5     g )Nr  r  )ndmin)r'  r   r  r   r   r   )r   row_datarS   rH  r  s        r:   test_lil_iterationTestLIL.test_lil_iterationV  sM    y)uX/lFAs{{}eHKsxx.PQ #r<   c                     U R                  S5      nSUS'   SUS'   SUS'   SUS	'   S
US'   UR                  5       nU R                  U5      n[        UR                  5       UR                  5       5        g )Nr  rW   rx  r/  r  r0  )r!  r  r  )r  r!  r  )r!  r"  )r'  r  r   r   )r   rS   r  r  s       r:   test_lil_from_csrTestLIL.test_lil_from_csr\  sp    x($$$$$GGIq!199;		4r<   c                     U R                  [        S5      R                  SS5      5      nU R                  U5      n[	        U[        / SQ5      SS24   R                  5       U[        / SQ5      SS24   5        g )Nr  r  r  rh   r  )r)  r   r  r'  r   r   r   )r   r  rR   s      r:   test_fancy_indexing_lilTestLIL.test_fancy_indexing_lilh  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  rF  r  r  r  rE  r  r  r   r   r"  )r   r  r   )r'  r   rP  r   )r   lr  s      r:   test_point_wise_multiply TestLIL.test_point_wise_multiplyo  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r<   c                 j    U R                  [        R                  " S5      5      nUS-  nSUSS S 24'   g )Nr  r  r   )r'  rJ   rZ  r  s     r:   test_lil_multiply_removal!TestLIL.test_lil_multiply_removal  s0    rwwv/	R!Q$r<   rc   N)r   r   r   r   r#   r  rJ   r  r  r  r0  r  r  r  r  r  r  r  r	  r  r   rc   r<   r:   r  r    sN    I77BJJ6KQ!?1(R
5/).r<   r  )r  c                       \ rS rSr\rSrg)TestLILMatrixi  rc   N)r   r   r   r   r   r  r   rc   r<   r:   r  r    r  r<   r  c                       \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS r\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g)TestCOOi  c                    [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X1U44S5      n[        [        S5      R	                  SS5      UR                  5       5        U R                  SS	/S
S	/S
S	/44[        R                  S9n[        SS
/S
S	//[        R                  S9n[        XTR                  5       5        g )Nr/  r0  r1  r  r)  r  r  r2  r  r   r  )r   r"  r   r   r  r   rJ   r6  )r   r  r  r  r  r  s         r:   r%  TestCOO.test_constructor1  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5++-0r<   c                     [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  X1U44S5      n[        / SQ/ SQ/ SQ/5      n[        XTR                  5       5        g )N)
r   r  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   r  )r  r   r   )r   r"  r   r   )r   r  r  r  r  r   s         r:   r)  TestCOO.test_constructor2  s[    )*)*-.  $Cy!1%8ZJ783.r<   c                    U R                  S5      n[        UR                  S5        [        UR                  / 5        [        UR                  / 5        [        UR
                  / 5        [        UR                  5       [        S5      5        g )Nr  )r"  r   r   r  r  r  r   r   r   r  s     r:   r,  TestCOO.test_constructor3  s^      '399U+3772&3772&388B'3;;=%-8r<   c                 `   [        / SQ/ SQ/ SQ/5      nU R                  U5      n[        UR                  5       U5        [        / SQ5      nU R                  U5      nU R                  (       a  UOUR                  SS5      n[        UR                  5       U5        [        R                  " [        SS9   U R                  / SQ/ S	Q/ S
Q45        S S S 5        [        R                  " [        SS9   U R                  / SQSS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr   r  r   r   )r   r   r  r   )r   r  r   r   r  r  zobject cannot be interpretedr  )r   r     !   rv  r-  rX  rT  rG  )
r   r"  r   r   r4  r  r@  r   r  r;  )r   r   r  r  s       r:   r7  TestCOO.test_constructor4  s    Y  !   %3;;=#. I  %,,3#++a2D3;;=(3 ]]9,KL|0LM M ]]:-CDf= ED	 ML EDs   6D2D
D
D-c                     S/nU R                  US/S/44S S9nUR                  [        R                  " U5      R                  :X  d   eg )Nr  r   r  )r"  r?   rJ   r   )r   r  r  s      r:   "test_constructor_data_ij_dtypeNone*TestCOO.test_constructor_data_ij_dtypeNone  sK    s  $!qc
!34 @yyBHHTN00000r<   FzCOO does not have a __getitem__runreasonc                     g r>   rc   r   s    r:   r  TestCOO.test_iterator      r<   c                     SS//nU R                  U5      R                  5       n[        UR                  5       U5        g rm   )r"  todiar   r   )r   r   r  s      r:   test_todia_all_zerosTestCOO.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"  rz  r   r   r  r  r  r  s     r:   test_sum_duplicatesTestCOO.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 )Nr3  r4  r5  )r"  r  r   r   )r   r  rD   s      r:   test_todok_duplicatesTestCOO.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 )Nr3  r4  r5  rh   )r"  r  r   r  r  )r   r  rY  rX  s       r:   test_tocompressed_duplicates$TestCOO.test_tocompressed_duplicates  s^      )i-C!DEiikSWWq[#''*iikSWWq[#''*r<   c                 T   [        / SQ5      n[        / SQ5      n[        / SQ5      nU R                  XU44SS9nUR                  5       nUR                  5         [	        UR
                  S:g  R                  5       5        [        UR                  5       UR                  5       5        g )NrY  )r   r   r   r  r  r  r  r  rZ  rS  rG  r   )	r   r"  rM  r\  r   r  allr   r   )r   r  r  r  r  r  s         r:   r]  TestCOO.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 )Nr,  r-  r.  r1  Fr5  T)r"  r  r   r  rJ   rQ   )r   rr   	new_shaper@   rA   s        r:   test_reshape_copyTestCOO.test_reshape_copy  s    lO<	s#IIi !&& !IIieI,!&& !IIidI+B''778r<   c                    U R                  S/S/S/44S5      nU R                  S/S/S/44S5      n[        UR                  SSS9U:g  R                  S:H  5        [        UR                  SS	S9U:g  R                  S:H  5        g )
Nr  i- r  )-   )r=  r<  r  r*  r   r(  )r"  r   r  r  )r   mat1mat2s      r:   test_large_dimensions_reshape%TestCOO.test_large_dimensions_reshape  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr<   rc   N)r   r   r   r   r"   r  rJ   r  r  r  r0  r%  r)  r,  r7  r  r@  rS  xfailr  r)  r,  r/  r2  r]  r9  r@  r   rc   r<   r:   r  r    s     I77BJJ6K1	/9>,1
 [[5)JK L1
*9
+99	Mr<   r  )r  r  r  r  r  c                       \ rS rSr\rSrg)TestCOOMatrixi  rc   N)r   r   r   r   r   r  r   rc   r<   r:   rD  rD    r  r<   rD  c                      \ rS rSr\r\R                  \R                  \R                  /r
S r\R                  R                  SSS9S 5       r\" S5      S 5       r\R                  R%                  S	S
9S 5       rS rS rS rS rSrg)TestDIAi'  c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        R                   " / SQ/5      R                  SSS9n[        R                   " / S	Q5      n[        U R	                  X#4S
S9R                  5       U5        g )N)r  r   r  r   )r  rh   r   r  )r   rh   r  r   )r   r   r  r  r  r  r   r  r   r  rh   rT  rG  )r   rJ   repeatr   r%  r   )r   r  r  r  s       r:   r%  TestDIA.test_constructor1-  sr    <! " xx$++A1+5((8$T''v'FNNPRSTr<   FzDIA does not have a __getitem__r!  c                     g r>   rc   r   s    r:   r  TestDIA.test_iterator6  r&  r<   r  c                 H   U R                  [        R                  " S5      5      n[        UR                  R
                  [        R                  5        UR                  SSS9  [        UR                  R
                  [        R                  5        U R                  [        R                  " S5      5      n[        UR                  R
                  [        R                  5        UR                  SSS9  [        UR                  R
                  [        R                  5        g )Nr  r  rh   r  r  )	r%  rJ   r&   r   r  r?   r[   rG  ri   r   r  s     r:   test_setdiag_dtypeTestDIA.test_setdiag_dtype:  s    rvvay)QYY__bhh/			$!	QYY__bhh/rvvay)QYY__bhh/			$!	QYY__bhh/r<   zDIA stores extra zerosr#  c                     g r>   rc   r   s    r:   r  TestDIA.test_getnnz_axisF  r&  r<   c                     U R                  / SQ/S/4SS9nUR                  5       n[        UR                  5       R                  5       U5        [        UR	                  5       R                  5       U5        g )Nr  r  r  rG  )r%  r   r   r  r  )r   r  r  s      r:   test_convert_gh14555TestDIA.test_convert_gh14555J  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  rJ   ravel_multi_indexr  r  r   r5  diffry  )r   r  	flat_indsinds_are_sorteds       r:   test_tocoo_gh10050TestDIA.test_tocoo_gh10050Q  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  rH  r  rT  rG  )rJ   r   rI  r[   r   r$   r  r  r?   r  r	  r  )r   r  r  r  r  rY  rX  s          r:   test_tocoo_tocsr_tocsc_gh19245&TestDIA.test_tocoo_tocsr_tocsc_gh19245X  s    xx'..qq.9((:RXX6f=iikww}}(((iik{{  BHH,,,iik{{  BHH,,,r<   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  r)  )r%  rI   r  r   r   rP  )r   r  resres2s       r:   r  TestDIA.test_mul_scalare  s    AA/0!e#{{++++3;;=Aq6Ar7*;<zz!}$,,,,4<<>QFQG+<=r<   rc   N)r   r   r   r   r$   r  rJ   r  r  r  r0  r%  r@  rS  rB  r  r   rO  rA  r  rU  r\  r_  r  r   rc   r<   r:   rF  rF  '  s     I77BJJ6KU [[5)JK L Q	0  	0 [[56 7:9-	>r<   rF  )r  r  r  r  r  r  r  c                       \ rS rSr\rSrg)TestDIAMatrixiq  rc   N)r   r   r   r   r   r  r   rc   r<   r:   rf  rf  q  r  r<   rf  c                      \ rS rSr\r\R                  \R                  \R                  /r
S rS rS rS rS rS rS rS	 rS
 rS rS r\R.                  R1                  SSS9S 5       r\R.                  R1                  SSS9S 5       rS r\R.                  R1                  SSS9S 5       r\R.                  R;                  \SS9S 5       rSr g)TestBSRiy  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  rn  r  r   r  )r  r   rW   r  )r   r  r!  )r)  r   r/  rh   )r   r  rW   )r  r   r  r  rt  r-  r  r  r)  rG  )r   r   r   r!  r   r   )r   r
  r	  r  rR   rd  s         r:   r%  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  rM  r  )rW   r  )r  r   r  )r  r  rF  r  r  rt  r-  r  rn  r  rk  rG  r  r1  )rh   r)  )r  r)  r  )r   r   r!  r   r   )r   r   rR   s      r:   r)  TestBSR.test_constructor2  s    BEeA++A.668!< B %LT''V'<DDFJT''V'<DDFJ)Ii0772CDT''*224a8T'''9AACQGT''V'<DDFJT''V'<DDFJT''V'<DDFJT''W'=EEGKT''W'=EEGKT''W'=EEGK)Ii0772CDT''V'<DDFJr<   c                     / SQ/ SQ/ SQ44n[        SS/SS//5      n[        U R                  USS	9R                  5       U5        g )
Nr  r`  r  r  r   rh   r  rF  r  )r   r   r!  r   )r   argrR   s      r:   r,  TestBSR.test_constructor3  sJ    '*+Aa5!A- T''v'>FFH!Lr<   c                    Sn[         R                  " XS4[         R                  S9n[         R                  " SU/[         R                  S9n[         R
                  " U[         R                  S9nU R                  X$U4US4SS9  g )Nr!  r  r  r   F)r  rM  )rJ   rZ  r   r   r[   r   r!  )r   r>  r  r
  r	  s        r:   r7  TestBSR.test_constructor4  sk     wway01a&1))ARXX.D62q!f5Qr<   c                 $   Sn[         R                  " U5      n[         R                  " XU45      n[         R                  " SU/5      n[         R                  " U5      n[	        [
        5         U R                  X%U45        S S S 5        [	        [
        5         U R                  X5U4SS9  S S S 5        [	        [
        5         U R                  X5U4SS9  S S S 5        g ! , (       d  f       Nc= f! , (       d  f       NJ= f! , (       d  f       g = f)Nr!  r   r  r  r  )rJ   rZ  r   r   r:  r;  r!  )r   r>  	data_1dimr  r
  r	  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  )rJ   r   r[   r!  r?   )r   rH   r
  r	  rT   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 rj  )r   r   r   r!  r  r  r   r   )r   r
  r	  r  rR   AbsrAcsrAcsr_via_coos           r:   test_bsr_tocsrTestBSR.test_bsr_tocsr  s    |$%Y"$ %Q#% &Q$& 'Q$& 'Q ,l;Y')!!4&"9!Izz|zz|))+T\\^Q'T\\^\%9%9%;<r<   c                 z   [        / SQSS/SS//5      R                  nUR                  SSS5      n[        / SQ5      n[        / SQ5      nU R	                  XU4SS9nUR                  5       nUR                  5         [        UR                  S	5        [        UR                  5       UR                  5       5        g )
NrY  r  r  rh   rZ  r[  )r  r/  rG  r)  )
r   r  r  r   r!  rM  r\  r   r  r   rU  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   )r)  r)  r  r  g?B   )r  rh   r  r  r  )rJ   r   rf   r!  r  r\  r   r  r   r   r   r   rN  s     r:   test_eliminate_zeros_all_zero%TestBSR.test_eliminate_zeros_all_zero  s   
		qryy//9VL !"qvv}	QUUB166<<4 !"qvv}	QUUA166<<3199;(:; 	
QUUA166<<3199;(:;r<   c                     U R                  [        S5      R                  SS5      SS9n[        UR                  S   5      R                  SS5      n[	        X-  UR                  5       U-  5        g )Nx   r!  r  r  r  r  r  r  r!  r   r  r   r   r   r  s      r:   test_bsr_matvecTestBSR.test_bsr_matvec  s]    vg66s3?5Q1771:&&r!,QUAIIK!O,r<   c                     U R                  [        S5      R                  SS5      SS9n[        UR                  S   S-  5      R                  SS5      n[	        X-  UR                  5       U-  5        g )	Nr  r!  r  r  r  r  r  r  r  r  s      r:   test_bsr_matvecsTestBSR.test_bsr_matvecs  sa    vg66s3?5Q1771:a< ((A.QUAIIK!O,r<   FzBSR does not have a __getitem__r!  c                     g r>   rc   r   s    r:   r  TestBSR.test_iterator  r&  r<   zBSR does not have a __setitem__c                     g r>   rc   r   s    r:   r[  TestBSR.test_setdiag"  r&  r<   c                 H   [         R                  " / SQ/ SQ/ SQ/5      nU R                  USS9n[        UR	                  S5      S L 5        [        UR                  5       SS/S	S/S
S//5        UR	                  S5        [        UR                  5       SS/S	S//5        UR	                  S5        [        UR                  5       SS/S	S/SS//5        UR	                  S5        [        UR                  5       / SQ/ SQ/ SQ/5        [        [        UR                  S5        g )NrB  rC  rD  r  r  rE  r  r   rh   r  rF  r4  r  r-  r  )	rJ   r   r  r   rG  r   r   r:  r;  r  s      r:   test_resize_blockedTestBSR.test_resize_blocked&  s   HHl""$ % NN1N/ D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)5)5)7 	8 	j!((F3r<   c                     g r>   rc   r   s    r:   rQ  "TestBSR.test_setdiag_comprehensive=  r&  r<   zexceeds memory limitrQ  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   r`  r~  rG  r  )r   r  r  )r   r  r  )
rJ   r   r[   r!  r   r
  r?   ri   MemoryErrorr;  )r   r
  r	  r  rN   rT   r  r-  vals2vals3r  r  r@   s                r:   r  TestBSR.test_scalar_idx_dtypeA  s    !288,((1BHH-xx	"v6lKv6jI|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.
	HH_-EHH]+E""EF#;<"PA""EF#;:"NA22 a#AE $ Z( 	AA	s   B,H H0/H0rc   N)!r   r   r   r   r%   r  rJ   r  r  r  r0  r%  r)  r,  r7  r>  rx  r~  r]  r  r  r  r@  rS  rB  r  r[  r  rQ  skipifIS_COLABr  r   rc   r<   r:   rh  rh  y  s	    I77BJJ6K'.K0MRJ(1=.	9<.-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar<   rh  )r  r  r  r  r  r  c                       \ rS rSr\rSrg)TestBSRMatrixib  rc   N)r   r   r   r   r   r  r   rc   r<   r:   r  r  b  r  r<   r  c                 ~   UR                  SS5      n[        R                  " U R                  [        R                  5      (       d4  [        R                  " U R                  [        R
                  5      (       a  Uc  U 4U-   $ U 4U-   U4-   $ U S:H  R                  5       nU R                  SSS9n U SSS2==   S-  ss'   SU SSS2'   US   R                  S:  a;  [        S U 5       5      nSUS   -  4USS -   nSUS   -  S-   4USS -   nSX'   SX'   [        S U 5       5      nUc  U 4U-   $ U 4U-   US-  4-   $ )	z-Duplicates entries to produce the same matrixr
  Nr   rh   r  r  c              3   *   #    U  H	  oS    v   M     g7frY  rc   ).0ps     r:   	<genexpr>&_same_sum_duplicate.<locals>.<genexpr>  s     ,)QaD)s   c              3   B   #    U  H  oR                  S 5      v   M     g7f)rh   N)rI  )r  r	  s     r:   r  r    s     7$w""$s   )
poprJ   ro   r?   r  unsignedintegerra  rI  rn   rb  )r  indsrB   r
  	zeros_pospospos1pos2s           r:   _same_sum_duplicater  n  sR   ZZ$'F	}}TZZ**	}}TZZ!3!344>7T>!7T>VI--##%I ;;qq;!D1INIDAJ |1,),,#a&{SW$#a&
}s12w&

7$77D~w~w~!--r<   c                      ^  \ rS rSrSS.U 4S jjr\R                  R                  SS9S 5       r\R                  R                  SS9S	 5       r	\R                  R                  S
S9S 5       r
SrU =r$ )_NonCanonicalMixini  Fsorted_indicesc                  > [         TU ]  nU" U/UQ70 UD6nUR                  5       S:H  R                  5       nUS   R                  S:  nU(       aY  US   R                  S-  n	[        5        n
U
R                  [        S5        U R                  XgS   U	   US   U	   5      nSSS5        U R                  Xb5      nSU;  a  UR                  US'   U" U40 UD6nUR                  [        R                  [        R                  4;   a  SnOSn[        UR                  5       UR                  5       US	9  U(       a&  [!        UR"                  S:H  R%                  5       5        U$ ! , (       d  f       N= f)
z[Replace D with a non-canonical equivalent: containing
duplicate elements and explicit zerosr   rh   rU  r  Nr   gh㈵>gHz>)rtol)superr  r   ra  rn   r   r\  r(   _insert_explicit_zero_arg1_for_noncanonicalr   r?   rJ   r  r  r   r   r  r  )r   r  r  r  rB   	constructr  zero_pos	has_zerosr  r_  arg1NCr  r  s                 r:   r  _NonCanonicalMixin.spcreator  sI    G%	a)$)&)IIK1$--/a[%%)	  !#A"$

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

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

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

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