
    bil                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z
 ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlmZmZmZmZm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&Z'ddl(m)Z) ddl(m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< dd	l=m>Z> dd
l?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZGmHZH dej                  v ZJd~dZKd ZL eMdg      ZNdZOd ZP	 	 ddZQd ZR G d d      ZS G d d      ZT G d d      ZU G d d      ZV G d d      ZW G d d       ZX G d! d"      ZYej                  j                  d#$       G d% d&             Z\ G d' d(      Z] G d) d*      Z^ G d+ d,      Z_ej                  d-        Za G d. d/      Zb G d0 d1      Zc G d2 d3      Zd G d4 d5      Ze G d6 d7      Zf G d8 d9      Zgdd;Zh	 	 	 	 dd<Zi G d= d>      Zj G d? d@ej ei             Zkekj                           G dA dBeVek      ZmdC Znemj                           G dD dEej ei             Zoeoj                           G dF dGeVeo      Zpepj                           G dH dI eiddJ            Zq G dK dLeVeq      Zreqj                          erj                           G dM dN eidO            Zs G dP dQeVes      Ztesj                          etj                           G dR dS      Zu G dT dUeu eid:d:d:d:d:V            Zv G dW dXeVeu eidddddV            Zwevj                          ewj                          dY Zx G dZ d[ eiddddddd\            Zy G d] d^eVey      Zzeyj                          ezj                           G d_ d` eidddddda            Z{ G db dceVe{      Z|e{j                          e|j                          dd Z} G de df      Z~ G dg dhe~      Z G di dje      Z G dk dleek      Z G dm dneem      Z G do dpeeo      Z G dq dreep      Z G ds dtee{      Z G du dvee|      Z G dw dxe~      Z G dy dzeev      Z G d{ d|eew      Zd} Zy)z Test functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

    N)raises)arangezerosarraydotasarrayvstackndarray	transposediagkroninf	conjugateint8)assert_equalassert_array_equalassert_array_almost_equalassert_almost_equalassert_assert_allclose)ComplexWarning)GenericAlias)
csc_matrix
csr_matrix
dok_matrix
coo_matrix
lil_matrix
dia_matrix
bsr_matrix	csc_array	csr_array	dok_array	coo_array	lil_array	dia_array	bsr_arrayeyeissparseSparseEfficiencyWarningsparrayspmatrix)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminvzgoogle.colabc                 8    ||n| d|}t        | |v |       y )Nz not found in )msg)r   )member
collectionr6   messages       W/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/sparse/tests/test_base.py	assert_inr;   4   s'    _cVJnZN*SGFj g.    c                 b    t        | j                  |j                  k(         t        | |fi | y N)r   dtyper   )xykwargss      r:   assert_array_equal_dtyperC   9   s&    AGGqwwq!&v&r<   dokzChanging the sparsity structurec                 p    d } ||       D ](  } ||      D ]  }t        j                  ||      s  y * y)Nc                     g }| j                   j                         D ]?  }t        |t        j                  t        j
                  z        s/|j                  |       A |S r>   )__dict__values
isinstancenpr
   genericappend)r@   arraysas      r:   _underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arraysE   sO     ""$ 	!A!RZZ"**45a 	! r<   TF)rJ   may_share_memory)ABrO   rN   bs        r:   sparse_may_share_memoryrT   B   sI      " #A& 	A""1a(	 r<   Fc                      t        j                  d       nt        j                          |rd	dn7d	fd	n.|r&t         j                  j                  d      d	fd	nd	 fd	fdfd}|S )
z
    Monkeypatch the maxval threshold at which scipy.sparse switches to
    64-bit index arrays, or make it (pseudo-)random.

    
   c                 *   t        | ||      }t        t        j                  |      j                  t        j                  t        j
                        j                         t        |t        j
                  k(  xs |t        j                  k(         |S r>   )r/   r   rJ   iinfomaxint32r   intc)rM   maxvalcheck_contentstps       r:   new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypee   s]     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir<   c                     S r>    )rM   r\   r]   fixed_dtypes      r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypek   s	    r<     c                 h    t         j                  t         j                  fj                  d         S )N   )rJ   rZ   int64integers)rM   r\   r]   rngs      r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypeo   s#    HHbhh'Q88r<   c                    t         j                  }||kD  rt         j                  }| D ]  }t        j                  |      }|j                  t         j                  kD  s6|rj|j
                  dk(  rHt        j                  |j                  t         j                        r,|j                         }|j                         }| k\  r|k  rt         j                  } |S Nr   )
rJ   rZ   rf   r   r?   size
issubdtypeintegerrY   min)rM   r\   r]   r?   arrminvalmaxval_limits         r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtyper   s    HHE!L(HHE %jjo99rxx'%88q=$]]399bjjA%(WWYF%(WWYF%,66\;Q (HHE% Lr<   c                 ~    | j                         kD  rt        d      | j                  t        j                        S )Nzdowncast limited)rY   AssertionErrorastyperJ   intp)ro   downcast_maxvals    r:   new_downcast_intp_indexz8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s0    wwy?*$%788::bgg&&r<   c           
      N    g t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  g
t        j                          fd       }|S )Nc            
      P   	 D ]]  }j                  |dt        |dd       f       t        |d
       2j                  |dt        |dd       f       t        |d	       _  | i |D ]  \  }}}|
t        |||        S # D ]  \  }}}|
t        |||        w xY w)Nr/   downcast_intp_index)rL   getattrsetattr)rN   kwmodnameoldfuncbackuprv   funcmodulesrw   r_   s        r:   wrapperz;with_64bit_maxval_limit.<locals>.decorator.<locals>.wrapper   s    4" UCMM)%6=# 
 C!24GH&21#C)>E' 
  %:<STU  Q~"~*0 4&Cw*T734& 4&Cw*T734s   3B 5B B%B%)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_construct	functoolswraps)r   r   r   r   rv   rw   r_   s   ` @@r:   	decoratorz*with_64bit_maxval_limit.<locals>.decorator   s    <<$$ell&7&79J9J<<$$ell&7&79J9J<<$$ell&;&;<<++U\\-D-DF
 
		4 	4 
	4. r<   )ra   NF)rJ   rf   randomdefault_rng)	rq   r   rb   rv   assert_32bitr   rw   r_   rh   s	   ` ``  @@@r:   with_64bit_maxval_limitr   V   sy     xx| xx-	
 
	 		ii##D)	9	* "	'
@ r<   c                 p    t        | t        j                        st        |       r| S | j	                         S r>   )rI   rJ   r
   r.   toarray)rN   s    r:   r   r      s'    !RZZ LO99;r<   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
BinopTesterc                      yNmatrix on the rightra   selfmats     r:   __add__zBinopTester.__add__       $r<   c                      yr   ra   r   s     r:   __mul__zBinopTester.__mul__   r   r<   c                      yr   ra   r   s     r:   __sub__zBinopTester.__sub__   r   r<   c                      yNmatrix on the leftra   r   s     r:   __radd__zBinopTester.__radd__       #r<   c                      yr   ra   r   s     r:   __rmul__zBinopTester.__rmul__   r   r<   c                      yr   ra   r   s     r:   __rsub__zBinopTester.__rsub__   r   r<   c                      yr   ra   r   s     r:   
__matmul__zBinopTester.__matmul__   r   r<   c                      yr   ra   r   s     r:   __rmatmul__zBinopTester.__rmatmul__   r   r<   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s*    %%%$$$%$r<   r   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)BinopTester_with_shapec                     || _         y r>   _shape)r   shapes     r:   __init__zBinopTester_with_shape.__init__   s	    r<   c                     | j                   S r>   r   r   s    r:   r   zBinopTester_with_shape.shape   s    {{r<   c                 ,    t        | j                        S r>   )lenr   r   s    r:   ndimzBinopTester_with_shape.ndim   s    4;;r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__add__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__mul__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__sub__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__radd__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__rmul__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__rsub__   r   r<   c                      yr   ra   r   s     r:   r   z!BinopTester_with_shape.__matmul__   r   r<   c                      yr   ra   r   s     r:   r   z"BinopTester_with_shape.__rmatmul__   r   r<   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s9     %%%$$$%$r<   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ComparisonTesterc                      y)Neqra   r   others     r:   __eq__zComparisonTester.__eq__       r<   c                      y)Nnera   r   s     r:   __ne__zComparisonTester.__ne__   r   r<   c                      y)Nltra   r   s     r:   __lt__zComparisonTester.__lt__   r   r<   c                      y)Nlera   r   s     r:   __le__zComparisonTester.__le__   r   r<   c                      y)Ngtra   r   s     r:   __gt__zComparisonTester.__gt__  r   r<   c                      y)Ngera   r   s     r:   __ge__zComparisonTester.__ge__  r   r<   N)	r   r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s     r<   r   c                   N    e Zd ZdZeZeZeZ	e
ZeZeZeZ ee      Zd Zd Zd Zy)_MatrixMixinz8mixin to easily allow tests of both sparray and spmatrixc                    t        | j                  j                  d      j                         | j                  dgd d f          t        | j                  j                  d      j                         | j                  dgd d f          y N   )r   datspgetrowr   datr   s    r:   test_getrowz_MatrixMixin.test_getrow  sd    4::,,Q/779488QCF;KL4::,,R088:DHHbT1W<MNr<   c                    t        | j                  j                  d      j                         | j                  d d dgf          t        | j                  j                  d      j                         | j                  d d dgf          y r   )r   r   getcolr   r   r   s    r:   test_getcolz_MatrixMixin.test_getcol  sd    4::,,Q/779488AsF;KL4::,,R088:DHHQW<MNr<   c                    | j                  t        dd      j                  dd            }t        |j	                         j
                  t        j
                  d             t        |j	                         j                  |j                         t        |j                  d      j	                         j
                  t        j
                  d             t        |j                  d	      j	                         j
                  t        j
                  d	             |j	                         }|j	                         }t        ||u        y )
N   rZ   r?   re      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper?   rJ   formatrt   r   r   rQ   rR   Cs       r:   test_asfptypez_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Qr<   N)r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr0   asdenser   r   r   ra   r<   r:   r   r     sC    BMMMMMMM8$GOO
r<   r   c                      e Zd ZdZeZeZeZ	e
ZeZeZeZeZeZed        Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0e1jd                  jf                  d        Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?d( Z@d) ZAd* ZBd+ ZCd, ZDd- ZEd. ZFd/ ZGd0 ZHd1 ZId2 ZJd3 ZKd4 ZLd5 ZMd6 ZNd7 ZOd8 ZPd9 ZQd: ZRd; ZSd< ZTd= ZUd> ZVd? ZWd@ ZXdA ZYdB ZZdC Z[dD Z\dE Z]dF Z^dG Z_dH Z`dI ZadJ ZbdK ZcdL ZddM ZedN ZfdO ZgdP ZhdQ ZidR ZjdS ZkdT ZldU ZmdV ZndW ZodX ZpdY ZqdZ Zrd[ Zsy\)]_TestCommonz6test common functionality shared by all sparse formatsc                    t        g dg dg dgd      | _        | j                  | j                        | _        t	        t
              j                  | j                        | _        i | _	        i | _
        | j                  D ]a  }| j                  j                  |      | j                  |<   | j                  | j                  j                  |            | j                  |<   c t        | j                  | j                  t        j                            t        | j                  j                         | j                  t        j                     j                                t!        | j                  t"              | _        y )N)r   r   r   re   )r   r   r   r   )r   re   r   r   d)r   r   r   r   setr-   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesrt   r   rJ   r   r   rI   r*   is_array_test)clsr?   s     r:   
init_classz_TestCommon.init_class>  s    |\BCHMM#''*	
 !!1288I'' 	KE$'GGNN5$9CNN5!&)mmCGGNN54I&JCU#	K 	SWWcnnRZZ89SYY&&(%%bjj199;	= 'syy':r<   c                       fd}t         t              rt        j                  d        j                  D ]
  } ||        y )Nc                     j                   |    }t        t        t        |       t	        j                  dgg             t	        j                  dgg              y )Nr   r   )r  assert_raises
ValueErrorboolr   r   )r?   r   r   s     r:   checkz$_TestCommon.test_bool.<locals>.checkW  sL    %%e,E*dE2DNNQC5)*u--.r<   z%Cannot create a rank <= 2 DOK matrix.)rI   TestDOKpytestskipr  r   r  r?   s   `  r:   	test_boolz_TestCommon.test_boolV  s=    	/ dG$KK?@(( 	E%L	r<   c                     t        ddgg      }| j                  |      }t        d      D ]  }||z   }||z   } t        ||j	                                y )NTFrV   )r   r   ranger   r   )r   r   r   _s       r:   test_bool_rolloverz_TestCommon.test_bool_rolloverc  sY     dE]O$s#r 	AEME)C	 	30r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 4   t        j                         5  t        j                  dt               t        j                  dt               	j
                  |    }	j                  |    }|j                         }d|d d df<   	j                  |      }	j                  |      }	j                  |      }	j                  |      }	j                  |      }t        ||k(  ||k(  j                                t        ||k(  ||k(  j                                t        ||k(  ||k(  j                                t        ||k(  ||k(  j                                t        ||k(  ||k(  j                                t        ||k(  ||k(         t        |dk(  |dk(  j                                t        |dk(  |dk(  j                                t        |t        j                   k(  |t        j                   k(  j                                d d d        y # 1 sw Y   y xY wNignorer   r   )warningscatch_warningssimplefilterr)   r   r  r  copyr   r   r  r  r  rC   r   rJ   nan)
r?   r   r   dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r:   r  z"_TestCommon.test_eq.<locals>.checkp  s   ((* F%%h0GH%%h?ooe,))%0xxzQqS	-++C0++C0++C0++C0 )u6O6O6QR(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(#F(EQJ3G3G3IJ(EQJ3G3G3IJ(*/266/)B)B)DF3F F Fs   G/HHbsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.r   r   r  r  r  r  s   `  r:   test_eqz_TestCommon.test_eqn  sG    	F: ::$99KKRS(( 	E%L	r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                    t        j                         5  t        j                  dt               t        j                  dt               	j
                  |    }	j                  |    }|j                         }d|d d df<   	j                  |      }	j                  |      }	j                  |      }	j                  |      }	j                  |      }t        ||k7  ||k7  j                                t        ||k7  ||k7  j                                t        ||k7  ||k7  j                                t        ||k7  ||k7  j                                t        ||k7  ||k7  j                                t        ||k7  ||k7         t        |dk7  |dk7  j                                t        |dk7  |dk7  j                                t        d|k7  d|k7  j                                t        d|k7  d|k7  j                                t        |t        j                   k7  |t        j                   k7  j                                d d d        y # 1 sw Y   y xY wr'  )r)  r*  r+  r)   r   r  r  r,  r   r   r  r  r  rC   r   rJ   r-  )
r?   r   r   r.  r/  r0  r2  r1  r3  r   s
            r:   r  z"_TestCommon.test_ne.<locals>.check  s   ((* F%%h0GH%%h?ooe,))%0xxzQqS	-++C0++C0++C0++C0 )u6O6O6QR(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(v7G6P6P6RS(#F(EQJ3G3G3IJ(EQJ3G3G3IJ(cAJ3G3G3IJ(cAJ3G3G3IJ(*/266/)B)B)DF7F F Fs   H/IIr4  r8  r9  r  s   `  r:   test_nez_TestCommon.test_ne  sG    	F> ::$99KKRS(( 	E%L	r<   c                     | j                   j                  dvrt        j                  d       | j                   | j                   j                  k(  du sJ | j                   | j                   j                  k7  du sJ y )Nr4  r8  FT)r   r   r  r  Tr   s    r:   test_eq_ne_different_shapesz'_TestCommon.test_eq_ne_different_shapes  s`    ::$99KKRS

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

djjll*t333r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 8   t        j                         5  t        j                  dt               t        j                  dt               j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }|j                  t              }d|d d df<   j                  |      }j                  |      }j                  |      }j                  |      }	j                  |      }
t        ||k  ||k  j!                                t        ||k  ||k  j!                                t        ||k  ||k  j!                                t        ||k  ||k  j!                                t        ||k  |	|k  j!                                t        ||k  |
|k  j!                                t        ||k  ||k  j!                                t        ||k  ||k  j!                                t        ||k  ||	k  j!                                t        ||k  ||
k  j!                                t        ||k  ||k         t        ||k  ||k         dD ]W  }t#        j$                  |      }t        ||k  j!                         ||k         t        ||k  j!                         ||k         Y t#        j&                  d      5  t        |t"        j(                  k  j!                         |t"        j(                  k         d d d        j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }t        ||k  ||k         d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY wNr(  r         ?      ?)re   r   r   r   invalidr)  r*  r+  r)   r   r  r  r,  r   rt   complexr   r  r  r  rC   r   rJ   rf   errstater-  r?   r   r   r.  r/  
datcomplexdatspcomplexr0  r2  r1  r3  valr   s               r:   r  z"_TestCommon.test_lt.<locals>.check  s4   ((* 4E%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )tefn5M5M5OP(d):*6*?)H)H)JL )tfvo5N5N5PQ(tfvo5N5N5PQ(tfvo5N5N5PQ(tfvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(tUT\B(d):L4<OP, QC((3-C,eck-B-B-DcCiP,cEk-B-B-DcCiPQ
 [[2 ;,ebffn-E-E-G-0266\;;
 ooe,))%0xxzQqS	- )vut|Di4E 4EP; ;Q4E 4E%   KN=NA"NN		NNr4  r8  r9  r  s   `  r:   test_ltz_TestCommon.test_lt  sH    5	En ::$99KKRS(( 	E%L	r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 8   t        j                         5  t        j                  dt               t        j                  dt               j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }|j                  t              }d|d d df<   j                  |      }j                  |      }j                  |      }j                  |      }	j                  |      }
t        ||kD  ||kD  j!                                t        ||kD  ||kD  j!                                t        ||kD  ||kD  j!                                t        ||kD  ||kD  j!                                t        ||kD  |	|kD  j!                                t        ||kD  |
|kD  j!                                t        ||kD  ||kD  j!                                t        ||kD  ||kD  j!                                t        ||kD  ||	kD  j!                                t        ||kD  ||
kD  j!                                t        ||kD  ||kD         t        ||kD  ||kD         dD ]W  }t#        j$                  |      }t        ||kD  j!                         ||kD         t        ||kD  j!                         ||kD         Y t#        j&                  d      5  t        |t"        j(                  kD  j!                         |t"        j(                  kD         d d d        j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }t        ||kD  ||kD         d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY wrC  rH  rK  s               r:   r  z"_TestCommon.test_gt.<locals>.check  s4   ((* 3E%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )tefn5M5M5OP(d):*6*?)H)H)JL )tfvo5N5N5PQ(tfvo5N5N5PQ(tfvo5N5N5PQ(tfvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(fvo5N5N5PQ(tUT\B(d):L4<OP, QC((3-C,eck-B-B-DcCiP,cEk-B-B-DcCiPQ
 [[2 ;,ebffn-E-E-G-0266\;;
 ooe,))%0xxzQqS	- )vut|Dg3E 3EN; ;O3E 3ErO  r4  r8  r9  r  s   `  r:   test_gtz_TestCommon.test_gt  sH    4	El ::$99KKRS(( 	E%L	r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 j   t        j                         5  t        j                  dt               t        j                  dt               j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }|j                  t              }d|d d df<   j                  |      }j                  |      }j                  |      }j                  |      }	j                  |      }
t        ||k  ||k  j!                                t        ||k  ||k  j!                                t        ||k  j!                         ||k         t        ||k  j!                         ||k         t        |	|k  j!                         ||k         t        |
|k  j!                         ||k         t        ||k  j!                         ||k         t        ||k  j!                         ||k         t        ||	k  j!                         ||k         t        ||
k  j!                         ||k         t        ||k  ||k         t        ||k  ||k         dD ]W  }t#        j$                  |      }t        ||k  j!                         ||k         t        ||k  j!                         ||k         Y j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }t        ||k  ||k         d d d        y # 1 sw Y   y xY wNr(  r   rD  )re   r   r   rE  r)  r*  r+  r)   r   r  r  r,  r   rt   rI  r   r  r  r  rC   r   rJ   rf   rK  s               r:   r  z"_TestCommon.test_le.<locals>.check8     ((* /G%%h0GH%%h?ooe,))%0xxzQqS	- ZZ0
"(
1Q3#~~j9++C0++C0++C0++C0 )u6O6O6QR(t);*6&*@)I)I)KM )&F*:)C)C)Esd{S(&F*:)C)C)Esd{S(&F*:)C)C)Esd{S(&F*:)C)C)Esd{S(&F*:)C)C)Ets{S(&F*:)C)C)Ets{S(&F*:)C)C)Ets{S(&F*:)C)C)Ets{S($tD()=zT?QR) SC((3-C,esl-C-C-EsczR,cUl-C-C-EsczRS ooe,))%0xxzQqS	- )F_/G /G /G   L
L))L2r4  r8  r9  r  s   `  r:   test_lez_TestCommon.test_le7  H    0	Gd ::$99KKRS(( 	E%L	r<   c                       fd} j                   j                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 j   t        j                         5  t        j                  dt               t        j                  dt               j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }|j                  t              }d|d d df<   j                  |      }j                  |      }j                  |      }j                  |      }	j                  |      }
t        ||k\  ||k\  j!                                t        ||k\  ||k\  j!                                t        ||k\  j!                         ||k\         t        ||k\  j!                         ||k\         t        |	|k\  j!                         ||k\         t        |
|k\  j!                         ||k\         t        ||k\  j!                         ||k\         t        ||k\  j!                         ||k\         t        ||	k\  j!                         ||k\         t        ||
k\  j!                         ||k\         t        ||k\  ||k\         t        ||k\  ||k\         dD ]W  }t#        j$                  |      }t        ||k\  j!                         ||k\         t        ||k\  j!                         ||k\         Y j
                  |    }j                  |    }|j                         }d|d d df<   j                  |      }t        ||k\  ||k\         d d d        y # 1 sw Y   y xY wrV  rW  rK  s               r:   r  z"_TestCommon.test_ge.<locals>.checkp  rX  rY  r4  r8  r9  r  s   `  r:   test_gez_TestCommon.test_geo  r[  r<   c                    t        | j                  d      j                         t        d             t        | j                  d      j                  d       t        | j                  d      j                         d       | j                  j                  dv r7t        | j                  d      j                  d      t        g d             y y )Nr   r   r   coor7  r6  lilaxisr   r   r   )	r   r   r   r   nnzcount_nonzeror   r   r   r   s    r:   
test_emptyz_TestCommon.test_empty  s    T^^F+335uV}ET^^F+//3T^^F+99;Q?:: <</==1=EuYGWX =r<   c                    | j                   j                  dv }|rg dnd g}| j                   | j                   j                  fD ]J  }|D ]C  }t        j                  |j                         |      }t        |j	                  |      |       E L |s7t        t        d      5  | j                   j	                  d       d d d        y y # 1 sw Y   y xY w)Nra  )Nr   r   r   rE  rd  znot implemented .* formatmatchr   )	r   r   r?  rJ   rh  r   r   r  NotImplementedError)r   axis_supportaxesrQ   axexpecteds         r:   test_count_nonzeroz_TestCommon.test_count_nonzero  s    zz((,HH'3#$**djjll+ 	AA A++AIIKbAQ__"_5x@A	A
 2:UV 1

((a(01 1 1 1s   $CCc                     t        t        | j                  d       t        t        | j                  d       t        t        | j                  d       y )Nr   r   r   r   r   r   )r  r  r   r   s    r:   test_invalid_shapesz_TestCommon.test_invalid_shapes  s2    j$..&9j$..&9j$..':r<   c                 R   | j                  g dg dg dg      }|j                  dk(  rdn|j                  dk(  rdnd}t        |j                     \  }}| j                  rd	nd
}d| d| d|j                   d|j
                   d| d|j                   d}t        |      |k(  sJ y )Nr   r   r   rf  r   r   rE  dia(1 diagonals) r5  (blocksize=1x1)  r   r1   < sparse  of dtype ''
	with  stored elements 
and shape >)r   r   r,   r  r?   rg  r   reprr   r   extrar#  fmt
sparse_clsrq  s          r:   	test_reprz_TestCommon.test_repr  s    	9jAB % 5',||u'<# 	
 %,,'3 $ 2 2W
uHZLEKK= Aii[ 1%
5;;-qR 	 E{h&&&r<   c                 2   | j                  t        j                  d      j                  dd            }|j                  dk(  sJ t        t        |      j                  d            dk(  sJ t        j                  d      j                  dd      }| j                  |      }|j                  dk(  rd	n|j                  }| j                  |d
      }t        t        |      j                  d            |dz   k(  sJ t        t        |      j                  d            dk(  sJ | j                  |dddd      }| j                  |dddd      }t        j                  t        d      5  | j                  |dddd       d d d        y # 1 sw Y   y xY w)NK         2   
6   r   r{     r   )maxprintrV   )r  r   iF   )r   r?   r,  r  z'positional argument|unpack non-iterablerk  )r   rJ   r   r   r  r   strsplitr   rg  r  r   	TypeError)r   r   r   	nnz_small	datsp_mp6s        r:   test_str_maxprintz_TestCommon.test_str_maxprint  s\   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 	7NN3UA6	7 	7 	7s   .FFc                 r   | j                  g dg dg dg      }|j                  dk7  ry |j                  dk(  rdn|j                  dk(  rdnd	}t        |j                     \  }}| j                  rd
nd}d| d| d|j
                   d|j                   d| d|j                   d}t        |      |k(  sJ y )Nry  rf  rz  re   r{  r|  r5  r}  r~  r   r1   r  r  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r   rg  r   r,   r  r?   r   r  r  s          r:   test_strz_TestCommon.test_str  s    	9jAB99> % 5',||u'<# 	
 %,,'3 $ 2 2W
uHZLEKK= Aii[ 1%
5;;- P 	 5zX%%%r<   c                    d}t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      fD ]  }| j                  ||      }||z   }d|z  }||j                         z  }||j	                         z  }||j                         z  }||||||fD ]u  }	t        |	j                         |j                         |j                         z         t        |	j                  |       t        |	j                         j                  |       w  y )	Nr  r  rZ   r   r   	complex64r   r   re   )rJ   r?   r   tocsctocsrtocoor   r   )
r   r   mytyperN   rS   cr  efms
             r:   test_empty_arithmeticz!_TestCommon.test_empty_arithmetic  s   xx("((9*=#RXXk%:&( 	7F uF3AAAAAAGGIAAGGIAAGGIA!Aa] 7QYY[!))+aiik*ABQWWV,QYY[..v6	7	7r<   c                     t        g dg dg dg dgd      }t        t        |      t        | j                  |            j	                                y )Nr   r      r   r   r   r   rf  r  )r   r   absr   r   r   rQ   s     r:   test_absz_TestCommon.test_abs
  s<    ;
J	BCHSVS!23;;=>r<   c                     d}t        ddgddggd      }t        t        j                  ||      t	        | j                  |      |      j                                y )	Nr   ggQ?g     @1@gQr  )decimals)ndigits)r   r   rJ   aroundroundr   r   )r   decimalrQ   s      r:   
test_roundz_TestCommon.test_round  sR    E4=5%.137RYYq734>>!,g>FFH	Jr<   c                    t        g dg dg dgd      }t        t        j                  |d      | j	                  |      j                  d      j                                t        t        | j	                  |      j                  |       y )N)r  rE  r   r   r   re   r   r  r  re   )r   r   rJ   powerr   r   r  rm  r  s     r:   test_elementwise_powerz"_TestCommon.test_elementwise_power  sd    <Y7=RXXa^T^^A%6%<%<Q%?%G%G%IJ 	)4>>!+<+B+BAFr<   c                     t        g dg dg dg dgd      }t        | | j                  |       j                                t        g dg dg      }t	        t
        | j                  |      j                         y )Nr  r  r  rf  r  )TFF)FFT)r   r   r   r   r  rm  __neg__r  s     r:   test_negz_TestCommon.test_neg  se    ;
J	BCHaR4>>!,,5578 ')=>?)4>>!+<+D+DEr<   c                     t        ddgg      }| j                  |      }t        |j                  j	                         |j                         y N      ?      @y       @      )r   r   r   realr   r   DrQ   s      r:   	test_realz_TestCommon.test_real#  ;    FF#$%NN1QVV^^%qvv.r<   c                     t        ddgg      }| j                  |      }t        |j                  j	                         |j                         y r  )r   r   r   imagr   r  s      r:   	test_imagz_TestCommon.test_imag(  r  r<   c           	         g }|j                  g dg       |j                  dgdgdgg       |j                  ddgddgddgg       |j                  g dg dg dg       |j                  ddgddgg       |j                  t        |d   ddgg             |j                  t        |d   dgdgg             |j                  t        |d   ddgdd	gg             |j                  t        |d   ddgdd	gg             |j                  t        |d   ddgdd	gg             |j                  t        |d   g d
g             |D ]  }t        |      j                  \  }}| j	                  |      }t        | dz
  |dz         D ])  }t        |j                  |      t        ||             + t        |j                  d      t        |d             t        |j                  d      t        |d              t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                  d      t        j                  d             y )Nr   r   re   r   r   re   r   r   r   r   )r   r   re   r   r   r   r  r   re   r   r  krV   i)(   i?  r  r   r   )r  r   r   r  )rL   r   r   r   r   r"  r   diagonalr   rJ   r   empty)r   matsr  rowscols
sparse_matr  s          r:   test_diagonalz_TestCommon.test_diagonal-  sy   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)-. 	EAqJD$*JD57DF+ EZ00105tA|DE ,,r,2DbMB,,s,3T!s^D	E 	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                    t        j                  g dg dg dg      }| j                  |      }t        dd      D ].  }t	        |j                  |      |j                  |             0 t        j                  g dg dg      }| j                  |      }t        dd      D ].  }t	        |j                  |      |j                  |             0 y )Nr   re   r   r  r  r   )      	   rE  r   )offsetr   )rJ   r   r   r"  r   trace)r   rQ   rR   r  s       r:   
test_tracez_TestCommon.test_traceN  s    HHiI67NN1r1 	?A*AGG1G,=>	? HHi+,NN1r1 	?A*AGG1G,=>	?r<   c           	         | j                  g dg dg dg dg      }dD ]S  }dD ]L  }t        |j                  ||      j                         |j                         j                  ||             N U | j                  g dg d	g d
g      }|j                  d      }g dg dg}t        |j                         |       |j                  d      }t        |j                         |       |j                  d      }t        |j                         |       t	        t
        |j                  d       |j                  dd      }t        |j                         |       t	        t        |j                  ddd       |j                  d      }t        ||u        |j                  dd      }t        ||u       t        |j                  d       | j                  r"t	        t        d      5  d|_        d d d        n!d|_        t        |j                         |       t	        t
        |j                  |j                  f       t	        t
        |j                  d|j                  df       y # 1 sw Y   XxY w)N)r   r   r  rf  r  )r   r   r  )r   F))   r   )r   r  orderr   rV   r   r   r   r   r   r   r         r  re   r   )r   rV   r   r   r   r   )r   r   r   r  r  r  re   r   )r   r   rv  re   r   r   )
not_an_argr   r  Tr,  zhas no setter|n't set attributerk  )r   r   r   r   r  r  r  r   r   r  AttributeErrorrk   )r   r@   r  srA   desireds         r:   test_reshapez_TestCommon.test_reshape[  s   NNIy)YGH 	HE' H"199Qe9#<#D#D#F#$99;#6#6q#6#FHH	H NNM<IJIIf&(=>199;0 IIg199;0IIg199;0j!))X6 IIaO199;0iAqQ? IIfQIIf4I(
 	177F+~5VW ! ! ! AGqyy{G4 	j!))affY7j!))a^<! !s   /I00I9c                    fdfd}t         j                  j                  d       g d}t         j                  t         j                  fD ]  }|D ]  \  }}t        j
                  | dz   |dz
        }|D ]}  }t        j                  ||f|      }| j                  ||f|      }	 |||	|       t         j                  j                  |t        t        |      d            D ]  }
 |||	|
           y )	Nc                    t        j                  |      }|dk\  rt        | j                  d   | j                  d   |z
        }|j                  dk7  rt        |t        |            }|d | }t        j                  d|      }t        j                  |||z         }|| ||f<   y |dk  r | j                  ||        y y Nr   r   )rJ   r   rn   r   r   r   r   r?  )rN   vr  nr  jdense_setdiags         r:   r  z=_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag  s    

1AAv
AGGAJN366Q;As1vA"1AIIaOIIaQ'!A#Qacc1qb) r<   c                    dt        t        j                  | |            ddfD ]A  }|dk  r*t        j                  j	                  t        dd            }n"t        j                  j                  dd|      } | ||       t        j                         5  t        j                  dt        t               |j                  ||       d d d        t        j                  | |      }t        j                  |      j                  dk(  rt        ||d	
       n2t!        t        |      t        |            }t        |d | |d | d	
       t        |j#                         | d	
       D y # 1 sw Y   xY w)Nr   re   r  r   r   r  rk   r(  z	{msg} {r}err_msg)r   rJ   r   r   choicer"  randintr)  r*  filterwarningsWMSGr)   setdiagr   r   r   rn   r   )rN   rS   r  rr   r  r  r  s          r:   check_setdiagz=_TestCommon.test_setdiag_comprehensive.<locals>.check_setdiag  s(    #bggam,a4 Hq5		((q"6A		))!Ra)8AaA&,,. $++Hd<STIIaO$
 GGAqM::a=%%*&q![ACFCF+A&q!uae[I"199;;G'H$ $s   2E++E4	rc   )r  r  r   r   r  r  r   r  r   r   r  r  )rJ   r   seedr   r   r   r   r   r  rn   r   )r   r  shapesr?   r  r  ksr  rN   rS   k2r  s              @r:   test_setdiag_comprehensivez&_TestCommon.test_setdiag_comprehensive  s    	*	H2 			t4ggrzz* 	0E 
0!YYr!tQqS) 0A!Qu5A1vU;A!!Q* !ii..rCGQ.H 0%aB/00
0	0r<   c           
      P   | j                  t        j                  d            }| j                  d      }g d}t        j                         5  t        j
                  dt        t               t        t        |j                  |d       |j                  |       t        |j                         |       |j                  |d       t        |j                         t        j                  g dg d	g d
g             |j                  |d       t        |j                         t        j                  g dg d	g dg             |j                  dd       t        |j                         d   d       |j                  dd       t        |j                         d   d       |j                  dgd       t        |j                         d   g d       |j                  ddgd       t        |j                         d d g dg dg       d d d        y # 1 sw Y   y xY w)Nr   r  r  )r   re   r   r(  r  r  r   )r   r   r   )r   re   re   r  rE  r   r   r   )r  re   r   re   r  re   r   r   r   r   r   r   )r   r   r   r   )r   rJ   r'   r)  r*  r
  r  r)   r  r  r  r   r  r   r   )r   r  m2rH   s       r:   test_setdiagz_TestCommon.test_setdiag  s   NN266!9%^^F#$$& 	A##Hd4KL*aii1=IIfqzz|V4IIfI"qyy{BHHi6?6?6A -B C IIfI#qyy{BHHi6?6?6A -B C IIdaI qyy{3/3IIdbI!qyy{3/3JJsaJ rzz|A=JJ1vJ#rzz|BQ/,2>2@ A-	A 	A 	As   GHH%c                 6   t        g dg dg dg      }| j                  |      }t        |j                               D ch c]  }t	        |       }}t        |j                               D ch c]  }t	        |       }}t        ||       y c c}w c c}w Nr   r   r   r   r   r   r  )r   r   r   nonzerotupler   r   rQ   AspijA_nzAsp_nzs         r:   test_nonzeroz_TestCommon.test_nonzero  sw    9Yy12nnQ$-aiik$:;bb	;;&/&>?%)??T6" <?s   B0Bc                 J   t        g dg dg dg      }| j                  |      }t        t        j                  |            D ch c]  }t        |       }}t        t        j                  |            D ch c]  }t        |       }}t        ||       y c c}w c c}w r   )r   r   r   rJ   r#  r$  r   r%  s         r:   test_numpy_nonzeroz_TestCommon.test_numpy_nonzero  s{    9i34nnQ$-bjjm$<=bb	==&/

3&@A%)AAT6" >As   B:B c                    	 t         j                  j                  d       t        j                  g dg dg dg      }t         j                  j	                  dd      }t        j                  g g      }t        j
                  d      }t        j                  ddd      j                         }|||||g		 fd	} j                  D ]$  }t        t        	            D ]  } |||        & y )
Nrc   r   r   re   r   r  r  r  r  r  )r  r  g{Gz?)densityc                    j                  |   |       }j                  ||       }t        j                  d      5  t	        |j                         |j                                t        |j                         j                  |j                         j                         t        t        j                  |j                  d                    t	        |j                  d       |j                  d              t        |j                  d       j                  |j                  d       j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d	      |j                  d	             t        |j                  d	      j                  |j                  d	      j                         d d d        y # 1 sw Y   y xY w)
Nr   r(  )overrd  r   r   rE  r   r   r   )
r  r   rJ   rJ  r   sumr   r?   r   isscalar)r?   r  r   r   matricesr   s       r:   r  z#_TestCommon.test_sum.<locals>.check  sf   ,,x{%,8CNN3eN4E(+ W)#'')UYY[ASWWY__eiik.?.?@EII4I$89:)#''t'*<eiiTi>RSSWW$W/55uyydy7K7Q7QR)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''v'*>		v	@VWSWW&W1779O9U9UVW W Ws   LM%%M.)rJ   r   r  r   randr   r   r   r  r"  r   )
r   dat_1dat_2dat_3dat_4dat_5r  r?   r  r8  s
   `        @r:   test_sumz_TestCommon.test_sum  s    
		t)""$ % 		q!$""Aq$/7795%6	W( (( 	 E3x=)  eQ 	 r<   c                 :   t        j                  d      }t        g dg dg dg      }| j                  |      }t	        t
        d      5  |j                  d       d d d        t	        t
        d      5  |j                  d	       d d d        t	        t        d
      5  |j                  d       d d d        t	        t
        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   OxY w# 1 sw Y   y xY wNr   r   r.  r/  r0  zaxis out of rangerk  r   rd  r   r   zaxis must be an integer      ?z&do.*n.t match.*shape|wrong.*dimensionsr   re  out)	rJ   r   r   r   r  r  r6  r  meanr   rF  r   r   s       r:   test_sum_invalid_paramsz#_TestCommon.test_sum_invalid_params  s    hhvY! " s#:-@A 	II1I	:-@A 	#II6I"	#9,EF 	 II3I	  :-UV 	(JJA3J'	( 	(	 		# 	#	  	 	( 	(s0   C-8C9$DD-C69DDDc                     t        g dg dg dg      | j                        fd}| j                  D ]
  } ||        y )Nr.  r/  r0  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y Nr   )r6  r   r   r?   )r?   dat_sum	datsp_sumr   r   s      r:   r  z)_TestCommon.test_sum_dtype.<locals>.check,  s?    ggEg*G			.I%gy9	8r<   r   r   r  r   r  r?   r   r   s      @@r:   test_sum_dtypez_TestCommon.test_sum_dtype&  sM    Y! " s#	9 (( 	E%L	r<   c                    | j                    }t        g dg dg dg      }| j                  |      }| j                   rt        d      nt        dgg      }| j                   rt        d      nt        dgg      }|j	                  ||       |j	                  |       t        ||       | j                   rt        j                  d      nt        j                  d      }| j                   rt        j                  d      nt        t        j                  d            }|j	                  d	||
       |j	                  d	|       t        ||       t        t        d      5  |j	                  t        dg             d d d        t        t        d      5  |j	                  t        | j                   rdggnd             d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr.  r/  r0  r   rF  keepdimsrF  r   r   r   r   re  rF  rT  rE  zoutput parameterrk  )
r  r   r   r1   r6  r   rJ   r   r  r  r   keepr   r   dat_out	datsp_outs         r:   test_sum_outz_TestCommon.test_sum_out6  s   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	Gd+		i	 !'95$($6$6"((4.BHHV<L&*&8&8BHHTNfRXXfEU>V	QGd3		qi	(!'95 :-?@ 	&II%*I%	&:-?@ 	EII%););!CID	E 	E	& 	&	E 	E   %G,GGG%c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y Nr.  r/  r0  )r   r   rJ   r6  r   r   r?   )r   r   r   rM  rN  s        r:   test_numpy_sumz_TestCommon.test_numpy_sumQ  s_    Y! " s#&&+FF5M	!'95W]]IOO4r<   c                    t        g dg dg dg      }| j                  |      }t        |j                               sJ | j                  rt
        nt        j                  }t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ y Nr.  r/  r0  r   rd  r   )
r   r   r.   r6  r  r
   rJ   r1   rI   rG  )r   r   r   matrix_or_arrays       r:   test_sum_mean_container_typez(_TestCommon.test_sum_mean_container_type^  s    Y! " s#EIIK(((%)%7%7'RYY%)))+_===%)))+_===EJJL)))%**!*,o>>>%**!*,o>>>r<   c                 `      j                     fd} j                  D ]
  } ||        y )Nc                    t        g dg dg dg|       }j                  ||       }t        |j                         |j                                t	        |j                         j
                  |j                         j
                         t        t        j                  |j                  d                    t        |j                  d       |j                  d              t	        |j                  d       j
                  |j                  d       j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         t        |j                  d	      |j                  d	             t	        |j                  d	      j
                  |j                  d	      j
                         t        |j                  d
      |j                  d
             t	        |j                  d
      j
                  |j                  d
      j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         y )Nr.  )r   r  r  )r   r  r  r   rd  re  rT  r   r   rE  r   r5  )	r   r   r   rG  r   r?   r   rJ   r7  )r?   r   r   rZ  r   s      r:   r  z$_TestCommon.test_mean.<locals>.checko  sw   ""$+02C NN3eN4E%chhj%**,?))5::<+=+=>BKK


 567%dT2EJJDJ4I t,22EJJDJ4I4O4OP%a$/1C q)//1C1I1IJ%a$/1C q)//1C1I1IJ%b40%**"*2E r*00%**"*2E2K2KL%b40%**"*2E r*00%**"*2E2K2KL%ft4ejjfj6M v.44ejjfj6M6S6STr<   )r  r  )r   r  r?   rZ  s   `  @r:   	test_meanz_TestCommon.test_meanm  s6    %%% 	UF (( 	E%L	r<   c                 X   | j                  t        j                  d            }t        g dg dg dg      }| j	                  |      }t        t        d      5  |j                  d       d d d        t        t        d      5  |j                  d	       d d d        t        t        d
      5  |j                  d       d d d        t        t        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   OxY w# 1 sw Y   y xY wrA  )	r  rJ   r   r   r   r  r  rG  r  rH  s       r:   test_mean_invalid_paramz#_TestCommon.test_mean_invalid_param  s   ll288F+,Y! " s#:-@A 	JJAJ	:-@A 	$JJFJ#	$9,EF 	!JJCJ 	! :-UV 	(JJA3J'	( 	(	 		$ 	$	! 	!	( 	(s0   C<D3DD <DDD D)c                     t        g dg dg dg      | j                        fd}| j                  D ]
  } ||        y )Nr.  r/  r0  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y rL  )rG  r   r   r?   )r?   dat_mean
datsp_meanr   r   s      r:   r  z*_TestCommon.test_mean_dtype.<locals>.check  sA    xxex,H%0J%h
;)9)9:r<   rO  rP  s      @@r:   test_mean_dtypez_TestCommon.test_mean_dtype  sM    Y! " s#	; (( 	E%L	r<   c                    | j                    }t        g dg dg dg      }| j                  |      }| j                   rt        d      nt        dgg      }| j                   rt        d      nt        dgg      }|j	                  ||       |j	                  |       t        ||       | j                   rt        j                  d      nt        j                  d      }| j                   rt        j                  d      nt        t        j                  d            }|j	                  d	||
       |j	                  d	|       t        ||       t        t        d      5  |j	                  t        dg             d d d        t        t        d      5  |j	                  t        | j                   rdggnd             d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr.  r/  r0  r   rS  rU  rV  rW  r   rX  rE  z"output parameter.*wrong.*dimensionrk  )
r  r   r   r1   rG  r   rJ   r   r  r  rY  s         r:   test_mean_outz_TestCommon.test_mean_out  s   %%%Y! " s#"00%(eaSEl $ 2 2E!Hu	Wt,

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

y
)!'95 :-QR 	'JJ5!:J&	':-QR 	FJJ5$*<*<1#!DJE	F 	F	' 	'	F 	Fr^  c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y r`  )r   r   rJ   rG  r   r   r?   )r   r   r   rn  ro  s        r:   test_numpy_meanz_TestCommon.test_numpy_mean  sa    Y! " s#773<WWU^
!(J7X^^Z%5%56r<   c                    t        g dg dg dgt              }| j                  |dt              }t        j                  j                  |      }t        g dg dg dg      }| j                  |dt              }t        j                  j                  |      }t        j                         5  t        j                  d	d
t               t        j                  d	dt               t        j                  d	dt               t        |      j                         }t        |      j                         }d d d        t        |z
  t        d             t        |z
  t        d             y # 1 sw Y   :xY w)Nr  r   r   r   r  r  r   r`  r   r?   )      @              ?)rz         @rz  )rz  rz  rz  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   linalgr3   r)  r*  r
  r)   r   r   r   )	r   MsMMexpNsNNexpsMexpsNexps	            r:   	test_expmz_TestCommon.test_expm  s,   9i4e<^^AU%^8||  #<|<=^^AU%^8||  #$$& 	'##8'
 ##U'
 ##@'
 H$$&EH$$&E#	'& 	"54<%-@!54<%-@)	' 	's   0BE--E6c                 8      fd}t         fD ]
  } ||        y )Nc                    t        g dg dg dg|       }t        j                         5  t        j                  ddt               t        j                  ddt               t        j                  ddt               j                  |d| 	      }t        |      }d d d        t        j                        j                         t        j                  d
             t        t        t        |       y # 1 sw Y   [xY w)Nr  rv  rw  r(  r  r~  r}  r`  rx  r   )r   r)  r*  r
  r)   r   r4   r   r   r   rJ   r'   r  r  )r?   r  r  sMinvr   s       r:   r  z#_TestCommon.test_inv.<locals>.check  s    y)Z8%@A((*  ''D+
 ''2+	 ''<+
 ^^AU%^@B% & &eiim&;&;&=rvvayI)S!,)   s   A1C66C?)r  r  s   `  r:   test_invz_TestCommon.test_inv  s"    	-. W 	E%L	r<   c                    t        j                         5  t        j                  dt               t	        g dg dg dg dg      }t        | j                  |      j                         |       t	        g dg dg dg      }t        | j                  |      j                         |       t        | j                  |d	      j                         |j                  d             d d d        y # 1 sw Y   y xY w
Nr(  ry  r  )r   r  r   rf  )r  r   r   )r         @r   r   r   )	r)  r*  r+  r   r   r   r   r   rt   r  s     r:   test_from_arrayz_TestCommon.test_from_array  s    $$& 
	N!!(N;wwww78At~~a088:A>'& " #A t~~a088:A>q088:188G;LN
	N 
	N 
	N   CC00C9c                    t        j                         5  t        j                  dt               | j	                  g dg dg dg dg      }t        | j                  |      j                         |       | j	                  g dg dg dg      }t        | j                  |      j                         |       t        | j                  |d	      j                         |j                  d             d d d        y # 1 sw Y   y xY wr  )	r)  r*  r+  r   r  r   r   todensert   r  s     r:   test_from_matrixz_TestCommon.test_from_matrix&  s    $$& 	!!(N;iIyIJAt~~a088:A>.-') *A t~~a088:A>q088:AHHW<M	 	 	s   CC<<Dc                    t        j                         5  t        j                  dt               g dg dg dg dg}t	        | j                  |      j                         |       g dg dg dg}t	        | j                  |      j                         t        |             t	        | j                  |d	      j                         t        |      j                  d             d d d        y # 1 sw Y   y xY wr  )	r)  r*  r+  r   r   r   r   r   rt   r  s     r:   test_from_listz_TestCommon.test_from_list4  s    $$& 	!!(N;1At~~a088:A>! A t~~a088:E!HEq088:E!HOOG<T	 	 	r  c                    t        j                         5  t        j                  dt               t	        g dg dg dg dg      }| j                  |      }t        | j                  |      j                         |       | j                  |      }t        | j                  |      j                         |       t	        g dg dg dg      }| j                  |      }t        | j                  |      j                         |       t        | j                  |d	      j                         |j                  d             | j                  |      }t        | j                  |      j                         |       t        | j                  |d	      j                         |j                  d             d d d        y # 1 sw Y   y xY wr  )
r)  r*  r+  r   r   r  r   r   r   rt   r   r  Ss      r:   test_from_sparsez_TestCommon.test_from_sparseB  sd   $$& 	2!!(N;wwww78A""1%At~~a088:A>q!At~~a088:A>'& " #A ""1%At~~a088:A>t~~aw~?GGI xx02q!At~~a088:A>t~~aw~?GGI xx02#	2 	2 	2s   F"G  G	c                 ~   | j                   j                         }t        || j                  rt        j
                  nt        j                        sJ t        || j                         t        |j                  j                  |j                  j                  k7         | j                   j                  d      }t        || j                         t        |j                  j                         t        |j                  j                          | j                   j                  d      }t        || j                         t        |j                  j                          t        |j                  j                         t	        j                  | j                   j                  | j                   j                        }| j                   j                  |      }t        | j                  |       t        | j                  |       t	        j                   ||      sJ | j#                  t	        j                  | j                   j                  | j                   j                              }| j                   j                  |      }t        | j                  |       t        | j                  |       t	        j                   ||      sJ t%        g dg      }|| j                  z  }|| j                   j                         z  }t        ||       t%        g dg      j&                  }| j                  |z  }| j                   j                         |z  }t        ||       | j)                  | j                  t*              }| j                  j-                  t*              }	t        |j                         |	       y )Nr   r  r  r   rU  r{  r|  ry  r{  r|  ry        @)r   r  rI   r  rJ   r
   r1   r   r   r   flagsc_contiguousf_contiguousr   r   r?   rP   r  r   r?  r   r  rt   )
r   chkrF  rN   dense_dot_denser  rS   check2spboolmatbools
             r:   test_todensez_TestCommon.test_todense[  s   jj  "#T-?-?rzzRYY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,,,:,dhh,DJJ&&((?E2=/"$$((Q,##%)?F35((//$'6>>+W5r<   c                 n   t        | j                        }| j                  j                         }t	        ||       t        |j                  j                  |j                  j                  k7         | j                  j                  d      }t	        ||       t        |j                  j                         t        |j                  j                          | j                  j                  d      }t	        ||       t        |j                  j                          t        |j                  j                         t        j                  | j                  j                  | j                  j                        }| j                  j                  |       t	        ||       d|d<   | j                  j                  |       t	        ||       t        g d      }t        ||      }t        || j                  j                               }t	        ||       t        g d	      }t        ||      }t        | j                  j                         |      }t	        ||       | j                  | j                  t               }	|j#                  t               }
t	        |	j                         |
       y )
Nr   r  r  r   rU  r{  .r  r  )r   r   r   r   r   r   r  r  r  rJ   r   r   r?   r   r   r   r  rt   )r   r   r  rF  rN   r  r  rS   r  r  arrbools              r:   test_toarrayz_TestCommon.test_toarray  s   dhhjj  "3$		&&#))*@*@@Ajj  s +3$		&&'CII***+jj  s +3$CII***+		&&'hhtzz''tzz/?/?@

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

s#3$*a+Atzz))+,?E2- c1+TZZ'')1-?F35**T"6>>+W5r<   c                 B  	 t        j                         5  t        j                  dt               t	        g dg dg dg      }| j                  |      }t        D ]*  }|j                  |      }dD ]o  }|j                  ||      t        j                  |j                         t        j                         |       t        j                  |j                         q t        j                  |d      u        j                  |d      	t        	u       	fd	}j                  d
v rdD ]
  } ||        j                  dk(  rdD ]
  } ||        j                  dk(  sdD ]
  } ||        - 	 d d d        y # 1 sw Y   y xY w)Nr(  y       @      @r   r   r   y      @      @r   rf  )TFr  FTc                     t        |       }t        |       }t        ||       t        ||u       d|j                  z  }||   }||    ||<   t        ||   ||   k7         |||<   y )N)r   )r{   r   r   r   )	attributerN   rS   r  b_iS_castedS_copieds        r:   (check_equal_but_not_same_array_attributezI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute  ss    )4A)4A&q!,AQJ'qvvAA$C t8AaDAaDAaDL)AaDr<   r7  r6  r5  )indicesindptrdatarb  )rowcolr  r{  )offsetsr  )r)  r*  r+  r   r   r   r-   rt   r   r?   r   r   r   )
r   r  r  r@   D_castedr,  r  r  r  r  s
           @@r:   test_astypez_TestCommon.test_astype  s   $$& '	L!!(N;'' " #A q!A%  L88A;) <D xxx5H @ !1!1!3X> !((;	< 6(BC#??14?801	 ??&;;%B L	@KL__-%; L	@KL__-%8 L	@KL? L'	L '	L '	Ls   E F9FFc                 F   t        j                         5  t        j                  dt               t	        g dg dg dg      }| j                  |      }t        |d      rd|j                  j                  _	        |j                  dv r6d|j                  j                  _	        d|j                  j                  _	        t        D ]D  }|j                  |      }|j                  |      }t        |j                   |j                          F 	 d d d        y # 1 sw Y   y xY w)Nr(  r  r  rf  r  Fr  )r)  r*  r+  r   r   r   hasattrr  r  	writeabler   r  r  r-   rt   r   r?   )r   r  r  r@   r  r  s         r:   test_astype_immutablez!_TestCommon.test_astype_immutable  s    $$& 	=!!(N;'' " #A q!Aq&!).&xx00+0(,1		)% =88A;88A;X^^X^^<=	= 	= 	=s   C8DD c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }t        |dz  |dz  j                                t        |dz  |dz  j                                y Nre   L1@r  r  r   r   r?   r   r   r   s      r:   r  z*_TestCommon.test_mul_scalar.<locals>.check  sW    //%(C%%e,Es1uuQw&7&7&9:s4x%*)=)=)?@r<   r  r  s   `  r:   test_mul_scalarz_TestCommon.test_mul_scalar  '    	A %% 	E%L	r<   c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }t        d|z  d|z  j                                t        d|z  d|z  j                                y r  r  r  s      r:   r  z+_TestCommon.test_rmul_scalar.<locals>.check  sW    //%(C%%e,Equqw&7&7&9:tCx$u*)=)=)?@r<   r  r  s   `  r:   test_rmul_scalarz_TestCommon.test_rmul_scalar  r  r<   c                     | j                   t        j                     }t        t              5  d |z   d d d        y # 1 sw Y   y xY wr>   )r  rJ   r   r  r  )r   r   s     r:   test_rmul_scalar_type_errorz'_TestCommon.test_rmul_scalar_type_error  s:    !!"**-9% 	5L	 	 	s	   <Ac                 B      fd} j                   D ]
  } ||        y )Nc                    j                   |    }j                  |    }|j                         }d|d<   |}||z   }t        ||j	                         |z          ||j                         z   }t        |j	                         |j	                         |j	                         z          ||d   z   }t        ||j	                         |d   z          y )Nr|  r  r   )r  r  r,  r   r   r  r?   r   r   rN   rS   r  r   s         r:   r  z#_TestCommon.test_add.<locals>.check  s    //%(C%%e,E
AAcFAAAq!))+/2AGGIAqyy{ yy{QYY[8: AaDAq!))+!"45r<   r  r  s   `  r:   test_addz_TestCommon.test_add   s&    	6$ %% 	E%L	r<   c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }|j                         }d|d<   |}||z   }t        |||j	                         z          y )Nr|  r  )r  r  r,  r   r   r  s         r:   r  z$_TestCommon.test_radd.<locals>.check  sW    //%(C%%e,E
AAcFAAAq!aiik/2r<   r  r  s   `  r:   	test_raddz_TestCommon.test_radd  s&    	3 %% 	E%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                     j                   |    }j                  |    }t        ||z
  j                         t	        j
                  d             t        |dz
  j                         |       j                  t	        j                  g dg dg dgd            }t        ||z
  j                         ||j                         z
         t        ||z
  j                         |j                         |z
         t        ||d   z
  ||d   z
         y )Nr  r   r   r   r   r  r   r   r   r   r   r  r   r  r  )r  r  r   r   rJ   r   r   r   r?   r   r   rQ   r   s       r:   r  z#_TestCommon.test_sub.<locals>.check%  s    //%(C%%e,E668"((6:JK	224c:,}EsKA 	224cAIIK6GHE	224aiikC6GH us1v~sSV|<r<   r  r  rJ   r?   r  s   `  r:   test_subz_TestCommon.test_sub$  s:    	=  %% 	E((%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                 ~   j                   |    }j                  |    }t        ||z
  g dg dg dg       t        ||z
  g dg dg dg       t        d|z
  j                         |        j	                  g dg dg dgd      }t        ||z
  ||j                         z
         t        ||z
  |j                         |z
         t        |j                         |z
  |j                         |z
         t        ||j                         z
  ||j                         z
         t        |d   |z
  |d   |z
         y )Nr  r   r  r  r  r  r   )r  r  r   r   r   r  s       r:   r  z$_TestCommon.test_rsub.<locals>.check=  s   //%(C%%e,Eei	)-LMi	)-LME	224sd;	*Z@sKAa#		*;<C!))+*;<qyy{U2AIIK#4EFuqyy{2C!))+4EF s1v~s1v|<r<   r  r  r  s   `  r:   	test_rsubz_TestCommon.test_rsub<  s:    	=" %% 	E((%L	r<   c                 B      fd} j                   D ]
  } ||        y )Nc                 \   j                   |    }j                  |    }t        |dz   j                         |       t	        t        dd      D cg c]  }||z  	 c}      }t	        t        dd      D cg c]  }||z  	 c}      }t        |j                         |       y c c}w c c}w )Nr   r   r   )r  r  r   r   r6  r"  r   )r?   r   r   r  sumSsumDr   s         r:   r  z$_TestCommon.test_add0.<locals>.checkV  s    //%(C%%e,E 	224c:5A;7aE	78Dq!5AC56D5 85s   B$6B)r  r  s   `  r:   	test_add0z_TestCommon.test_add0U  s&    		6 %% 	E%L	r<   c                    t        g dg dg      }t        g dg dg      }| j                  |      }| j                  |      }|j                  dv r|j                  nd}|j                  |      j                  |k(  sJ t	        |j                  |      j                         ||z         t	        |j                  |      j                         ||z         t        g dg dg      }t        g d	g d
g      }| j                  |      }| j                  |      }	t	        |j                  |	      j                         ||z         t	        |j                  |      j                         ||z         t	        |j                  |	      j                         ||z         t	        |j                  |      j                         ||z         y )N)r  r   r  )re   r  r  )r   r  r   )r   r  r   )r6  r{  r5  r7  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r  )r   r   r   multiplyr   r   )
r   rQ   rR   r&  Bspout_fmtr   r  CspDsps
             r:   test_elementwise_multiplyz%_TestCommon.test_elementwise_multiplyd  sm   78$%78$%nnQnnQ #

.C C#**S!))W444CLL-5571=CLLO335qs; $^45$^45nnQnnQCLL-5571=CLLO335qs; 	CLL-5571=CLLO335qs;r<   c                    t        dg      }t        dgg      }t        g d      }t        g dg      }t        dgdgdgg      }t        g dg d	g d
g      }g d}t        j                  d      }|j                  }	t        dgg      }
t        ddgddggg      }| j	                  |      }| j	                  |      }| j	                  |      }| j	                  |      }| j	                  |      }| j	                  |d         }| j	                  |	      }| j	                  |	d d dd f         }| j	                  |
      }|||||||||	|
|g}|||||||||g	}|D ]V  }|D ]O  }	 |j                         |j                         z  }|j                  |      }t        |j                         |       Q X |D ]a  }|D ]Z  }	 |j                         |z  }	 |j                  |      }t        |      rt        |j                         |       Ot        ||       \ c y # t        $ r t        t        |j                  |       Y w xY w# t        $ r Y t        $ r t        t        |j                  |       Y w xY w# t        $ r Y w xY w)Nr  r   r   r   )r  r  r  r   re   r   )r  r   r   )r  r   re   )r   r   r   r  r  r   r   N)r   rJ   onesr?  r   r   r  r  r  r   r  r(   )r   rQ   rR   r   r  Er  GHJKLr  r  EspFspHspHsppJspJsppKspr8  
spmatricesr  r  
dense_multsp_mults                              r:   #test_elementwise_multiply_broadcastz/_TestCommon.test_elementwise_multiply_broadcast|  s   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q!Q1aAq!43S#tS$D
  	CA C!"qyy{!:J **Q-#GOO$5zBC	C  	=A =!"qJjjmG G$'(9:F'<=	= " !*ajj!< ! ! !*ajj!<
 " s<   %!H II:$II	I7#I76I7:	JJc           	         dt         j                  t         j                  dgdt         j                  dt         j                  gt         j                  dt         j                  t         j                  gg}t        t        | j                  | j                  z        |       | j                  g dg dg dgd      }dt         j                  t         j                  dgdt         j                  t        t         j                  gt         j                  d	t         j                  d
gg}t        t        | j                  |z        |       t        g dg dg      }t        g dg dg      }| j                  |      }| j                  |      }t        t        ||z        ||z         t        g dg dg      }t        g dg dg      }| j                  |      }| j                  |      }t        j                  d      5  t        t        ||z        ||z         d d d        t        d
dgdd
gg      }t        dd
gdd
gg      }| j                  |      }| j                  |      }t        j                  dd      5  t        t        j                  t        ||z              ||z         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  r  r  r  r         ?r  g      ?r   r  r  r  r  r  )r  re   r   r.  )r   rE  r   r(  )divide)r  rG  )
rJ   r-  r   r   r   r   r   r   r   rJ  )r   rq  denomrQ   rR   r&  r  s          r:   test_elementwise_dividez#_TestCommon.test_elementwise_divide  s=   rvvbffQ'rvva'VVAbffRVV,. 	74::

#:;XF	*Z@sKrvvbffS)s266*VVD*, 	74::#56A $^45$^45nnQnnQGC#I.!4 78$%78$%nnQnnQ[[) 	:wsSy11q59	: Aa5!A- Aa5!A- nnQnnQ[[(; 	Drxxc	(:;QUC	D 	D	: 	:	D 	Ds    J7?/K7K Kc                 t   t        g dg dg dg dg      }| j                  |      }| j                  rdD ]F  }||z  }||z  }t        |j	                         |       t        |j                  |j                         H t        t        |j                  d       t        t        |j                  d       | j                  |d dd d f         }t        |d	z  j	                         |j	                                y d
D ]a  }||z  }t        j                  j                  ||      }t        |j	                         |       t        |j                  |j                         c dD ]  }t        t        |j                  |        | j                  |d dd d f         }t        t        |j                  d	       y )Nr   r   re   r   )r   r   r  r   )r   r  r   r   )r   r   r  r  )r   re   皙@r   r  r   r   r   r   r   r   re   r   )r   r  r  )r   r   r  r   r   r   r?   r  rm  __pow__r  rJ   r  matrix_powerr  )r   rQ   rR   exponentret_spret_nps         r:   test_powz_TestCommon.test_pow  sh   <|\JKNN10 9HH"6>>#3V<V\\6<<8	9 -qyy!<*aii4 q!Aw'A!Q$)199;7% 9H//8<"6>>#3V<V\\6<<8	9 . ?j!))X>? q!Aw'A)QYY2r<   c                     | j                  g dg dg dg dg      }t        g d|z  t        g d|j                                      t	        g dg      }t        ||z  ||j                         z         y )Nr   r   r   r   r   r   re   r   ry  re   r   r   r  )r   r   r   r   r   )r   r  r  s      r:   test_rmatvecz_TestCommon.test_rmatvec  sY    NNGGIg>?!)a-Y		1LMYK !#'3+<=r<   c                 0   | j                  dgdgdgg      }t        t        |t        d      z               t	        |t        d      z  j                         dgdgdgg       t	        |t        dg      z  t        g d             t	        |t        dgg      z  t        dgdgdgg             t	        |t        j                  d      z  t        dgdgdgg             t	        |t        j                  d      z  t        j                  d             y )Nr   re   r   r  r   r   r   r   r   r   )r   r   r(   r   r   r   rJ   r  r  s     r:   test_small_multiplicationz%_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                 *   t        j                  dgdgdgg      }| j                  |      }| j                  rYt	        |t        j
                  d      z  j                         |       t	        |t        dgg      z  j                         |       y t        |t        dg      z  t        g d             t        |t        dgg      z  t        dgdgdgg             t        |t        j
                  d      z  t        j
                  d             y )Nr   re   r   rW  r  r   r!  )rJ   r   r   r  r   r  r   r   )r   rQ   r&  s      r:   -test_star_vs_at_sign_for_sparray_and_spmatrixz9_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                 6   | j                  dgdgdgg      }t               }t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z  d       t        ||z  d       y )Nr   re   r   r   r   )r   r   r   r   rQ   rR   s      r:   test_binop_custom_typez"_TestCommon.test_binop_custom_type  s    
 NNQC!qc?+MQU01QU01QU01QU12QU12QU12QU01QU12r<   c                 8   | j                  dgdgdgg      }t        d      }t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z  d       t        ||z  d       y )Nr   re   r   rW  r   r   )r   r   r   r&  s      r:   !test_binop_custom_type_with_shapez-_TestCommon.test_binop_custom_type_with_shape*  s    NNQC!qc?+"5)QU01QU01QU01QU12QU12QU12QU01QU12r<   c                      G d d      }d}| j                  dgdgdgg      } ||      }||z  }||z  }t        |j                         |j                                t        |j                  |j                         y )Nc                       e Zd Zd Zd Zy)0_TestCommon.test_mul_custom_type.<locals>.Customc                     || _         y r>   scalar)r   r/  s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__9  s	    $r<   c                      || j                   z  S r>   r.  r   s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__<  s    t{{**r<   N)r   r   r   r   r   ra   r<   r:   Customr,  8  s    %+r<   r1  re   r   r   )r   rC   r   r   r   )r   r1  r/  rQ   r  A_scalarA_cs          r:   test_mul_custom_typez _TestCommon.test_mul_custom_type7  ss    	+ 	+ NNQCQC=)6Nv:!e !1!1!3S[[]CX__cjj1r<   c                     | j                  dgdgdgg      }t               }t        ||k(  d       t        ||k7  d       t        ||kD  d       t        ||k\  d       t        ||k  d       t        ||k  d	       y )
Nr   re   r   r   r   r   r   r   r   )r   r   r   r&  s      r:   test_comparisons_custom_typez(_TestCommon.test_comparisons_custom_typeG  sx    NNQC!qc?+Q!VT"Q!VT"QUD!Q!VT"QUD!Q!VT"r<   c           	          | j                  t        g dg dg dg dg            }d}|j                  |      }||z  }t        |j	                         |j	                                y )Nr  r  r  r  rV   )r   r   r   r   r   )r   r  r/  actualrq  s        r:   test_dot_scalarz_TestCommon.test_dot_scalarQ  sS    NN5'')G!DEFvv:((*:*:*<=r<   c           	         | j                  t        g dg dg dg dg            }| j                  t        ddgddgddggd            }t        g d	g      j                  }t        j                  }t         |||      |j                         |z         t         |||      j                         ||z  j                                t         ||j                         |      ||z  j                                t         |||j                               ||z  j                                t        t        ||d       t        t        |d|       y )
Nr  r  r  r  r   r   re   r  r  )	r   r   r?  operatormatmulr   r   r  r  )r   r  rR   r  r<  s        r:   test_matmulz_TestCommon.test_matmulY  s   NN5'')G!DEFNN51Q%1qe!4S9:WI  !&C.!))+2CD 	"&A,"6"6"81q5//:KL!&a"81q5//:KL!&AIIK"81q5//:KL 	j&!Q/j&!Q/r<   c           
      J   | j                  g dg dg dg dg      }t        g dg      j                  }t        ||z  |j	                         |z         t        |t        g d      z  j                  d       t        |t        dgdgd	gg      z  j                  d
       t        |t        dgdgd	gg      z  j                  d
       t        t        |t        g d      z  t                     | j                  rt        nt        j                  }t        t        |t        g d      j                  z  |             t        ddg      t        g d      t        dgdgg      t        g d      t        dgdgg      g}|D ]  }t        t        |j                  |        t!        |t        g d      z  t#        |j	                         g d             t!        |dgdgd	ggz  t        j$                  t#        |j	                         g d            j                         y )Nr  r  r  r  r  )r  r   re   r   )r  r   r  )r   r   r?  r   r   r   r   r1   r   rI   r
   r  rJ   r  r  r   r   r   
atleast_2d)r   r  r  rd  bad_vecsr@   s         r:   test_matvecz_TestCommon.test_matveck  s   NNGGIg>?WI  !!c'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 	7A*allA6	7
 	AeGn,c!))+g.FGAsA3smOR]]3qyy{7;S-T-V-VWr<   c                    t        g dg dg dg dg      }t        g dg dg dg dg      }t        ddgddgddggd      }| j                  |      }| j                  |      }t        ||z  j	                         ||z         t        ||z  ||z         t        ||z  ||z         t        ||z  ||z         |j                         }|}||z  }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       |j                         }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       |j                         }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       d	}	d
}
t        j                  d       t        |	df      }t        |	      D ]6  }t        d      D ]&  }t        j                         }||
k  s||
z  |||f<   ( 8 | j                  |      }||j                  z  }t        |j	                         |j	                         |j                  j	                         z         t        |j	                         |j	                         |j	                         j                  z         | j                  ddgddgg      }| j                  ddgddgddgg      }t        t        |j                  |       | j                   rt        t        |j"                  |       y y )Nr  r  r  r  r   r   re   r  r  g333333?r   r  r  r   )r1   r   r   r   r   r  r  r  r   r  r   r"  r?  r  r  r   r  r   )r   rN   a2rS   aspbspcspr  wantr  fracrQ   r  r  r  rR   s                   r:   test_matmat_sparsez_TestCommon.test_matmat_sparse  s   GGIg67GGIg67QqE1Q%1&s+nnQnnQ!39"5"5"7Q?!#'1q51!!c'1q51!"s(AE2 iik1u!39"5"5"7>!#'40!!c'40!"s(D1iik!39"5"5"7>!#'40!!c'40!"s(D1iik!39"5"5"7>!#'40!!c'40!"s(D1 A1Q%Lq 	$A1X $MMOt8tVAacF$	$ NN1G!!))+qyy{QSS[[]/JK!!))+qyy{QYY[]]/JK NNQqE1Q%=)NNQqE1Q%1./j!,,2*aii3 r<   c           	      b   g dg dg dg dg}| j                  |      }t        ddgddgd	d
gg      t        ddgddgd	d
gg      g}|D ]c  }||z  }t        t	        || j
                  rt        n
t        |                   t        |j                  d       t        |t        ||             e y )Nr  r  r  r  r   re   r   r  r  r   r  re   )r   r   r1   r   rI   r  r
   typer   r   r   )r   rN   rD  bsrS   results         r:   test_matmat_densez_TestCommon.test_matmat_dense  s    WYw/nnQ aUAa5!A'(&1Q%1qe1D*EF 	+A1WFJv$2D2Dw$q'RSu-Qq*		+r<   c                    t        j                  g dg dg dgddgddgg      }|j                         }| j                  |      }dD ]  }|j	                  |      }t        |j                  |       t        |j                         |       | j                  |d	z         j	                  |      }t        |j                  |       t        |j                         |d	z          | j                  |      j	                  |      }t        |j                  |       t        |j                         |        d
D ]Q  }|j	                  |      }t        ||       | j                  |d	z         j	                  |      }t        ||d	z          S y )Nr  r   r   r  )r  r   r   r   re   r   r   )r5  rb  r6  r7  r{  rD   rc                @)r   dense)r   r   r   r   asformatr   r   r   )r   rQ   r  r   rN   rS   r  s          r:   test_sparse_format_conversionsz*_TestCommon.test_sparse_format_conversions  sC   KK1QqE1Q%=AIIKNN1A 	/F

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

6"Aq!$qt$--f5Aq!B$'	(r<   c           	         t        g dg dg dg      }t        g dg dg      }t        ||      }| j                  |      }dD ]B  }t        |d|z         }dD ],  }d	D ]%  }t	         |||f
      j                         |       ' . D y )Nr  r  r   r   r  r  r.  r   r   r  )r5  to)r   re   r   r   )r   re   r   r  r   r  	blocksize)r   r   r   r{   r   r   )	r   r@   rA   rQ   r&  r   fnXYs	            r:   
test_tobsrz_TestCommon.test_tobsr  s    9Yy1277#$1InnQ 	DFdVm,B! D, DA q!f!5!=!=!?CDD	Dr<   c                      j                   }t        j                  g g      }||g fd} j                  d      }t	        t        j
                  |      j                         t        j
                  t        d                   t	        |j                  j                         t        d             t        t        |j
                  d        j                  D ]$  }t        t                    D ]  } |||        & y )Nc                    t        |   |       }j                  |      }|j                         }|j                         }t        |j	                         |       t        |j                         j	                         |       t        |j                  d      j	                         |       t        |j                  |j                         y )Nr   r   ro  )r   r   r   r   r   r   r?   )r?   r  r   r   rN   rS   r8  r   s         r:   r  z)_TestCommon.test_transpose.<locals>.check  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqI!''*r<   r  r  r   r   rb  )r   rJ   r   r   r   r   r   r   r?  r  r  r  r"  r   )r   r:  r;  r  r  r?   r  r8  s   `      @r:   test_transposez_TestCommon.test_transpose  s    "5>
	+ v&2<<.668<<f6	8577??,eFm<j%//:(( 	 E3x=)  eQ 	 r<   c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }||z   }t        |||z          ||z   }t        |||z          y r>   )r  r  r   r?   r   r   sum1sum2r   s        r:   r  z)_TestCommon.test_add_dense.<locals>.check  sQ    //%(C%%e,E ;DtS3Y/3;DtS3Y/r<   r  r  s   `  r:   test_add_densez_TestCommon.test_add_dense  s&    	0 %% 	E%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                 "   j                   |    }j                  |    }|j                  t        k(  r)||z
  }t	        |||z
         ||z
  }t	        |||z
         y ||z   |z   |z
  }t	        |||z          ||z   |z   |z
  }t	        |||z          y r>   )r  r  r?   r  r   rg  s        r:   r  z)_TestCommon.test_sub_dense.<locals>.check   s    //%(C%%e,E yyD U{"4s3s{"4s3 c	C50"4s3-4"4s3r<   r  r  r  s   `  r:   test_sub_densez_TestCommon.test_sub_dense  s:    	4$ %% 	E((%L	r<   c           	          t        j                  g dg dg dg      t        j                  g dg dg dg      t        j                  g dg dg dg       fd	} j                  D ]m  }t         j                  t         j                  t         j
                  fD ]9  }d
D ]2  } |t        j                  |      t        j                  |      |       4 ; o y )N)r   r   r   )r   r  r  rf  )r   r   re   )r   r   r   r  )r   y      @       @r  )r                 ?y             c                    t        j                  | t         j                        r!j                  
j	                  |             }n j                  	j	                  |             }|dk(  r|j                  d      }n^|dk(  r|j                  d      }nG|dk(  rj	                  |      }n0|dk(  r!j                  j	                  |            }n
t               t        j                         5  t        j                  ddt               |j                  |      }|j                  |      }d d d        t        j                  t        |      t        |            }t        t              |       t        |j                   |j                          t        j                  t        |      t        |            }t        t              |       t        |j                   |j                          y # 1 sw Y   xY w)	Nr/  r   scalar2r   rS  r   r(  zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rJ   rl   complexfloatingr   rt   rL  r  r)  r*  r
  r)   maximumminimumr   r   r   r?   )r?   dtype2btyperQ   rR   max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s            r:   r  z/_TestCommon.test_maximum_minimum.<locals>.check?  sv   }}UB$6$67NN;#5#5e#<=NN7>>%#89 KKN)#KKO'!NN6*("NN7>>&#9: l"((* 	%''0+	 		!		!	% JJwqz71:6Ewu~u5ekk2JJwqz71:6Ewu~u5ekk2#	% 	%s   0>G11G:)r/  rq  rS  r   )rJ   r   r  r   r   r   r?   )r   r  r?   ru  rv  r{  r|  r}  s   `    @@@r:   test_maximum_minimumz _TestCommon.test_maximum_minimum9  s    ((Iy)<=((Iy*=>hh	<FG!	3F %% 	DE77BJJ> DE DE"((5/288F+;UCDD	Dr<   c                    | j                   }t        |j                         j                  |j                         t        |j	                  |d      j                  |j                         t        |j	                  |d      j                  |j                         t        |j                         j                         |j                                t        |j	                  |d      j                         |j                                t        |j	                  |d      j                         |j                                t        |d|j                  z         }t         |       |u        t         |d      |u        t         |d      j                  |j                         t         |d      j                         |j                                t        t        |j                         |              y )NTr  FrY  )	r   r   r,  r   	__class__r   r{   r   rT   )r   rQ   toselfs      r:   	test_copyz_TestCommon.test_copyg  sZ   JJ 	QVVX__ahh/Q[[[-44ahh?Q[[[.55qxx@QVVX%%'5Q[[[.668!))+FQ[[[/779199;G 4!((?+AE"a'(V&--qxx8V&..0!))+> 	+AFFHa889r<   c                     | j                  t        j                  d      j                  dd            }| j	                  |      }t        ||      D ]  \  }}t        |j                         |       ! y )Nr  r  rV   )r  rJ   r   r   r   zipr   r   )r   rR   rQ   r@   rA   s        r:   test_iteratorz_TestCommon.test_iterator  s\    LL2..q"56NN11I 	)DAqa(	)r<   c                 l   t        g       }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }t        j                  ddg      }| j	                  |      }| j	                  |      }	| j	                  |      }
| j	                  |      }| j	                  |      }| j	                  |      }t        |j                  |      j                         t        j                  ||             t        |	j                  |      j                         t        j                  ||             t        |j                  |	      j                         t        j                  ||             t        |
j                  |      j                         t        j                  ||             t        |
j                  |      j                         t        j                  ||             t        |j                  |
      j                         t        j                  ||             t        |j                  |
      j                         t        j                  ||             t        |j                  |      j                         t        j                  ||             t        t        |j                  |       t        t        |j                  |       t        |j                  |      j                         t        j                  ||             t        |	j                  |	      j                         t        j                  ||             t        |j                  |      j                         t        j                  ||             t        |j                  |      j                         t        j                  ||             t        |	j                  |      j                         t        j                  ||             t        |j                  |      j                         t        j                  ||             t        |j                  d      j                         t        j                  |d             t        |	j                  d      j                         t        j                  |d             t        |j                  d      j                         t        j                  |d             t        t        |j                  |       t        t        |j                  |       t        |j                  |      j                         |j                  |             t        |	j                  |	      j                         |j                  |             t        |j                  |      j                         |j                  |             t        t        |j                  |       t        t        |	j                  |       y )Nr  r5  r  r   r  r  r   )r   r   rJ   r  r   r   r   r   r  r  r  r   )r   r   rN   rS   r  r  r  r  rD  rE  rF  dspespfsps                 r:    test_size_zero_matrix_arithmeticz,_TestCommon.test_size_zero_matrix_arithmetic  s    BiKKKKKKKKKKGGQFOnnQnnQnnQnnQnnQnnQ 	3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@ 	j#''1-j#''1- 	3<<,446Aq8IJ3<<,446Aq8IJ3<<,446Aq8IJ3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6G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                    t        g       }|j                  d      }|j                  d      }|j                  d      }|||fD ]  }| j                  |      }t        |j	                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |        y )Nr  r  r  )r   r   r   r   r  r   r  r  toliltodoktobsr)r   r   rN   rS   r  r  spms          r:   test_size_zero_conversionsz&_TestCommon.test_size_zero_conversions  s    BiKKKKKKQ 	9A..#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	9r<   c                    t        j                  g dg dgt         j                        }t        t        d      5  | j                  |       d d d        | j                  |j                  t         j                              }t        t        d      5  | j                  |t         j                         d d d        y # 1 sw Y   sxY w# 1 sw Y   y xY w)N)g      @r   g?rf  r   zdoes not support dtyperk  )rJ   r   float16r  r  r   rt   r   )r   rN   A32s      r:   test_dtype_checkz_TestCommon.test_dtype_check  s    HHmY/rzzB:-EF 	NN1	 nnQXXbjj12:-EF 	2NN3bjjN1	2 	2		 		2 	2s   C"CC
Cc                 *     dd l  fd} |        y )Nr   c                     t        j                         5  t        j                  dt               j                  j                         } t        j                        D ]G  }j                  j                  | |            }t        | j                  |j                         t        | j                         |j                                t        | j                  |j                         | j                  j!                         D ]  \  }}t#        |t$        j&                        rt        ||j                  |          :t#        |t(              r9|r7t#        |d   t$        j&                        rt        ||j                  |          t+        ||j                  |   k(          J 	 d d d        y # 1 sw Y   y xY w)Nr(  )protocolr   )r)  r*  r+  r)   r   r,  r"  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r   rG   itemsrI   rJ   r
   r$  r   )r   r  sploadedkeyrN  pickler   s        r:   r  z&_TestCommon.test_pickle.<locals>.check  sO   ((* C%%h0GH

) %f&=&= > CH%||FLLL,RSH hnn=&u}}8H8H8JK x? %*NN$8$8$: CS%c2::6.sH4E4Ec4JK(e4",SVRZZ"@.sH4E4Ec4JK#C8+<+<S+A$ABCCC C Cs   FF55F>)r  )r   r  r  s   ` @r:   test_picklez_TestCommon.test_pickle  s    	C, 	r<   c                 .      fd}dD ]
  } ||        y )Nc                    | dk(  rt        j                  d       j                  j                  dv rt        j                  d       t	        t
        |       }j                  t        j                  d      j                  dd      dz        } ||j                               } ||      }t        |j                         |       y )	Nsignz2sign conflicts with comparison op support on Numpy)rD   rc  z%Unary ops not implemented for dok/lilr  r  r        4@)r  r  r   r   r{   rJ   r   r   r   r   r   )r   ufuncr]  X0X2r   s        r:   r  z5_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  ra   )r   r  r   s   `  r:   test_unary_ufunc_overridesz&_TestCommon.test_unary_ufunc_overrides  s"    	1 	D $K		r<   c                    t        j                  g dg dg dg      }| j                  |      }t        |j	                  d      d u        t        |j                         ddgddgddgg       |j	                  d	       t        |j                         ddgddgg       |j	                  d       t        |j                         ddgddgddgg       |j	                  d
       t        |j                         g dg dg dg       |j	                  d
       t        |j                         g dg dg dg       |j	                  dd       t        |j                         ddgddgddgg       | j                  r |j                  dv r|j	                  d       n&t        t        t        t        f|j                  d       dD ]  }t        t        |j                  |        y )Nr   r   r   r  re   r   r   r   r   r   r   r   r   re   r   r   re   r   re   re   r`  ry  )re   r   r   rf  )rb  r7  ))r   re   r  r  )rJ   r   r   r   resizer   r   r  r   r  r  rm  
IndexError)r   r  r  	bad_shapes       r:   test_resizez_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6 	;I*ahh	:	;r<   c                 4   | j                   }|j                  }|j                  |d      }t        |j	                         |j	                                |t
        vrt        t        ||             |j                  ||j                  d      }t        |j	                         |j	                                |t
        vrt        t        ||             |j                  |t        j                  d      }t        |j	                         |j	                                |j                  |d      }t        |j	                         |j	                                t        t        ||              dD ]  }||k(  r	|j                  |      }|j                  |d      }t        |j	                         |j	                                |j                  |d      }t        |j	                         |j	                                t        t        ||               y )NFr  )r?   r,  T)r7  r6  rb  r{  rD   rc  )r   r   r  rC   r   NON_ARRAY_BACKED_FORMATSr   rT   r?   rJ   r   r   rT  )r   rQ   self_formatr   other_formatrR   s         r:   test_constructor1_basez"_TestCommon.test_constructor1_base0	  s   JJhhKKK& aiik:66+Aq12KKuK5 aiik:66+Aq12KK%K8199;		4KKK% aiik:+Aq112F 		7L{*

<(AAE*A$QYY[!))+>AD)A$QYY[!))+>/1556		7r<   N)tr   r   r   r   r-   r  r&   r   r#   r  r    r  r!   r  r%   r  r"   r  r$   r  r   r  classmethodr  r   r$  r:  r=  r@  rP  rS  rZ  r^  ri  rr  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markslowr  r  r*  r,  r?  rI  rQ  r]  ra  re  ri  rk  rp  rr  rt  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)  r4  r6  r9  r=  rA  rI  rO  rU  r_  rd  rj  rm  r~  r  r  r  r  r  r  r  r  r  ra   r<   r:   r
  r
  1  s?   @"KMMMMMMMG; ;.	1"H#J4;z:x6p6pY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F(" E65?&P(" F67A>6N22'6R#6J(LT="		
,02<08=t!DF3B>
;A3"32 #>0$X>64p+(2
D 86,D\:0)84t924*';R7r<   r
  c                   $    e Zd Zd Zd Zd Zd Zy)_TestInplaceArithmeticc                    t        j                  d      }| j                  |      }|j                         }|j                         }||z  }||z  }t	        ||       |j                         }|j                         }||z  }||z  }t	        ||       | j
                  rn|j                         }|j                         }t        t        d      5  ||j                  z  }d d d        ||z  }||z  }t	        ||j                                nu|j                         }|j                         }t        t        d      5  ||z  }d d d        |j                  |j                        }||j                  z  }t	        ||       |j                         }||j                  z  }|j                         }|j                         }t        t        d      5  ||z  }d d d        |j                  |j                        }||j                  z  }t	        ||       t        t        d      5  ||z  }d d d        y # 1 sw Y   XxY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   y xY w)Nr  inconsistent shapesrk  zdimension mismatchunsupported operand)rJ   r  r   r,  r   r  r  r  r?  r   r   r  )r   rN   rS   r@   rA   s        r:   test_inplace_densez)_TestInplaceArithmetic.test_inplace_denseS	  s	   GGFONN1FFHFFH	Q	Q1a FFHFFH	Q	Q1a AAz1FG QSSAAFAq!))+. AAz1EF Qacc
AHAq!$ FFH	QSSFFHFFH:-AB 	FA	EE!##J	QSS1a  9,AB 	!GA	 	7  	 		 	s0   H6>II'I6I III%c                 B      fd} j                   D ]
  } ||        y )Nc                    j                   |    }j                  |    }t        j                  t        | d      rD|j                         }|dz  }|j                         }|dz  }t        ||j                                t        j                  t        | d      rE|j                         }|dz  }|j                         }|dz  }t        ||j                                y y N	same_kind)castingre   r  	r  r  rJ   can_castintr,  r   r   r  r?   r   r   rN   rS   r   s        r:   r  z6_TestInplaceArithmetic.test_imul_scalar.<locals>.check	  s    //%(C%%e,E {{3{;JJLQHHJQ"1aiik2{{5%=JJLT	HHJT	"1aiik2 >r<   r  r  s   `  r:   test_imul_scalarz'_TestInplaceArithmetic.test_imul_scalar	  s&    	3& %% 	E%L	r<   c                       fd} j                   D ]8  }t        j                  |t        j                  t                    r1 ||       : y )Nc                    j                   |    }j                  |    }t        j                  t        | d      rD|j                         }|dz  }|j                         }|dz  }t        ||j                                t        j                  t        | d      rE|j                         }|dz  }|j                         }|dz  }t        ||j                                y y r  r  r  s        r:   r  z6_TestInplaceArithmetic.test_idiv_scalar.<locals>.check	  s    //%(C%%e,E{{3{;JJLQHHJQ"1aiik2{{5%=JJLT	HHJT	"1aiik2 >r<   )r  rJ   r  r?   r  r  s   `  r:   test_idiv_scalarz'_TestInplaceArithmetic.test_idiv_scalar	  s>    	3$ %% 	E ;;ubhhsm4e		r<   c                    | j                  t        j                  d            }| j                  t        j                  d            }| j                  t        j                  d            }||z  }||z   }t        |j	                         |j	                                | j
                  r2||z  }||z  }t        |j	                         |j	                                ||z  }||z  }t        |j	                         |j	                                ||z  }||z
  }t        |j	                         |j	                                t        t        d      5  ||z  }d d d        y # 1 sw Y   y xY w)Nr  r  rk  )r   rJ   r'   r   r   r  r  r  )r   rN   rS   bps       r:   test_inplace_successz+_TestInplaceArithmetic.test_inplace_success	  s    NN266!9%NN266!9%^^BFF1I&	Q!V		RZZ\2FAaBAIIK6	Q!V		RZZ\2	Q!V		RZZ\29,AB 	!GA	 	 	s   E!!E*N)r   r   r   r  r  r  r  ra   r<   r:   r  r  R	  s    0d.2r<   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)_TestGetSetc                 \      fd}t         D ]  } |t        j                  |              y )Nc                 l   t        g dg dg dg dg|       }j                  |      }|j                  \  }}t        | |      D ]*  }t        | |      D ]  }t	        |||f   |||f           , t	        t        |d         |        dD ]#  }t        t        t        f|j                  |       % y )Nry  r  r   r   r   re   r   rf  r   r  rC  rt  )r  r   rc  )r  r   r  )
r   r   r   r"  r   rL  r  r  r  __getitem__)	r?   r  rQ   r  r  r  r  r'  r   s	           r:   r  z*_TestGetSet.test_getelement.<locals>.check	  s    w  (-.A q!A''CAaA2q\ 1r1 1A 1Q31Q3011 afu-B Jz95q}}bIJr<   r-   rJ   r?   r  s   `  r:   test_getelementz_TestGetSet.test_getelement	  s*    	J$ & 	#E"((5/"	#r<   c                       fd}d t         j                  d g}|D ])  }t        D ]  } |t        j                  |      |         + y )Nc                    j                  d|       }t        j                         5  t        j                  dt        t
                || j                  d            |d<    || j                  d            |d<    || j                  d            |d	<    || j                  d
            |d<    || j                  d            |d<    || j                  d            |d<    || j                  d            |d	<   d d d        | t        j                  k7  r#t        |j                         g dg dg dg       dD ]  }t        t        |j                  |d         g dt        g d      fD ]  }t        t        |j                  d|         t        j                   | t        j"                        s8| t        j                  k7  r$dD ]  }t        t$        |j                  d|         y y y # 1 sw Y   xY w)Nr  r   r(  r   r  r  r   re   r   r5  r|  r  r  r   r   r  r   rE  r  )r   r  r   r  )r   r   r  r   )re   r   r  r   ))r   r  )r   r  r!  r  ru  g     ^@r  )rR  )r   r)  r*  r
  r  r)   rL  rJ   bool_r   r   r  r  __setitem__r   r  rl   rr  r  )r?   scalar_containerrQ   r'  r   r   s        r:   r  z*_TestGetSet.test_setelement.<locals>.check	  s   vU3A((* :''$8OP*5::a=9$*5::c?;$*5::a=9$*5::c?;$+EJJqM:%,UZZ];&	*5::a=9$:  "IIK,l!K A Dj!--UCD  y!12 Dj!--CD ==(:(:;@Q GA!)Q]]FAFG AR;+: :s   CG//G8c                 B    t        t        j                  | gg            S r>   )r!   rJ   r   r@   s    r:   <lambda>z-_TestGetSet.test_setelement.<locals>.<lambda>
  s    i1#0 r<   c                     | S r>   ra   r  s    r:   r  z-_TestGetSet.test_setelement.<locals>.<lambda>
  s    a r<   )rJ   r   r-   r?   )r   r  scalar_containersr  r?   s   `    r:   test_setelementz_TestGetSet.test_setelement	  sR    	G8 1"((K
 !2 	9) 9bhhuo'789	9r<   c                 h      fd} j                   D ]  } |t        j                  |              y )Nc                     j                  d|       }t        j                         5  t        j                  dt        t
               d|d<   d d d        t        |d   d       y # 1 sw Y   xY w)N)r   rV   r   r(  r   )r   r  )r   r)  r*  r
  r  r)   r   r?   rQ   r   s     r:   r  z9_TestGetSet.test_negative_index_assignment.<locals>.check
  sb    we4A((* ''$8OP% 51% s   %A&&A/r  r  s   `  r:   test_negative_index_assignmentz*_TestGetSet.test_negative_index_assignment
  s/    	& %% 	#E"((5/"	#r<   c           	           d\   fd}dddt        d      dfdt        d      ft        d      t        d      ffD ]  \  }} |||d        y )	Nr  rV   c                 <   | d|d|}j                  f      }t        j                         5  t        j                  dt        t
               d|| |f<   d d d        t        |j                         ||       t        || |f   d|       y # 1 sw Y   9xY w)Nz ; r(  r   r  )r   r)  r*  r
  r  r)   r   r6  )r  r  nitemsr6   rQ   r  r  r   s        r:   	_test_setz3_TestGetSet.test_scalar_assign_2.<locals>._test_set
  s    EQEVJ/C1v&A((* ''$8OP!Q$  =!Q$C8	 s   'BBre   r   r   r  r  r   rE  r   )r   r   r  r  r  r  r  s   `   @@r:   test_scalar_assign_2z _TestGetSet.test_scalar_assign_2
  s_    1	9 WhrB"eBiBir+- 	DAqaA	r<   c                 F   | j                  d      }t        j                  d      }t        j                         5  t        j
                  dt        t               ||fD ]  }d|d<   d|d<   d|d<    	 d d d        t        |j                         |       y # 1 sw Y   $xY w)Nr  r(  r   r5  r  r!  r  
r   rJ   r   r)  r*  r
  r  r)   r   r   r   s       r:   test_index_scalar_assignz$_TestGetSet.test_index_scalar_assign)
  s    NN6"HHV$$& 	##Hd4KLV ###	 	199;*	 	s   8BB N)r   r   r   r  r  r  r  r  ra   r<   r:   r  r  	  s    #,!9F#"	+r<   r  zfails in parallelreasonc                       e Zd Zd Zy)
_TestSolvec                 2   d}t         j                  j                  d       t        ||ft              }t         j                  j                  |      }t         j                  j                  |dz
        dt         j                  j                  |dz
        z  z   }t         j                  j                  |      }t        t        |            D ]  }||   |||f<    t        t        |            D ]%  }||   |||dz   f<   t        ||         ||dz   |f<   ' | j                  |      }t        j                         5  t        j                  ddt               t        |      j                  |      }d d d        t!        ||z  |       y # 1 sw Y   xY w)Nr  r   r   r   ro  r(  r}  )rJ   r   r  r   rI  r9  r"  r   r   r   r)  r*  r
  r)   r2   solver   )r   r  rQ   r@   rA   r  r  s          r:   
test_solvez_TestSolve.test_solve7
  sW    
		q1Q%w'IINN1IINN1Q3299>>!A##6 66IINN1s1v 	AqTAacF	s1v 	'AtAa!eH 1Aac!eH	' NN1$$& 	!##B') Qa A		!
 	AE!$	! 	!s   ?6FFN)r   r   r   r  ra   r<   r:   r  r  5
  s    %r<   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d      d	        Zd
 Zd Zd Zd Zd Zy)_TestSlicingc                 T   t        | j                  dt        j                        dddf   j                  t        j                         t        | j                  dt        j
                        dddf   j                  t        j
                         t        | j                  dt        j                        dddf   j                  t        j                         t        | j                  dt        j                        dddf   j                  t        j                         y )Nr   rV   r   r   r   r  )r   r   rJ   r   r?   rZ   r   r   r   s    r:   test_dtype_preservationz$_TestSlicing.test_dtype_preservationO
  s    T^^F"((^;AacEBHH"((ST^^F"((^;AacEBHH"((ST^^F"**^=a!eDJJBJJWT^^F"**^=a!eDJJBJJWr<   c                    t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  d|      }t        |d d dddf   j                  |       t        |dddd d f   j                  |       t        |ddddf   j                  |       t        |ddddf   j                  |        y )Nr  r   r   re   rJ   r   rZ   r   r   r   r   r?   r   dtrQ   s      r:   #test_dtype_preservation_empty_slicez0_TestSlicing.test_dtype_preservation_empty_sliceU
  s     88RXXrzz2::> 	0BvR0A1a!e8**B/1Qq5!8**B/1a!e8**B/1Qq5!8**B/	0r<   c           	         | j                  t        d      j                  dd            }| j                  |      }| j                  rdndgdgdgf\  }}}t        ||d d f   |dd d f   j                                t        ||ddf   |dddf   j                                | j                  g dg d	g d
g dg      }| j                  |      }t        ||ddf   |dddf   j                                | j                  g dg dg d
g dg      }| j                  |      }	t        ||ddf   |	dddf   j                                t        ||dd f   |	ddd f   j                                t        t        |j                  t        d       df       t        t        |j                  dt        dd      f       y )N      I@r  rV   r.  r   r   re   r   re   r   r  r   r   rf  r  r   r  r   r   rE     r   r  )r  r   r   r   r  r   r   r  r  r  slice)
r   rR   rQ   r0r1r2r   r  r  r  s
             r:   test_get_horiz_slicez!_TestSlicing.test_get_horiz_slice_
  s   LL,,Qr23NN1"&"4"4YA3aS/
B1RU8Qq!tW__%671R1W:qAaCy'8'8':;LL)Y	9EFNN11R1W:qAaCy'8'8':; LL)Y	9EFNN11R1W:qAaCy'8'8':;1RW:qBCy'8'8':; 	j!--%+r1BCj!--!U1a[1ABr<   c           	         t        d      j                  dd      }| j                  |      }| j                  rdndgdgdgf\  }}}t	        |dd|f   |dddf   j                                t	        |d d |f   |d d df   j                                t        g dg d	g d
g dg      }| j                  |      }t	        |dd|f   |dddf   j                                t	        |d d |f   |d d df   j                                t        g dg dg d
g dg      }| j                  |      }	t	        |d d |f   |	d d df   j                                t	        |dd |f   |	dd df   j                                t        t        |j                  t        d       df       t        t        |j                  dt        dd      f       y )Nr  r  rV   r.  r   r   re   r  r  rf  r  r   r!  r  rE  r  r   r  )r   r   r   r  r   r   r   r  r  r  r   )
r   rR   rQ   c0c1c2r   r  r  r  s
             r:   test_get_vert_slicez _TestSlicing.test_get_vert_slicet
  s   3K2&NN1"&"4"4YA3aS/
B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   t        d      j                  dd      }| j                  |      }t        |ddddf   j	                         |ddddf          t        |dd d df   j	                         |dd d df          t        |d ddd f   j	                         |d ddd f          t        g d	g d
g dg dg      }| j                  |      }t        |ddddf   |ddddf   j	                                t        |d d dd f   |d d dd f   j	                                y )Nr  r  rV   re   r   r   r   r   r!  r  rf  r  )r   r   r   r   r   r   )r   rR   rQ   r  r  s        r:   test_get_slicesz_TestSlicing.test_get_slices
  s4   3K2&NN11QqS!A#X;..0!AaC1H+>1QR"W:--/12ss7<1SbS!"W:--/3B37< 9iI>?NN11QqS!A#X;!A#qs((;(;(=>1QU8Qq!"uX%5%5%78r<   c                    t         j                  j                  dd      }	 | j                  |      ddddddf   }t        |j                         |ddddddf          y # t        $ r t        j                  d      w xY w)Nr  r      re   r  r   feature not implemented)	rJ   r   r9  r   r  r  r  r   r   )r   v0r   s      r:    test_non_unit_stride_2d_indexingz-_TestSlicing.test_non_unit_stride_2d_indexing
  s    YY^^B#	9r"1R61R6>2A
 	199;1R61R6>(:;	  	9++788	9s   A$ $Bc                    | j                  t        d      j                  dd            }| j                  |      }t	        |d   |d          t	        |d   |d          t	        |d   |d          t	        |t        d      df   |d          t	        |dt        d      f   |d          t	        |t        d      t        d      f   |d          t	        |d	d d f   j                         |d	d d f          t	        |d	ddf   j                         |d	ddf          t	        |t        d	      ddf   j                         |d	ddf          t	        |d d d	f   j                         |d d d	f          t	        |d
ddf   j                         |d
ddf          t	        |dddf   j                         |dddf          t	        |d	dd
f   j                         |d	dd
f          t	        |d	dt        d
      f   j                         |d	dd
f          t	        |dd	dd	f   j                         |dd	dd	f          t	        |dd d
d f   j                         |dd d
d f          t	        |d dd df   j                         |d dd df          t	        |d	dd df   j                         |d	dd df          t	        |dd d f   j                         |dd d f          t	        |dd d f   j                         |dd d f          t	        |t        d      d d f   j                         |dd d f          t	        |dd j                         |dd        t	        |dd j                         |dd        t        t        d	      t        d      d       }t	        ||d d f   j                         |d	dd d f          t	        |d d |f   j                         |d d d	df          y )Nr  r  rV   r  r  r  r   rE  re   r   r  r  r   r  )	r  r   r   r   r   r   r   r   r   )r   rR   rQ   r  s       r:   test_slicing_2z_TestSlicing.test_slicing_2
  s   LL++Ab12NN1 	QsVQsV$QtWag&QuXah'QuRy|_QuX.Qr%)|_QuX.QuRyr*+AeH5 	Qq!tW__&!Q$0Qq!B$wZ'')1Q"W:6QuQx2~&..0!AqtG*= 	Qq!tW__&!Q$0QqsAvY&&(!AaCF)4QqsBwZ'')1QqS"W:6QqtQwZ'')1QrT1W:6QqtU1X~&..0!AbD!G*= 	QqsAaCx[((*Aac1Q3hK8Qqr12vY&&(!ABF)4Qrr2A2vY&&(!BQBF)4QqtRaRx[((*AadBQBhK8 	Qq!tW__&!Q$0Qr1uX%%'2q52QuRy!|_,,."a%9 	QqV^^%q1v.QqW__&!B0 $q'$q'$'Qq!tW__&!A#q&	2Qq!tW__&!QqS&	2r<   re   c                    | j                  t        d      j                  dd            | j                        t        j
                  }|d d |dd |dd  |dd d   |dd |dd |d	dd
   |dd d   |d dd
   dd|d d  |dd d
ddt        d
      t	        j                  d      g}fd}t        |      D ]  \  }} ||        fd}t        |      D ]!  \  }}t        |      D ]  \  }} |||        # g }	t        j                  dgdz   D ](  \  }}}
|
dk(  r|	j                  t        |||
             * |	D ]  } |||        ||d        |d|        y )Nr  r  rV   re   r   r   r  r  r  r   r  rE  r   r  r  c                     |    }|    }|j                   dk(  rt        ||t        |              y |j                  dk(  r|j                  dk(  ry t	        |j                         |t        |              y Nra   r   )r   r   r  rk   r   r   )rN   r@   rA   rQ   rR   s      r:   check_1z,_TestSlicing.test_slicing_3.<locals>.check_1
  s^    !A!Aww"}Q47+66Q;166Q;&qyy{AtAw?r<   c                    t        | t        j                        rt        |       }n| }t        |t        j                        rt        |      }n|}| |f   }||f   }|j                  dk(  rt        ||t        | |f             y |j                  dk(  r|j                  dk(  ry t        |j                         |t        | |f             y r5  )
rI   rJ   r
   r  r   r   r  rk   r   r   )rN   rS   aibir@   rA   rQ   rR   s         r:   check_2z,_TestSlicing.test_slicing_3.<locals>.check_2
  s     !RZZ(V!RZZ(V!Q$A"b&	Aww"}Q4A<066Q;166Q;&qyy{AtQF|Dr<   )
Nr   r   re   r  r  r   rE  r  i)r  r   r   r   rJ   s_r   r   	enumerate	itertoolsproductrL   r   )r   r;  slicesr6  r  rN   r:  r  rS   extra_slicesr  rQ   rR   s              @@r:   test_slicing_3z_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% 	DAqAJ		E0 f% 	DAq!&) 11	
  (( -= ,>>?,@ B 	0GAq!AvaA/		0  	AAqMArNBN	r<   c                    | j                  t        d      j                  dd            }| j                  |      }|d   j                  dk(  sJ |d dddf   j
                  dk(  sJ |d	   j
                  d
k(  sJ |d   j
                  dk(  sJ |d   j
                  dk(  sJ |d dd d f   j
                  dk(  sJ |dd d d f   j
                  dk(  sJ |dd d d f   j
                  dk(  sJ |d dddf   j
                  |d dddf   j
                  cxk(  rdk(  sJ  J |ddd df   j
                  |ddd df   j
                  cxk(  rdk(  sJ  J |dddd f   j
                  |dddd f   j
                  cxk(  rdk(  sJ  J |d dddf   j
                  |d dddf   j
                  cxk(  rdk(  sJ  J |dd ddf   j
                  |dd ddf   j
                  cxk(  rdk(  sJ  J |dddd f   j
                  |dddd f   j
                  cxk(  rdk(  sJ  J | j                  r|dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J y |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J y )Nr  r  rV   r  r   r   re   r  )Nr   re   Nr  )Nr   r  )r   N)rV   r   r   re   r   )re   )Nr   re   )r   )r   Nre   )r   re   N)r  r   r   r   r   r   r  r   rR   rQ   s      r:   test_None_slicingz_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                 r   | j                  t        d      j                  dd            }| j                  |      }t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t        j                  t        d	
      5  |d    d d d        t        j                  t        d
      5  |d    d d d        t        j                  t        d	
      5  |j                  d    d d d        t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |d ddf   j                         |d ddf          t	        |dd df   j                         |dd df          t	        |d ddf   j                         |d ddf          t	        |dd df   j                         |dd df          t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |dd ddf   j                         |dd ddf          t	        |dddd f   j                         |dddd f          t	        |dddd f   j                         |dddd f          t	        |d dddf   j                         |d dddf          t	        |ddd df   j                         |ddd df          t	        |ddd df   j                         |ddd df          t        |d   |d          t        |d   |d          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr  r  rV   .).)r  .).r  ).r  zindex .5. out of rangerk  )r  .zindex .10. out of range).rV   r   re   )r   r   .)r   .r   )r  r   r   r   r   r   r  r   r  r?  r   r   rS   rN   s      r:   test_ellipsis_slicingz"_TestSlicing.test_ellipsis_slicing6  s   LL++Ab12NN11S6>>+QsV41T7??,ag61V9,,.&	:1V9,,.&	:1V9,,.&	:]]:-EF 	fI	]]:-FG 	gJ	]]:-EF 	CCK	 	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;	 		 		 	s$   7P P	P,PP),P6c                    | j                  t        d      j                  dd            }| j                  |      }g d}dgdz  |z   }||z   }|gdz  }t	        t        ||df         ||df          t	        t        |d|f         |d|f          t	        t        ||df         ||df          t	        t        |d|f         |d|f          t	        t        ||d|f         ||d|f          t	        t        |d||f         |d||f          t	        t        |||df         |||df          t        t        d      5  |||f    d d d        y # 1 sw Y   y xY w)	Nr  r  rV   )TFTFTF.zshape mismatchrk  )r  r   r   r   r   r   r  r  )r   numpy_arN   ix5ix10
ix10_6Truefull_ixs          r:   test_ellipsis_fancy_boolz%_TestSlicing.test_ellipsis_fancy_bool_  ss   ,,vbz11!R89NN7#.w{S 3Y
&1*71Wc\?3WWc\5JK71S'\?3WS'\5JK71S#X;/c1BC71S$Y<0'#t)2DE71S#t^#45wsC~7NO71S#t^#45wsC~7NO71S$^#45wsD#~7NO:-=> 	c:o	 	 	s   EEc           	         | j                  t        d      j                  dd            }| j                  |      }t	        |dgdf   j                         |dgdf          t	        |ddgdf   j                         |ddgdf          t	        |ddgf   j                         |ddgf          t	        |dddgf   j                         |dddgf          t	        |dgddf   j                         |dgddf          t	        |ddgddf   j                         |ddgddf          t	        |dgddf   j                         |dgddf          t	        |ddgdf   j                         |ddgdf          t	        t        |ddgdddgf         |ddgdddgf          t	        t        |dddgddgf         |dddgddgf          y )Nr  r  rV   r  .re   r   )r  r   r   r   r   r   rG  s      r:   test_ellipsis_fancy_slicingz(_TestSlicing.test_ellipsis_fancy_slicingu  s   LL++Ar23NN11aS#X;..0!QCH+>1aVS[>113Q1vs{^D1S1#X;..0!C!H+>1S1a&[>113QsQF{^D1aS!S[>113QsAs{^D1aVQ^,4461a&!S.8IJ1aS#q[>113QsC{^D1S1#q[>113QsQC{^D71aVS1a&%8#9:Aq!fcAq6>Q<RS71S1a&1a&%8#9:AcAq6Aq6>Q<RSr<   c                 ,   | j                  t        d      j                  dd            }t        j                  t
        d      5  |d    d d d        t        j                  t
        d      5  |d    d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nr   r   re   z(an index can only have a single ellipsisrk  )..).r   .)r   r   r   r  r   r  r   rN   s     r:   test_multiple_ellipsis_slicingz+_TestSlicing.test_multiple_ellipsis_slicing  s    NN6!9,,Q23]]:!KM 	hK	 ]]:!KM 	kN	 		 		 	s   A>/B
>B
BN)r   r   r   r  r  r$  r)  r+  r0  r2  r  r  	fail_slowrA  rE  rH  rO  rQ  rT  ra   r<   r:   r  r  N
  sl    X0C*C,9	<+3Z [[1@ @D"HH'1R,T"r<   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
_TestSlicingAssignc                    | j                  d      }t        j                  d      }t        j                         5  t        j
                  dt        t               ||fD ]2  }d|dddf<   d|dddf<   d|dddf<   d|ddd f<   d|dd ddd f<   4 	 d d d        t        |j                         |       y # 1 sw Y   $xY w)	Nr  r(  r   r   r  r   r  r   r  r   s       r:   test_slice_scalar_assignz+_TestSlicingAssign.test_slice_scalar_assign  s    NN6"HHV$$& 	 ##Hd4KLV  !A#a%!A#a%!A#a%!AB$!%R%( 	  	199;*	  	 s   AB88Cc                      d\   fd}dt        d      fdt        d dd      fdt        dd      ft        d      t        dd      ffD ]  \  }} |||        y )	Nr  c                 N   d| d|}j                  f      }t        j                         5  t        j                  dt        t
               d|| |f<   d d d        t        j                  f      }d|| |f<   t        |j                         ||       y # 1 sw Y   DxY w)Nzi=z; j=r(  r   r  )
r   r)  r*  r
  r  r)   rJ   r   r   r   )r  r  r6   rQ   rR   r  r  r   s        r:   r  z9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set  s    qe4u%C1v&A((* ''$8OP!Q$ !Q AAadG%aiik1cB s   'BB$re   r   rV   r  r  rE  )r   r   r  s   `   @@r:   test_slice_assign_2z&_TestSlicingAssign.test_slice_assign_2  sl    1	C q]QdB(:$;aq"=NAha-/ 	DAqaO	r<   c                    | j                  d      }t        j                         5  t        j                  dt        t
               d|d<   d|d<   d|d<   d	|d
<   |d	z  }|dd d f   |dd d f<   t        |dd d f   j                         |dd d f   j                                |d	z  }|d dd df   |d d d d f<   t        t        j                  d      |d   z   |j                                |d	z  }|d dd d f   j                  |d ddf<   t        |dd d f   j                         j                  |d ddf   j                                d d d        y # 1 sw Y   y xY w)Nrc  r(  re   r  r  r  r   rC  rV   r!  r   r   r   )r   r)  r*  r
  r  r)   r   r   rJ   r   r?  rD  s      r:   test_self_self_assignmentz,_TestSlicingAssign.test_self_self_assignment  sU   NN5!$$& 	G##Hd4KLAcFAcFAcFAcFBAqsVAacFq1v~~/1Q31ABBArr"1"uXAacFrxx37EBAa{}}Acrc!eHq1v~~/111SbSU83C3C3EF#	G 	G 	Gs   D+EE#c                    | j                  d      }t        g dg dg dg dg      }ddgddgg}t        j                         5  t        j                  d	t
        t               d
|d<   d|d<   d|d<   ||z   |d d d d f<   t        |j                         |       | j                  t        |            |d dd df<   t        |j                         d dd df   |       d d d        y # 1 sw Y   y xY w)Nrc  rV   r   r   )r   r   r   )r   r  r   rf  r   r   r  r(  r  r  r   r  r  rC  re   )
r   r   r)  r*  r
  r  r)   r   r   r  )r   rR   rq  blocks       r:   test_slice_assignmentz(_TestSlicingAssign.test_slice_assignment  s    NN5!(!"!# $ A!u$$& 		;##Hd4KLAcFAcFAcFqSAacFqyy{H5))%,7Abqb!eHqyy{2A2rr62E:		; 		; 		;s   BC++C4c                    | j                  d      }t        j                         5  t        j                  dt        t
               d|d<   d|d<   d|d<   d	|d
<   | j                  t        j                  d            |d d d d d        t        g dg dg dg dg      }t        |j                         |       y # 1 sw Y   ;xY w)Nrc  r(  r  r  r   r  r  rC  rV   r!  ry  r  r  r`  )r   r)  r*  r
  r  r)   r  rJ   r'   r   r   r   )r   rR   rq  s      r:   "test_sparsity_modifying_assignmentz5_TestSlicingAssign.test_sparsity_modifying_assignment  s    NN5!$$& 	2##Hd4KLAcFAcFAcFAcF&&rvvay1AbqE	2 '''(;<199;1	2 	2s   AB;;Cc                 b   | j                  d      }t        t        dt                    }t        j
                  }|d d |dd |dd  |dd d   |ddd   |dd d   |d d	d   d
d|d d  |dd	 dddt        d      t	        j                  d      g}t        j                         5  t        j                  dt        t               t        |      D ]3  \  }}|||<   |||<   t        |j                         |t        |             5 t        |      D ]d  \  }}t        |      D ]Q  \  }}d|z  d|dz   z  z   |||f<   d|z  d|dz   z  z   |||f<   t        |j                         |t        ||f             S f t!        ddd      |d
dddf<   t!        ddd      |d
dddf<   t        |j                         |       t	        j"                  dd	d      d d d f   |dd	dd
f<   t	        j"                  dd	d      d d  |dd	dd
f<   t        |j                         |       d d d        t%        t&        |j(                  dt+        t!        d                   t%        t&        |j(                  dt#        d             t%        t&        |j(                  d
t-        d       ft+        t!        d                   t%        t&        |j(                  t-        d       dft+        t!        d                   t%        t&        |j(                  t-        d       df|j/                                t%        t&        |j(                  g dg dgg dfg d       t%        t&        |j(                  g dg dg dgg dg dgfg d       t%        t&        |j(                  t-        d      d
fddgddgg       y # 1 sw Y   xY w)Nr  re   r   r   r  r   r  rE  r  r   r  r  r(  rV     r  d   r  rQ  r  )r  r   r   r   re   r  )r   r   r   r  )r   r   r   r  rJ   r;  r   r)  r*  r
  r  r)   r<  r   r   r  r"  r   r  r  r  listr   r,  )	r   rQ   rR   r;  r?  r  rN   r  rS   s	            r:   test_set_slicez!_TestSlicingAssign.test_set_slice  sf   NN6"%'(UURa&"Qq'2ab62add8QqV*bBiEQrEQ1r!AwB)RWWR[*
 $$& 	/##Hd4KL!&) <1!!"199;47;<
 "&) E1%f- EDAqTD!A#J.AacFTD!A#J.AacF&qyy{AtQF|DEE !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   $E9N$$N.c                     | j                  t        j                  d            }| j                  d      }||dd df<   t        |j	                         g dg dg       y )Nr  r  r   re   r   r   r   r  )r   rJ   r  r   r   r&  s      r:   test_assign_emptyz$_TestSlicingAssign.test_assign_empty  sN    NN2776?+NN6" !RaR%199;I(>?r<   c                     | j                  t        j                  d            }t        j                  d      }||d d df<   ||dd d f<   t	        |j                         g dg dg dg       y )Nr`  r   r   r   r"  rf  )r   rJ   r  r   r   r   r   rQ   r@   s      r:   test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_slice  sV    NN2776?+HHQK!Q$!Q$199;Iy(IJr<   N)r   r   r   rY  r\  r^  rb  rd  rj  rm  rp  ra   r<   r:   rW  rW    s.    +"G,;&2+(Z@Kr<   rW  c                   R    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)_TestFancyIndexingzTests fancy indexing features.  The tests for any matrix formats
    that implement these features should derive from this class.
    c                    t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  d|      }t        |d d ddgf   j                  |       t        |g dd d f   j                  |       t        |d d g f   j                  |       t        |g d d f   j                  |        y )Nr  r   F)FFFr  r  s      r:   #test_dtype_preservation_empty_indexz6_TestFancyIndexing.test_dtype_preservation_empty_index(  s     88RXXrzz2::> 	-BvR0A1uen,-33R80!34::B?1b5,2q5,	-r<   c                 6   | j                  t        j                  ddg            }t        t        t
        t        f|j                  d       t        t        t
        t        f|j                  d       t        t        t
        f|j                  g dg df       y )Nr  foore   rv  r  r  )r   rJ   r   r  r  r  r  r  r  s     r:   test_bad_indexz!_TestFancyIndexing.test_bad_index2  sh    NN288QF+,z:y91==%Pz:y91==*Uz:. ,/	1r<   c           
         | j                  t        d      j                  dd            }| j                  |      }t	        |dg   j                         |dg          t	        |ddg   j                         |ddg          t	        |ddgf   j                         |ddgf          t	        |dddgf   j                         |dddgf          t	        |dddgf   j                         |dddgf          t	        |t        d      ddgf   j                         |dddgf          t	        |dt        ddg      f   j                         |dddgf          t	        |t        d      t        ddg      f   j                         |dddgf          t	        |d d g d	f   j                         |d d g d	f          t	        |dd
dgf   j                         |dd
dgf          t	        |dd
ddgf   j                         |dd
ddgf          t	        |dd
t        ddg      f   j                         |dd
ddgf          t	        |dgdf   j                         |dgdf          t	        |ddgdf   j                         |ddgdf          t	        |ddgdf   j                         |ddgdf          t	        |t        ddg      df   j                         |ddgdf          t	        |ddgt        d      f   j                         |ddgdf          t	        |t        ddg      t        d      f   j                         |ddgdf          t	        |dgd d f   j                         |dgd d f          t	        |ddgd d f   j                         |ddgd d f          t	        |ddgddf   j                         |ddgddf          t	        |t        ddg      ddf   j                         |ddgddf          t	        t        |dgd
gf         |dgd
gf          t	        t        |ddgdd
gf         |ddgdd
gf          t	        t        |ddgddgf         |ddgddgf          t	        t        |t        ddg      ddgf         |ddgddgf          t	        t        |ddgt        ddg      f         |ddgddgf          t	        t        |t        ddg      t        ddg      f         |ddgddgf          t	        |dgdggdd
gf   j                         |dgdggdd
gf          t	        |dgdgdggddgf   j                         |dgdgdggddgf          t	        |t        dgdgdgg      ddgf   j                         |dgdgdggddgf          t	        |dgdgdggt        ddg      f   j                         |dgdgdggddgf          t	        |t        dgdgdgg      t        ddg      f   j                         |dgdgdggddgf          t	        |ddg   j                         |ddg          t	        |ddg   j                         |ddg          t	        |t        ddg         j                         |ddg          t	        |dgd d f   d d d
gf   j                         |dgd d f   d d d
gf          t	        |ddgd d f   d d dd
gf   j                         |ddgd d f   d d dd
gf          t	        |ddgd d f   d d ddgf   j                         |ddgd d f   d d ddgf          t	        |t        ddg      d d f   d d t        ddg      f   j                         |ddgd d f   d d ddgf          t	        |dddggf   ddggdf   j                         |dddggf   ddggdf          t	        |dddggf   ddggdf   j                         |dddggf   ddggdf          |j                  dk(  r]t	        |d dddggf   j                         |d dddggf          t	        |ddggd df   j                         |ddggd df          n`t        j                  t        d      5  |d dddggf    d d d        t        j                  t        d      5  |ddggd df    d d d        t	        |d d ddgf   dd
gd d f   j                         |d d ddgf   dd
gd d f          t	        |d d ddgf   ddgd d f   j                         |d d ddgf   ddgd d f          t	        |d d t        ddg      f   t        ddg      d d f   j                         |d d ddgf   ddgd d f          t        t        d      t        d
      d       }t	        ||d d f   j                         |dd
d d f          t	        |d d |f   j                         |d d dd
f          t        j                  dggt              }t	        |||f   j                         |||f          t	        |g gg gf   j                         |g gg gf          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r  rV   r   r   r   re   r  )re   r  r   r   r  r  r  r  r  rE  r   rb  z"Only 1D or 2D|>2D is not supportedrk  r   )r  r   r   r   r   r   r   r   r  r   r  r   r   rJ   r  )r   rR   rQ   r  r  s        r:   test_fancy_indexingz&_TestFancyIndexing.test_fancy_indexing9  s   LL++Ab12NN1 	QsV^^%q!v.Q1vY&&(!QF)4 	Qq1#vY&&(!AsF)4Qq1a&y\))+Qq1a&y\:QrAr7{^++-qaW~>QuRy1b')*224aQGnEQr5!R>)*224aQGnEQuRy%B.0199;QrAr7{^L 	Qq-'(002Aa6F4GHQqsQCx[((*AacA3hK8QqsRH}%--/1Q3R=1ABQqsE2r(O+,446!A#Bx-8HI 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w{^++-q!R"~>QuaW~r)*224aBnEQ2wb	)*224aBnEQuaW~uRy0199;Q2w{^L 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w"}%--/Ar7AbD=1ABQuaW~qt+,4461b'1R4-8HI 	WQsQCx[)1aS1#X;7WQ1v1v~./Aq6Aq6>1BCWQBx!R012Ar2hB6G4HIAeRHo2w./0!RHq"g4E2F	
 	Ar2hq"g./0!RHq"g4E2F	
 	AeRHouaW~567B8aW;L9M	

 	QaSzAq6)*224a!qc
QF8J6KLtbTB4 1b')*224tbTB4 1b')*	
 	ebTB4"&'!R0199;tbTB4 1b')*	
 	tbTB4 %B.0199;tbTB4 1b')*	
 	ebTB4"&'2w78@@BtbTB4 1b')*	
 	Q1vY&&(!QF)4QBx[((*Ar2hK8Qub"X'//11b"X;? 	QsAvYq1#v&..0!QCF)AsF2CDq!faiLQF#++-q!Q|A1vI/F	
 	r2hkN1q"g:&..0!RHaK.QG2L	
 	eRHoq !!UAr7^"34<<>r2hkN1q"g:&	

 	a1a&kNQF8Q;'//11Q!Q[>Aq6(A+3N	
 	a2r(mq"gY\*224aRH:6FByRS|6T	
 88u2A2Ax<002AbqbAq6(lODQF8RaR<002A1vhlODz1UV  "1"1vh, z1UV  Aq6(BQB,  	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'$'Qq!tW__&!A#q&	2Qq!tW__&!QqS&	2 HHqcU#&Qq!tW__&!Q$0 	QtbTz]**,ard
m<9      s   8j&(j3&j03j=c                    t         j                  j                  d       d}d}d}| j                  t         j                  j	                  ||            }t        j
                  ||dkD        }t         j                  j                  | dz   ||      }t         j                  j                  | dz   ||      }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          ||z   }	||z
  }
t        t        |j                  |	|f       t        t        |j                  ||
f       y )Nrc   r  r   r  r
  r   r  )rJ   r   r  r  r9  r  r	  r   r(   r   r   r  r  r  )r   NUM_SAMPLESr  r  r  Ir  r  SIJI_badJ_bads              r:   test_fancy_indexing_randomizedz1_TestFancyIndexing.test_fancy_indexing_randomized  s   
		tLL!,-KK1s7#IIqb1fak:IIqb1fak:NN1!fC=++-CS!AaC&!AAj!--%;j!--!E;r<   c                    d\  }}| j                  t        ||z        j                  ||            }| j                  |      }t	        j
                  |dz   t              }t	        j
                  |dz
  t              }t	        j
                  |dz   t              }t	        j
                  |dz
  t              }d}	t        j                  ||t        d       f||t        d       f      D ]Q  \  }
}t        |
t              rt        |t              r't        j                  t        |	      5  ||
|f   }d d d        S y # 1 sw Y   ^xY w)Nr  r   r   re   z(bool index .* has shape .* instead of .*rk  )r  r   r   r   rJ   r  r  r=  r>  r   rI   r  r   r  )r   r  r  rR   rQ   row_long	row_shortcol_long	col_shortrl  r  r  r#  s                r:   test_missized_maskingz(_TestFancyIndexing.test_missized_masking  s   1LLA..q!45NN1 771q5-GGAE.	771q5-GGAE.	8%%y%+.y%+.
 	DAq !U#
1e(<z7 adG 	 s   .EE
	c                 F   t         j                  j                  d       | j                  t	        d      j                  dd            }| j                  |      }t        j                  t         j                  j                  ddd      t              }t        j                  t         j                  j                  ddd      t              }t        j                  t         j                  j                  ddd	      t              }t        t        ||         ||          t        t        |d d |f         |d d |f          t        t        ||         ||          t        t        ||d
kD           ||d
kD            t        j                  g d      }t        j                  g d      }t        t        |||f         |||f          t        j                  dt              }t        j                  dt              }d|d<   t        j                  dt              }d|d<   t        t        |j                  |       t        t        |j                  |       t        t        |j                  |       t        t        t         f|j                  |df       y )Nrc   r  r  rV   r   re   r  r   r  r  )TFTTF)
FTTFTFFFFF)r   r  Tr  )r   r   r   )rJ   r   r  r  r   r   r   r   r	  r  r   r   r   r  r  r  r  )	r   rR   rQ   r}  r  r]  Z1Z2Z3s	            r:   test_fancy_indexing_booleanz._TestFancyIndexing.test_fancy_indexing_boolean  s   
		tLL++Ab12NN1HHRYY&&q!!&4DAHHRYY&&q!"&5TBHHRYY&&q!'&:$GWQqT]AaD)WQq!tW%qAw/WQqT]AaD)WQq1uX&!a%1HH56HH 9 : 	WQq!tW%qAw/XXgT*XXgT*4XXgT*4j!--4j!--4j!--4z:.1vFr<   c                    t         j                  j                  d       | j                  t	        d      j                  dd            }| j                  |      }t        j                  t         j                  j                  ddd      t        	      }| j                  |      }t        t        ||         ||          t        t        ||d
kD           ||d
kD            t        j                  t         j                  j                  ddd      t        	      }t        j                  t         j                  j                  ddd      t        	      }| j                  |      }| j                  |      }t        t        |j                  |       t        t        |j                  |       t        t        t         f|j                  |df       y )Nrc   r  r  rV   r   re   r  r  r   r  )r  r  )r   rV   r   )rJ   r   r  r  r   r   r   r   r	  r  r  r   r   r  r  r  r  )	r   rR   rQ   r]  XspZr^  ZspYsps	            r:   "test_fancy_indexing_sparse_booleanz5_TestFancyIndexing.test_fancy_indexing_sparse_boolean	  sO   
		tLL++Ab12NN1HHRYY&&q!'&:$G  #WQsV_ad+WQq1uX&!a%1HHRYY&&q!'&:$GHHRYY&&q!'&:$G  #  #j!--5j!--5z:.QxHr<   c                     | j                  t        g dg dg dg            }t        j                  |j	                  d            dkD  }t        |d d |f   j                         ddgddgddgg       y )Nry  r  r   r   )r   r   rJ   ravelr6  r   r   )r   r   desired_colss      r:   #test_fancy_indexing_regression_3087z6_TestFancyIndexing.test_fancy_indexing_regression_3087   sf    nnUIw#@ABxx
+a/SL)113q!fq!fq!f5MNr<   c           	          | j                  t        ddgddgg            }t        t        |j                  dt        j                  ddg             y )Nr   r   r  re   )r   r   r  r  r  rJ   r   s     r:   test_fancy_indexing_seq_assignz1_TestFancyIndexing.test_fancy_indexing_seq_assign%  s@    nnUQFQF#345j#//6288QqE?Kr<   c                 D   | j                  t        ddgddgg            }t        j                         5  t        j                  dt
        t               |ddgddgf   |ddgddgf<   d d d        t        t        |      t        ddgddgg             y # 1 sw Y   .xY w)Nr   r   re   r   r(  )	r   r   r)  r*  r
  r  r)   r   r   r   s     r:   test_fancy_indexing_2d_assignz0_TestFancyIndexing.test_fancy_indexing_2d_assign)  s    nnUQFQF#345$$& 	6##Hd4KL"%q!fq!fn"5CAA	6 	WS\51a&1a&)9#:;	6 	6s   4BBc                 z   | j                  t        d      j                  dd            }d|dd d f<   d|d d df<   d|d<   | j                  |      }t	        j
                  g d      }t        t        ||         ||          t	        j
                  g t        	      }t        t        ||         ||          t        t        |||f         |||f          t	        j
                  g d
t        	      d d d f   }t        t        |||f         |||f          t        t        |||f         |||f          y )Nr  r  rV   r   r   re   r   r   FFFFFr   r   r   re   r   r  	r  r   r   r   rJ   r   r   r   r  r   rR   rQ   r  r  s        r:   test_fancy_indexing_emptyz,_TestFancyIndexing.test_fancy_indexing_empty1  s   LL++Ab12!A#!A##NN1HH89WQqT]AaD)HHRs#WQqT]AaD)WQq!tW%qAw/HH_C048WQq!tW%qAw/WQq!tW%qAw/r<   N)r   r   r   r   rt  rx  rz  r  r  r  r  r  r  r  r  ra   r<   r:   rr  rr  #  sE    -1~=@<4,G@I.O
L<0r<   rr  c              #      K   t        | d      r| j                  sd yd | j                  j                         }d| _        | j	                          t        || j                  d       yw)zIChecks that sorted indices property is retained through an operation
    has_sorted_indicesNFz'Expected sorted indices, found unsorted)r  r  r  r,  sort_indicesr   )r]  r  s     r:   check_remains_sortedr  B  sZ      1*+13G3G	iinnG ANNw		@Bs   A+A-c                   *    e Zd Zd Zd Zd Zd Zd Zy)_TestFancyIndexingAssignc                     | j                  t        j                  ddg            }t        t        t
        t        f|j                  dd       t        t        t
        t        f|j                  dd       y )Nr  rv  re   rw  )r   rJ   r   r  r  r  r  r  r  s     r:   test_bad_index_assignz._TestFancyIndexingAssign.test_bad_index_assignR  sQ    NN288QF+,z:y91==%QRSz:y91==*VWXr<   c                 L    d\   fd}dt        d dd      ft        j                  d      t        dd      ft        d	d      t        dd      ffD ]  \  }} |||        t        j                  d      t        j                  d      fd
fD ]  \  }} |||        y )Nr  c                    j                  f      }j                  t        j                  f            }t	        j
                         5  t	        j                  dt        t               d|| |f<   t        |      5  d|| |f<   d d d        d d d        t        |j                         |       y # 1 sw Y   ,xY w# 1 sw Y   0xY wNr(  r   )r   r  rJ   r   r)  r*  r
  r  r)   r  r   r   r  r  rQ   rR   r  r  r   s       r:   _test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_sliceZ  s    1v&ARXXq!f-.A((*  ''$8OP!Q$)!,  AadG  
 &aiik15      s$   2C B4	C 4B=	9C  C	r  rV   r  r   r  rE  re   )rQ  rh  )r   rJ   r   r   r  r  r  r  r  s   `   @@r:   test_fancy_indexing_setz0_TestFancyIndexingAssign.test_fancy_indexing_setW  s    1	6  tR!34iilE!RL1Aqk5B<02 	"DAq Aq!	" iilBIIaL13IJ 	"DAqAq!	"r<   c                 \      fd}t         D ]  } |t        j                  |              y )Nc                 x   j                  d|       }t        j                         5  t        j                  dt        t
               | j                  d      |ddgddgf<   t        |j                         | j                  d      dz         | j                  d      |ddddf<   t        |j                         | j                  d      dz         | j                  d      |d	<   t        |j                         | j                  d      dz  | j                  d      z          d d d        y # 1 sw Y   y xY w)
Nr  r   r(  r   r   re   r{  r  r  )	r   r)  r*  r
  r  r)   rL  r   r6  r  s     r:   r  zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.checkl  s    vU3A((* G''$8OP!&A1Q%1+QUUWejjmAo6"ZZ_!A#ac'
QUUWejjmAo6C#QUUWejjmAo

1&EFG G Gs   C>D00D9r  r  s   `  r:   test_fancy_assignment_dtypesz5_TestFancyIndexingAssign.test_fancy_assignment_dtypesk  s*    		G & 	#E"((5/"	#r<   c                    | j                  d      }| j                  t        dd            }g d}d}t        |      }t        j                         5  t        j
                  dt        t               t        |      5  ||df   j                  |d|f<   ||df   j                  |d|f<   ||df   j                  |d|f<   d d d        t        |j                         |j                  j                                | j                  d	      }t        |      5  d
dg|dddf<   d d d        t        |j                         g dg dg       | j                  d      }t        |      5  d
gdgg|dddf<   d d d        t        |j                         ddgdd
gddgg       | j                  d      }| j                  t        j                  d            }t        |      5  ||fD ]  }g d|g dg df<    	 d d d        t        |j                         |       | j                  d      }t        |      5  g d|d<   d d d        t        |j!                         d       | j                  t        j                  d            }g d|d<   t        |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrc  r   r  r.  r(  r   r   re   r  rV   r  rf  )r   rV   r  r  r`  r  r  )r  r.  r   )r   r'   r   r)  r*  r
  r  r)   r  r?  r   r   r  rJ   r   r   r6  )r   rQ   rR   i0i1i2r   s          r:   test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignmentz  s   NN5!NN3q8$2Y$$& #	/##Hd4KL%a( $BqD'))!B$BqD'))!B$BqD'))!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( 2Q 2A*1Agw&'22 qyy{A. v&A%a( 4*3&'4+RXXf-.A&/A"#qyy{A.G#	/ #	/$ $# #' '2 24 4=#	/ #	/s   +K,=AJ- AK,J:"AK,&K4A+K,K7>K,5K =A'K,-J7	2K,:K	?K,K	K,K	K, K)	%K,,K5c                 d   | j                  t        d      j                  dd            }d|dd d f<   d|d d df<   d|d<   | j                  |      }t	        j
                  g d      }d	||<   t        t        |      |       t	        j
                  g t        
      }d	||<   t        t        |      |       d	|||f<   t        t        |      |       t	        j
                  g dt        
      d d d f   }d	|||f<   t        t        |      |       d	|||f<   t        t        |      |       y )Nr  r  rV   r   r   re   r  r  *   r   r  r  r  s        r:   test_fancy_assign_emptyz0_TestFancyIndexingAssign.test_fancy_assign_empty  s	   LL++Ab12!A#!A##NN1HH89!WQZ#HHRs#!WQZ#!A#WQZ#HH_C048!A#WQZ#!A#WQZ#r<   N)r   r   r   r  r  r  r  r  ra   r<   r:   r  r  Q  s    Y
"(#+/Z$r<   r  c                       e Zd Zd Zy)_TestFancyMultidimc           
         t        j                  dgdgdgg      t        j                  g d      ft        j                  dgdgdgg      t        j                  g dg      ft        j                  g dg      t        j                  dgdgdgg      ft        j                  g d      t        j                  dgdgdgg      ft        j                  g dg dg      t        j                  g dg dg      fg}t         j                  j                  d	       | j	                  t         j                  j                  d
d            }| j                  |      }|j                  dk(  rU|j                  t        j                  dgdgdggdgdgdggg      t        j                  d
gdgdggdgdgdggg      f       |D ]%  \  }}|||f   }|||f   }t        t        |      |       |d
z   }|dz   }	t        t        |j                  ||f       t        t        |j                  ||	f       |j                  dk7  rQt        t        |j                  ||gt        d       f       t        t        |j                  t        d       ||gf       t        |||gd d f   j                         |||gd d f          t        |d d ||gf   j                         |d d ||gf          ( y )Nr   re   r   r   r  re   r  r  r  r   r   re   r   r   rc   r  r  rb  r   )rJ   r   r   r  r  r9  r   r   rL   r   r   r  r  r  r   )
r   IandJr  r  r}  r  r~  DIJr  r  s
             r:   test_fancy_indexing_ndarrayz._TestFancyMultidim.test_fancy_indexing_ndarray  s   XXsQC!o&(;<XXsQC!o&)(=>XXyk"BHHqcA3_$=>XXi "((QC!qc?";<XXy),-rxxI8N/OP
 			tLL1-.NN1 88uLLQC!qc?aS1#sO<=QC!qc?aS1#sO<=?
  	CDAqAqD'CAqD'Cs+EEEE*ammeQZ@*ammaZ@xx5 j!--1a&%+9NOj!--%+1v9NOQ1vqy\113Q1vqy\BQq1a&y\113Qq1a&y\B!	Cr<   N)r   r   r   r  ra   r<   r:   r  r    s    $Cr<   r  c                   $    e Zd Zd Zd Zd Zd Zy)_TestFancyMultidimAssignc                    t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }t         j                  j	                  dd      }t        j                  g dg dg      }t        j                  g dg d	g      }t        |      5  ||||f<   d d d        ||||f<   t        |j                         |       |dz   }|dz   }g d}t        |      5  ||||f<   d d d        ||||f<   t        |j                         |       t        |      5  d|||f<   d d d        d|||f<   t        |j                         |       t        t        |j                  ||f|       t        t        |j                  ||f|       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w
Nrc   r  r  re   r   r  r  r  r  )rJ   r   r  r  r9  r   r   r  r   r   r  r  r  )	r   r  r  r]  r}  r  r  r  r   s	            r:   test_fancy_assign_ndarrayz2_TestFancyMultidimAssign.test_fancy_assign_ndarray  s   
		tLL1-.NN1IINN1a HHi+,HHi+,!!$ 	AacF	!A#QYY[!$AA!!$ 	AacF	!A#QYY[!$!!$ 	AacF	!A#QYY[!$j!--%A>j!--!EA>+	 		 	
	 	s$   F5GG5F>G
Gc                      d\   fd}t        j                  ddgddgg      ddgft        j                  ddg      ddgddggfg dg d	gg d
g dgffD ]  \  }} |||        y )Nr  c                    j                  f      }t        |      5  t        j                         5  t        j                  dt
        t               d|| |f<   d d d        d d d        j                  t        j                  f            }d|| |f<   t        |j                         |       y # 1 sw Y   YxY w# 1 sw Y   ]xY wr  )r   r  r)  r*  r
  r  r)   r  rJ   r   r   r   r  s       r:   r  zR_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_slice  s    1v&A%a( (*A*A*C ''$8OP!Q$  RXXq!f-.AAadG%aiik15   s"   C 'B4C 4B=	9C  C	r   re   r   r   r  r  r   re   r  )r   r  r   )r  r   re   )rJ   r   r  s   `   @@r:    test_fancy_indexing_multidim_setz9_TestFancyMultidimAssign.test_fancy_indexing_multidim_set	  s    1	6 hhAA/01a&91a&)QFQF+;<#Y/)Y1GHJ 	"DAq Aq!	"r<   c           	      F   t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }t         j                  j	                  dd      }g dg dg}g dg d	g}||||f<   ||||f<   t        |j                         |       |D cg c]  }|D cg c]  }|dz   	 c} }}}|D 	
cg c]  }	|	D 
cg c]  }
|
dz   	 c}
 }}	}
g d}||||f<   ||||f<   t        |j                         |       d|||f<   d|||f<   t        |j                         |       t        t        |j                  ||f|       t        t        |j                  ||f|       y c c}w c c}}w c c}
w c c}
}	w r  )rJ   r   r  r  r9  r   r   r   r  r  r  )r   r  r  r]  r}  r  r  iir  r  jjr  r   s                r:   test_fancy_assign_listz/_TestFancyMultidimAssign.test_fancy_assign_list  sf   
		tLL1-.NN1IINN1a 	"	"!A#!A#QYY[!$/01!1%R"q&%11/01!1%R"q&%11!A#!A#QYY[!$!A#!A#QYY[!$j!--%A>j!--!EA> &1%1s0   =	FFF	F(F4FFFc                 
   t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }g d}g d}|D cg c]  }|dz   	 }}|D cg c]  }|dz   	 }}g d}	t        j                  d      d d d f   }
t        t        |j                  |t        d       f|	       t        t        |j                  t        d       |f|
       y c c}w c c}w )Nrc   r  r  )r   re   r   r   r  re   )r  r   r   re   r   r   )r   re   r   r  r  r   r  )rJ   r   r  r  r9  r   r   r  r  r  r   )r   r  r  r}  r  r  r  r  r  C1C2s              r:   test_fancy_assign_slicez0_TestFancyMultidimAssign.test_fancy_assign_slice7  s    
		tLL1-.NN1"#$Ba$$"#$Ba$$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,C;>D N)r   r   r   r  r  r  r  ra   r<   r:   r  r    s    ?B""?:Kr<   r  c                   ^    e Zd ZdZd Zej                  j                  d      d        Zd Z	y)_TestArithmeticz&
    Test real/complex arithmetic
    c                    t        g dg dg dg dgd      }t        g dg dg dg d	gd
      }t        g dg dg dg dgd      |_        t        |dz  j                  d      d|z         t        |j                  dz  j                  d      d|j                  z         t        |j                  dz  j                  d      d|j                  z         | j                  |      }| j                  |      }||||fS )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      rZ   )r   r  r   rt   r  r   )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r:   __arith_initz_TestArithmetic.__arith_initM  s    /9302 4=> .9/57 9EF 4;579 ;DE 	CF??73BsF;CHHRK//8CHHECHHRK//8CHHEs#s#C%%r<   r  c                    | j                         \  }}}}t        ||z   j                         ||z          t        D ]  }t	        j
                  d      5  |j                  |      }d d d        | j                        }t        D ]c  }t	        j                  |t        j                        s;t	        j
                  d      5  |j                  j                  |      }	d d d        n|j                  |      }	| j                  	      }
||	z   }||
z   }t        |j                  |j                         t        |j                         |       t        ||	z   |       t        ||
z   |       t	        j                  d      ||fv r||	z
  }||
z
  }t        |j                  |j                         t        |j                         |       t        ||	z
  |       t        ||
z
  |       f  y # 1 sw Y   xY w# 1 sw Y   xY w)Nr(  rF  r  )_TestArithmetic__arith_initr   r   r-   rJ   rJ  rt   r   rl   rr  r  r   r?   r   r  r  r  r  r@   rQ   r&  rA   rR   r  D1S1s                r:   test_add_subz_TestArithmetic.test_add_sube  s   !%!2!2!4S% 	U]##%sSy	

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

1AnnQ' U3YRXXbhh/"2::<4"372."1s72. 88F#1v-U3YRXXbhh/"2::<4"372."1s72.9/	 	/" "
/ /s   G2G?2G<	?H	c           
      d   | j                         \  }}}}t        ||j                  z  j                         ||j                  z         t        D ]D  }t        j                  d      5  |j                  |      }d d d        | j                        }t        D ]  }t        j                  |t
        j                        r|j                  |      }	n:t        j                  d      5  |j                  j                  |      }	d d d        | j                  	      }
||	j                  z  }||
j                  z  }t        |j                         |dt        |      j                         z         t        |j                   |j                           G y # 1 sw Y   xY w# 1 sw Y   xY w)Nr(  rF  g+=)atol)r  r   r?  r   r-   rJ   rJ  rt   r   rl   rr  r  r   r  rY   r   r?   r  s                r:   test_muz_TestArithmetic.test_mu  sO   !%!2!2!4S% 	EEGGO446#%%K	) " 	0AX. "JJqM"..#C% 0==B$6$67

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

b%*3r7;;=%8:RXXbhh/0		0" "/ /s   *F*F&F#	&F/N)
r   r   r   r   r  r  r  rU  r  r  ra   r<   r:   r  r  I  s5    &0 [[2)/ )/V0r<   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	_TestMinMaxc                    t         j                  t         j                  t         j                  t         j                  t         j
                  fD ]K  }t        j                  d|      j                  dd      }| j                  |      }t        |j                         d       t        |j                         d       t        |j                         j                  |       t        |j                         j                  |       |dz  }| j                  |      }t        |j                         d       t        |j                         d       |dz  }| j                  |      }t        |j                         d	       t        |j                         d       N | j                  t        j                  d
d      j                  dd            }t        |j                         d
       t        |j                         j                  |j                         t        |j                  d      d
       | }t        |j                         d       t        |j                  d      d       | j                  t        j                  d            }t        |j                         d       t        |j                         d       t        |j                         j                  |j                         t        j                  dt              j                  dd      }d|ddd d f<   | j                  |      }t        |j                         d       t        |j                         d       t        j                  d      t        j                  d      t        j                  d      fD ]G  }| j                  |      }t        t         |j                         t        t         |j                         I y )Nr  r   r  r  r      r   iir   rV   r   Texplicitr  re   r  r   rV   rV   r   )rJ   r   r   rZ   rf   r   r   r   r   r   rn   rY   r?   r   r  r  r  )r   r?   r  r]  r  s        r:   test_minmaxz_TestMinMax.test_minmax  s   jj"**bhh"--P 	%E		"E*221Q7Aq!A!$"%..GAq!A#&!$FAq!A#&!$#	%( NN299Q+33Aq9:QUUWa QUUW]]AGG,QUUDU)1-BQUUWb!QUUDU)2. NN288F+,QUUWa QUUWa QUUW]]AGG, IIb&..q3!A#q&	NN1QUUWa QUUWb! ((6"BHHW$5rxx7HI 	-Aq!A*aee,*aee,	-r<   c                    | j                    }t        j                  d      j                  dd      }d|dd d f<   d|d d df<   d|d<   d|d	<   | j	                  |      }dd
g}ddg}||z   D ]x  }t        |j                  |      j                         |j                  ||             t        |j                  |      j                         |j                  ||             z |D ]  }t        |j                  |d      j                         | j                  g d             t        j                  |j                  dk(        r| j                  g d      }n| j                  g d      }t        |j                  |d      j                         |        |D ]  }t        j                  g d      }t        j                  g d      }	| j                   s"|j                  d      }|	j                  d      }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        t        j                  dd      j                  dd      }| j	                  |      }||z   D ]x  }t        |j                  |      j                         |j                  ||             t        |j                  |      j                         |j                  ||             z t        |j                  d      |j                  d|             |D ]  }|dd d f   }|dd d f   }	| j                   s|d dd d f   }|d dd d f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        |D ]  }|d d df   }|d d df   }	| j                   s|d d dd f   }|d d dd f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        | j                  t        j                  d            }| j	                  |      }||z   D ]x  }t        |j                  |d      j                         |j                  |             t        |j                  |d      j                         |j                  |             z | j                  t        j                  d            }| j	                  |      }ddg}
t        t!        j"                  ||
            }t        t!        j"                  ||
            }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } | j                  t        j                  d            }| j	                  |      }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } y )Nr  r  rV   r   r   r  r`  r   r  rE  rd  rh  Tre  r  )
r  )   r  +   ,   -   .   /   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   r  r  r  3   r5  )rV   r  r  Fr  )r  rJ   r   r   r   r   rY   r   rn   r   r  anyr  r   r   ri  r=  r>  r  r  )r   rZ  r  r]  	axes_evenaxes_oddre  rq  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r:   test_minmax_axisz_TestMinMax.test_minmax_axis  sf   %%%IIbM!!!R(!Q$!Q$$$NN1G	r7y( 	D4 ((*AEEtdE,K 4 ((*AEEtdE,K		  
	ND4$/779DE vvaffk"<<(HI<<(HID48@@BHM
	N  	RD88$67L88$67L%%+33F;+33F;D48@@BLQD48@@BLQ	R IIa$$R+NN1y( 	D4 ((*AEEtdE,K 4 ((*AEEtdE,K		 	QUUU'FT)JK 	RDRU8LQT7L%% r1~ q!}D48@@BLQD48@@BLQ	R  	RDQU8LQT7L%% B~ At}D48@@BLQD48@@BLQ	R LL'*+NN1( 	VDD48@@BAEEtEDTUD48@@BAEEtEDTU	V
 LL'*+NN1-"9#4#4Y#PQ!)"3"3Ho"NO+ 	EHD"*aee$D*aee$D	E + 	THD"D26>>@!%%T%BRSD26>>@!%%T%BRS	T LL'*+NN1* 	EHD"*aee$D*aee$D	E , 	THD"D26>>@!%%T%BRSD26>>@!%%T%BRS	Tr<   c                    t        g dg dg dg      }| j                  |      }| j                  rt        nt        j
                  }| j                  rt        nt        }t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ y rc  )r   r   r  r
   rJ   r1   r*   r+   r.   rn   rI   rY   nanminnanmaxargminargmax)r   r   r   rd  spmatrix_or_sparrays        r:   test_minmax_container_typez&_TestMinMax.test_minmax_container_typeD  s   Y! " s#%)%7%7'RYY)-););gEIIK(((%)))+-@AAA%)))+-@AAAEIIK(((%)))+-@AAA%)))+-@AAAELLN+++%,,A,.0CDDD%,,A,.0CDDDELLN+++%,,A,.0CDDD%,,A,.0CDDDELLN+++%,,A,.@@@%,,A,.@@@ELLN+++%,,A,.@@@%,,A,.@@@r<   c                 &   | j                  t        j                  d      j                  dd      t              }d|dd d f<   d|d d df<   d|d<   d	|d
<   t        j
                  |d<   t        j
                  |d<   | j                  |      }|j                         }t        j                  |      sJ |t        j                  |      k(  sJ |j                         }t        j                  |      sJ |t        j                  |      k(  sJ |j                  d      }t        j                  |      sJ |t        j                  |d      k(  sJ g d}|D ]  }|j                  |      }t        |j                         t        j                  ||             t        || j                        sJ |j                  |      }t        |j                         t        j                  ||             t        || j                        rJ  y )Nr  r  rV   r   r   r   r  r`  r   r  rK  )r   r  r5  rd  )rE  r   r   r   )r  rJ   r   r   r  r-  r   r  r7  r  r   r   rI   r  )	r   r  r]  X_nan_maximumX_nan_minimumro  re  X_nan_maximaX_nan_minimas	            r:   test_nanminmaxz_TestMinMax.test_nanminmaxd  s   LL2..q4ELB!Q$!Q$$$&&$&&$NN1
{{=)))		!,,,
{{=)))		!,,,f-{{=)))		!& 9999 	@D888.LL002BIIad4KLlD,>,>???888.LL002BIIad4KLlD,>,>???	@r<   c                 .   t        g dg dg dg      }| j                  |      }dD ]k  }t        ||      }t        ||      }t        t        |d       t        t
        |d       t        t        |dd	       t         |d
       |d
             m y )Nr.  r/  r0  )rn   rY   r   rd  rD  r   rE  r5  )r   r   r{   r  r  r  r   )r   r   r   fnamedatfuncr   s         r:   test_minmax_invalid_paramsz&_TestMinMax.test_minmax_invalid_params  s    Y! " s## 	BEc5)G5%(D*d3)T4*d:6*G,@A	Br<   c                 P   ddl m} t        g dg dg dg      }| j                  |      }t	        ||j
                        ret        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             y y )Nr   _datar.  r/  r0  )
scipy.sparser  r   r   rI   _minmax_mixinr   rJ   rn   rY   )r   r  r   r   s       r:   test_numpy_minmaxz_TestMinMax.test_numpy_minmax  sy     	'Y! " s# eU001rvve}bffSk:rvve}bffSk: 2r<   c                 H   ddl m} t        j                  g dg dg dg dg dg      }|j	                         }t        j                  dd	gd
dgg      }t        j                  dd	gd
dgg      }t        j                  g dg dg dg      }|||||fD ]Z  }| j                  |      }| j                  |      }t        ||j                        s=t        |j                         t        j                  |             t        |j                         t        j                  |             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             ] | j                  | j                  |            }t        |j                  d      d       t        | j                  d      d       t        |j                  d      d       t        | j                  d      d       | j                  t        j                  d            }	| j                  t        j                  d            }
ddg}t        j                  |	|
gg d|      D ]  \  }}}||j                  |   dk(  rot!        j"                  t$        d      5  |j                  ||       d d d        t!        j"                  t$        d      5  |j                  ||       d d d        | j&                  rt        j(                  d      }nt        j(                  |dk(  rdnd      }t        |j                  ||      |       t        |j                  ||      |        | j                  |      }t        |j                  dd      | j                  g d             t        |j                  dd      | j                  g d             t        j                  g d      }t        j                  g d       }|j*                  d!k7  rd|d"<   | j&                  s"|j-                  d#      }|j-                  d#      }t        |j                  dd      |       t        t/        |j                  dd            |       t        j(                  d$      }| j                  |      }|j*                  dk7  r;t        |j                  d d      d       t        |j                  d d      d       y t!        j"                  t$        d      5  |j                  d d       d d d        t!        j"                  t$        d      5  |j                  d d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)%Nr   r  )r   r  re   r   )r   r   r   rE  )r   rE  r  r  r  )r   re   r   r   r  r   r  r  )r  r  r   )r  r  rV   )r   r  r  rd  r   Tr  re   r  r  Fr  zCannot applyrk  r  r5  r   )r   r   r   r   )r   re   re   re   )r   re   r   r   r   )r   r   r   r   r   r  r   r  r  )r  r  rJ   r   r   r  r   rI   r   r   r  r  r  r=  r>  r   r  r   r  r  r   rg  r   r   )r   r  r  D2D3D4D5r  r   D6D7	explicitsre  r	  rq  r  r  s                    r:   test_argmaxz_TestMinMax.test_argmax  s   &XX
  \\^XX1v1v&'XX1v1v&'XXy*i89b"b"% 	CAQA..#Cc5#6#67ryy|4ryy|4+RYYqq-AB+RYYqq-AB+RYYqq-AB+RYYqq-AB	C  nnT\\"-.SZZZ.2sd]]D]115SZZZ.2sd]]D]115 ^^BHHV,-^^BHHV,-5M	&..BxyQ 	KMCr|syy!3]]:^D 7JJD2J67]]:^D 7JJD2J67 7 %%!xx{H!xx$!)HHSZZTBZ?JSZZTBZ?J	K 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@ 5

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

t
45 5O7 77 7F5 55 5s0   $W2W?XX2W<	?X		XX!N)
r   r   r   r  r
  r  r  r  r!  r*  ra   r<   r:   r  r    s/    /-bdTLA@@@B;$T5r<   r  c                       e Zd Zd Zy)_TestGetNnzAxisc                    t        ddgddgddgg      }|j                  t              }| j                  |      }t        j
                  t        j                  f}| j                  r|j                  n|j                  }t        |j                  d        |d              t        |j                          |              t        |j                  d       |d             t         |d      j                  |       t        |j                  d       |d             t         |d      j                  |       t        |j                  d	       |d	             t         |d	      j                  |       t        |j                  d
       |d
             t         |d
      j                  |       t        t        |d       y )Nr   re   r   r  r1  r  rd  r   rE  r   )r   rt   r  r   rJ   rZ   rf   r  rh  getnnzr   r6  r;   r?   r  r  )r   r   bool_datr   accepted_return_dtypesr.  s         r:   test_getnnz_axisz _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<   N)r   r   r   r1  ra   r<   r:   r,  r,    s    2r<   r,  Tc                     |r| S d }t        | j                        }| j                  j                         D ]"  \  }}|j                  d      s ||      ||<   $ t	        | j
                  dz   | j                  |      S )z
    Construct a class that either runs tests as usual (require=True),
    or each method skips if it encounters a common error.
    c                 B     t        j                          fd       }|S )Nc                      	  | i |S # t         t        t        t        t        f$ r t        j                  d      w xY w)Nr.  )rm  r  r  r  r  r  r  )rN   r}   fcs     r:   r   z6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper!  sF    Aq<B<'+Y
"N4 A ++&?@@As    4?)r   r   )r5  r   s   ` r:   wrapz%_possibly_unimplemented.<locals>.wrap   s'    __R A !A Nr<   test_NotImplemented)dictrG   r  
startswithrL  r   	__bases__)r  requirer6  new_dictr   r   s         r:   _possibly_unimplementedr>    s    
 
		 %,,,,. 	,JD$w'!%d	, CLL#33MM 	r<   c	                 >   t         t        t        |       t        t        t
        t        t        |      t        t        |      t        t        |      t        t        |      t        t        |xr |      t        t        |xr |      t        t        |      t        t        |      f}	i }
|	D ]e  }|j                  D ]T  }|j                  d      s|
j!                  |      }|(t#        d|j$                   d| d|j$                         ||
|<   V g t'        d|	i       S )z
    Construct a base class, optionally converting some of the tests in
    the suite to check that the feature is not implemented.
    r7  zTest class z overloads test z defined in TestBase)r
  r>  r  r  r  r  r  rW  rr  r  r  r  r  r,  rG   r:  getr  r   rL  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr  r   old_clss                 r:   sparse_test_classrN  4  s&    $[&9#$\7;$%7H$%7H$%=%13$%7%3%O8OQ$%=%:%K|M$[&9$_h?AE$ E LL 	D??7+iioG" ;s||n<L$(6g6F6F5G"I J JE$K	 
E2&&r<   c                       e Zd Zd Zd Zd Zy)_CompressedMixinc                 "   | j                  |      }d|_        |j                          |j                  sJ t        |      5  |j	                  d       d d d        t        j                  |j                         dk(        sJ y # 1 sw Y   2xY w)NFr  )r   r  r  r  r  rJ   allr  r  s      r:   _test_setdiag_sortedz%_CompressedMixin._test_setdiag_sorteda  sv    NN1$	####!!$ 	IIaL	vvajjla'(((	 	s   BBc                     d}t        j                  d|dz         }t         j                  g d   |z  }d}d|d| d f<   g d}| j                  ||f||f      }| j	                  |      S )N  r   r   re   r   r   rz  r  r   rJ   r   c_r  rS  )r   r  valsdiagsN_newr  r  s          r:   test_setdiag_noconvertz'_CompressedMixin.test_setdiag_noconvertl  s}     yyAE"j!D( a%jw/1v>((++r<   c                     d}t        j                  d|dz         }t         j                  g d   |z  }d|ddd f<   g d}| j                  ||f||f      }| j	                  |      S )NrU  r   rV  rz  r  r  rW  rX  )r   r  rZ  r[  r  r  s         r:   test_setdiag_cooconvertz(_CompressedMixin.test_setdiag_cooconvert}  ss    
 yyAE"j!D(aew/1v>((++r<   N)r   r   r   rS  r]  r_  ra   r<   r:   rP  rP  `  s    	),",r<   rP  c                       e Zd Zed        Zej                  ej                  ej                  ej                  gZ
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestCSRc                     t        j                         5  t        j                  dt        t               t        |i |cd d d        S # 1 sw Y   y xY wNr(  )r)  r*  r
  r  r)   r!   r  argsrB   s      r:   r   zTestCSR.spcreator  C    $$& 	.##Hd4KLd-f-	. 	. 	.   *A		Ac                 l   t        g dg dg dgd      }| j                  |      }t        |j                  g d       t	        |j
                  g d       t	        |j                  g d       t        |j                  d       t        |j                  d	       t	        |j                         |       y )
N)r   r  r   r  r  r  )r  r   re   r!  r  r   r7  )r   r  r   r  r   r  r  r   rg  r   r   r   rS   rE  s      r:   test_constructor1zTestCSR.test_constructor1  s    9"$   #!#((733;;w/3::i0SWWQSZZ&3;;=!,r<   c                    t        dd      }d|d<   | j                  |      }t        |j                  dg       t	        |j
                  dg       t	        |j                  g d       t        |j                         |       y )Nr   r   r  r  r  r  )r   r   r   r   r   r   r   )r   r  r   r  r   r  r  r   ri  s      r:   test_constructor2zTestCSR.test_constructor2  se    %#  #!#((A3/3;;s+3::o6!#++-3r<   c                    t        ddgddgddggd      }| j                  |      }t        |j                  g d       t	        |j
                  g d       t	        |j                  g d       t        |j                         |       y )	Nr   r   re   r   r  r  r  r  )r   r  r   r  r   r  r  r   ri  s      r:   test_constructor3zTestCSR.test_constructor3  st    Aq6q6q6!   #!#((733;;w/3::i0!#++-3r<   c                    t        g d      }t        g d      }t        g d      }t        ||f      }| j                  ||fd      }t        t	        d      j                  dd      |j                                | j                  dd	gd
d	gd
d	gfft        j                        }t        dd
gd
d	ggt        j                        }t        ||j                                | j                  g dg dg dff      }|j                  dk(  sJ y )Nre   r   r   r   r   r   r   r   re   r   re   r   r   r   r   r   r   re   re   re   re   r         @g      $@ry        "@r{  r  g      &@r|         @      @r  rc  r  r  r              r   r   r   r   r   r   r   r   re   re   r   r   r   r   r   re   )
r   r	   r  r   r   r   r   rJ   uint64rg  )r   r  r  r  r'  r7  rS  s          r:   test_constructor4zTestCSR.test_constructor4  s    5656 3 4 SI  $r516":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5#++-0   )i-C!DEww!||r<   c                     t        g d      }t        g d      }t        g d      }| j                  |||f      }t        |j                  d       y Nr   r   r   r   r   r  r   re   r  r  )r   r  r   r   r   r  r  r  r7  s        r:   test_constructor5zTestCSR.test_constructor5  E    y!	"Y  $!89399U+r<   c                     g d}g d}g d}| j                  |||f      }t        |j                  d       t        t	        j
                  |j                  t        j                               y r  )r  r   r   r   rJ   rl   r?   signedintegerr  s        r:   test_constructor6zTestCSR.test_constructor6  sS      $!89399e,cii)9)9:;r<   c                    t        d      dz   }t        g dt        j                        }t        g dt        j                        }| j	                  |||fd      }t        g dg d	g d
gd      }t        j
                  | j                  rt        j                  nt        j                        }t        |j                  j
                  |       t        |j                  j
                  |       t        |j                         |       y )Nr   r   )r   re   r   r   r   re   r   r   re   r  r   r`  rW  r.  r  )r  r   r   r  )r   r   rJ   rf   r  r?   r  rZ   r   r  r  r   r   )r   r  r  ptrrN   rS   expected_dtypes          r:   test_constructor_smallcolz!TestCSR.test_constructor_smallcol  s    ay1}&bhh7L1c3/v>9"$
 d.@.@"((bhhOQXX^^^4QYY__n5199;*r<   c           	      |   t        d      dz   }t        j                  t        j                        j                  dz   }t        ddd||dz   |dz   gt        j                        }t        g dt        j                        }| j                  |||f      }t        |j                  j                  t        j                  t        j                               t        |j                  j                  t        j                  t        j                               t        |j                  dt	        |      dz   f       y )	Nr   r   rg  r   re   r   r  r   )r   rJ   rX   rZ   rY   r   rf   r  r   r  r?   r  r   r   )r   r  larger  r  rN   s         r:   test_constructor_largecolz!TestCSR.test_constructor_largecol  s    ay1}"&&,Q1eU1WeAg6bhhGL1c3/0QXX^^RXXbhh%78QYY__bhhrxx&89177QC
O4r<   c                 :   t        d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j	                          t        |j                  g d       t        |j                         |j                                y )Nr  r  re   r   r  r  r   r   r  re   rV   rW  r   re   r  r  r  )r   r   r  r,  r  r   r  r   r   r  r  r  rD  rE  s         r:   test_sort_indiceszTestCSR.test_sort_indices  sv    ay(y!  $!8 Ghhj3;;73;;=#++-8r<   c                 j   t        g d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j                          t	        |j
                  d       t	        |j                  g d       t	        |j                         |j                                y )Nr   r   r   r   re   r   r   r   r   re   r   r  r  r   r  r  r   r   r  r  rW  r   r  )r   r  r,  eliminate_zerosr   rg  r  r   r  s         r:   test_eliminate_zeroszTestCSR.test_eliminate_zeros      -.01y!  $!8 Ghhj377A&388I.3;;=#++-8r<   c           	         | j                  t        j                  d      j                  dd      dz        }dD ]  }t	        t        | j                  |      d        t        ||             }t	        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                          t        t        |      |j                                       y )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  T)r  rJ   r   r   r   r  r   r{   r   r   r  r  r   r   r]  r  r  s       r:   test_ufuncszTestCSR.test_ufuncs      ryy}44Q:S@AJ 	JA Q/6AB"((+qyy"**5qxx3rzz|^WR^AIIK-HI	Jr<   c                 h   t        d      }t        g d      }t        g d      }| j                  |||fd      }t        d      }t        g d      }t        g d      }| j                  |||fd      }t        ||z   j	                         |j	                         |j	                         z          y )	Nr  r  r  r  rW  r   r  r   r  r  re   r  r   re   r   )r   r   r  r   r   r  s         r:   test_unsorted_arithmeticz TestCSR.test_unsorted_arithmetic      ay(y!  $!8 Gay*+y!  $!8 GcCi((*CKKMCKKM,IJr<   c                    t        j                  dgdgdgg      }t        j                  g d      }t         j                  j                  d       | j	                  t         j                  j                  dd            }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          y Nr   re   r   r  rc   r  r  
rJ   r   r   r  r  r9  r   r(   r   r   r   r}  r  r  r  r~  s         r:   test_fancy_indexing_broadcastz%TestCSR.test_fancy_indexing_broadcast#      HHqcA3_%HHY
		tLL1-.NN1!fC=++-CS!AaC&!r<   c                 B   t        j                  ddg      }t        j                  ddg      }t        j                  ddg      }t        j                  ddg      }| j                  |||f      j                         }t	        d|j
                         t        |j
                  t              sJ | j                  |||f      j                         }t	        d|j
                         |j                          t	        d|j
                         t        |j                  |       | j                  |||f      j                         }d|_        t	        d|j
                         t        |j                  |       |j                          t        |j                  |       y)z@Ensure has_sorted_indices memoizes sorted state for sort_indicesr   r   re   TFN)rJ   r   r  r,  r   r  rI   r  r  r   r  )r   sorted_indsunsorted_indsr  r  r  s         r:   test_has_sorted_indiceszTestCSR.test_has_sorted_indices1  sJ   hh1v&!Q(xxA1a&!k6:;@@BT1//0!..555mV<=BBDUA001 	
T1//0199k2mV<=BBD#T1//0199m4 	
199m4r<   c                 	   t        j                  dg      t        j                  dg      t        j                  ddg      f}t        j                  ddg      t        j                  ddg      t        j                  ddg      f}| j                  |      }t        d|j                         | j                  |      j                         }t        d|j                         t        |j                  t              sJ |j                          t        d|j                         t        dt        |j                               | j                  |      j                         }d|_        t        d|j                         t        dt        |j                               |j                          t        dt        |j                               d|_        |j                          t        dt        |j                               t        d|j                         d|_        t        d|j                         | j                  |j                  |j                  |j                  f      }t        d|j                         |j                          t        d|j                         | j                  t        j                  dg      t        j                  dg      t        j                  g d      f      }t        |j                  d       t        j                         5  t        j                   dt"        t$               d|d	<   |dd
d
fxx   dz  cc<   d|d<   d
d
d
       t        d|j                         | j                  |j                  |j                  |j                  f      }t        d|j                         | j                  |      }|\  |_        |_
        |_        t        d|j                         t        dt        |j                               | j                  |      }|j                   |\  |_        |_
        |_        t        d|j                         t        dt        |j                               |j                          t        dt        |j                               y
# 1 sw Y   ZxY w)=Ensure has_canonical_format memoizes state for sum_duplicatesre   r   r   TF)r   r   r   r   r`  r(  r5  Nr  r   r  )rJ   r   r  r   has_canonical_formatr,  rI   r  sum_duplicatesr   r  r  r  r   r)  r*  r
  r  r)   )r   info_no_dupsinfo_with_dupsr  Mchecks        r:   test_has_canonical_formatz!TestCSR.test_has_canonical_formatM  s    !rxx}bhh1v6FG((Aq6*BHHaV,<bhh1v>NO|,T1112~.335UA223!00$777 	
T1112QAII' ~.335!%T1112QAII'	QAII'!&	QAII'T1112 "'UA223##QVVQYY$ABT6667	T1112 !rxx}bhh|>TUVQWWf%$$& 	##Hd4KLAdGadGqLGAdG		
 	T1112##QVVQYY$ABT6667 |,&4#	18UA223QAII' |,	&4#	18T1112QAII'	QAII'-	 	s    ;R33R=c                 H   t        j                  dt         j                        }t        j                  dt         j                        }t        j                  d      }| j                  |||fd      }| j                  |||fd      }t        j                  dt         j                        }| j                  ||fd      }| j                  ||fd      }| j                  d      }	| j                  d      }
t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         t	        |	j
                  j                  t         j                         t	        |
j
                  j                  t         j                         |||||	|
fD ]  }||z    	 y )Nre   r   r   r   rW  r           r  )rJ   r   rZ   r  r   r  r?   rf   r   r  r  rZ  rN   rS   r'  r  r  r  r  r@   s               r:   test_scalar_idx_dtypezTestCSR.test_scalar_idx_dtype      !288,((1BHH-xx{gv6lKgv6jIXXfBHH-bz>bz<|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX. Q1a# 	AE	r<   c                     | j                  g dg      }| j                  g dg      }||z   j                  dk(  sJ |j                  |      j                  dk(  sJ y )Nr  r   r   r   re   r   )r  rg  r  r   rN   rS   s      r:   test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zeros  sZ     	{+	{+A{{azz!}  A%%%r<   N)r   r   r   r  r   rJ   r  int_r   r   r  rj  rm  ro  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  ra   r<   r:   ra  ra    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58B(H0&r<   ra  c                       e Zd Zed        Zy)TestCSRMatrixc                     t        j                         5  t        j                  dt        t               t        |i |cd d d        S # 1 sw Y   y xY wrc  )r)  r*  r
  r  r)   r   rd  s      r:   r   zTestCSRMatrix.spcreator  C    $$& 	/##Hd4KLt.v.	/ 	/ 	/rg  Nr   r   r   r  r   ra   r<   r:   r  r        / /r<   r  c                      t         t        j                     } t        | t              sJ | j
                  t         u sJ | j                  t        j                  fk(  sJ y r>   )r   rJ   r   rI   r   
__origin____args__rN  s    r:   test_spmatrix_subscriptabler    sL     Ffl+++
***??rwwj(((r<   c                       e Zd Zed        Zej                  ej                  ej                  ej                  gZ
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zy)TestCSCc                     t        j                         5  t        j                  dt        t               t        |i |cd d d        S # 1 sw Y   y xY wrc  )r)  r*  r
  r  r)   r    rd  s      r:   r   zTestCSC.spcreator  rf  rg  c                 x   t        g dg dg dgd      }| j                  |      }t        |j                  g d       t	        |j
                  g d       t	        |j                  g d       t        |j                  d       t        |j                  |j                         t        |j                  d	       y )
Nr   r   r   r   r  r   re   r   r   r  )r   re   r   r   )r   re   r   re   r  r  r6  )r   r  r   r  r   r  r  r   rg  r   r   ri  s      r:   rj  zTestCSC.test_constructor1  s}    <|<cB  #!#((953;;y13::k2SWWQSYYqww'SZZ&r<   c                     t        dd      }d|d<   | j                  |      }t        |j                  dg       t	        |j
                  dg       t	        |j                  g d       y )Nrl  r  r  re   r  re   )r   r   r   r   r   r   r   )r   r  r   r  r   r  r  ri  s      r:   rm  zTestCSC.test_constructor2  sU    %#  #!#((A3/3;;s+3::o6r<   c                     t        ddgddgddggd      }| j                  |      }t        |j                  ddg       t	        |j
                  ddg       t	        |j                  g d       y )Nr   r   re   r  r.  )r   r  r   r  r   r  r  ri  s      r:   ro  zTestCSC.test_constructor3  sc    Aq6Aq6Aq6*C0  #!#((Aa513;;!u-3::g.r<   c                 R   t        g d      }t        g d      }t        g d      }t        ||f      }| j                  ||fd      }t        t	        d      j                  dd      |j                                | j                  g dg d	g d
ff      }|j                  dk(  sJ y )Nrq  rr  rs  rc  r  r  r   ry  rz  r{  re   )r   r	   r  r   r   r   r   rg  )r   r  r  r  r'  r6  s         r:   r}  zTestCSC.test_constructor4  s    5656CDSI  $r516":--a3S[[]C   )i-C!DEww!||r<   c                     t        g d      }t        g d      }t        g d      }| j                  |||f      }t        |j                  d       y Nr  r  r  )r   r   )r   r  r   r   r   r  r  r  r6  s        r:   r  zTestCSC.test_constructor5  r  r<   c                     g d}g d}g d}| j                  |||f      }t        |j                  d       t        t	        j
                  |j                  t        j                               y r  )r  r   r   r   rJ   rl   r?   r  r  s        r:   r  zTestCSC.test_constructor6  sS      $!89399U+cii)9)9:;r<   c                 j   t        g d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j                          t	        |j
                  d       t	        |j                  g d       t	        |j                         |j                                y )Nr  r  r  rV   re   rW  r   r  )r   r  r,  r  r   rg  r  r   r  s         r:   r  zTestCSC.test_eliminate_zeros  r  r<   c                 (   t        d      }t        g d      }g d}| j                  |||fd      }|j                         }|j	                          t        |j                  g d       t        |j                         |j                                y )Nr  r  r  r  rW  r  )r   r   r  r,  r  r   r  r   )r   r  r  r  rD  rE  s         r:   r  zTestCSC.test_sort_indices  sq    ayO$  $S!1 @hhj3;;73;;=#++-8r<   c           	         | j                  t        j                  d      j                  dd      dz        }dD ]  }t	        t        | j                  |      d        t        ||             }t	        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                          t        t        |      |j                                       y )N   r  r   g      5@r  T)r  rJ   r   r   r   r  r   r{   r   r   r  r  r   r  s       r:   r  zTestCSC.test_ufuncs  r  r<   c                 h   t        d      }t        g d      }t        g d      }| j                  |||fd      }t        d      }t        g d      }t        g d      }| j                  |||fd      }t        ||z   j	                         |j	                         |j	                         z          y )	Nr  r  r  r  rW  r   r  r  )r   r   r  r   r   r  s         r:   r  z TestCSC.test_unsorted_arithmetic'  r  r<   c                    t        j                  dgdgdgg      }t        j                  g d      }t         j                  j                  d       | j	                  t         j                  j                  dd            }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          y r  r  r  s         r:   r  z%TestCSC.test_fancy_indexing_broadcast2  r  r<   c                 H   t        j                  dt         j                        }t        j                  dt         j                        }t        j                  d      }| j                  |||fd      }| j                  |||fd      }t        j                  dt         j                        }| j                  ||fd      }| j                  ||fd      }| j	                  d      }	| j	                  d	      }
t        |j                  j                  t         j                         t        |j                  j                  t         j                         t        |j                  j                  t         j                         t        |j                  j                  t         j                         t        |	j                  j                  t         j                         t        |
j                  j                  t         j                         |||||	|
fD ]  }||z    	 y )
Nre   r   r   )r  r   rW  )r  r   r  r  r  )	rJ   r   rZ   r  r  r   r  r?   rf   r  s               r:   r  zTestCSC.test_scalar_idx_dtype@  r  r<   N)r   r   r   r  r   rJ   r  r  r   r   r  rj  rm  ro  r}  r  r  r  r  r  r  r  r  ra   r<   r:   r  r    sr    . . 88RWWbjj"--@K'7/,<	99
J	K"r<   r  c                       e Zd Zed        Zy)TestCSCMatrixc                     t        j                         5  t        j                  dt        t               t        |i |cd d d        S # 1 sw Y   y xY wrc  )r)  r*  r
  r  r)   r   rd  s      r:   r   zTestCSCMatrix.spcreator]  r  rg  Nr  ra   r<   r:   r  r  \  r  r<   r  c                   z    e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zd Zy)r  c                     | j                  d      }d|d<   d|d<   ||j                  z  }||j                  j                         z  }t        |j	                         |j	                                y )N)rV   r  rV   rC  r  r  r   )r  r?  r   r   r   )r   rQ   r  r  s       r:   	test_multzTestDOK.test_multk  s[    x($$G199;		4r<   c                     | j                  d      }d|d<   d|d<   |dz   }t        ddgddgddgg      }t        |j                         |       |d	z   }|d	z   }t        |j                         |       y )
Nr  r5  r  r  rV   r   r  ro  )r   r   r   r   r&  s      r:   test_add_nonzerozTestDOK.test_add_nonzeros  sz    NN5!##FB7RHr2h/0199;*FF199;*r<   c                     | j                  d      }d|d<   d|d<   t        |dz  j                         |j                         dz         t        |dz  j                         |j                         dz         y Nr  r  r5  r  r  ro  r  r   r   r   r  s     r:   test_dok_divide_scalarzTestDOK.test_dok_divide_scalar  s_    NN5!##AbD>>+QYY[^<AaC==?AIIKM:r<   c                 p   d\  }}| j                  ||f      }d|d<   d|d<   d|d<   d|d	<   d
|d<   d|d<   t        |j                         d d |dz
  f   t        |             |j	                         }t        |j                         d d |dz
  f   t        |             ||}}|j                         }t        |j                  ||f       t        |j                         |dz
  d d f   t        |             |j                         }t        |j                         |dz
  d d f   t        |             y )N)r   r  r   rC  re   r  r   rW  r  r  r  rc  r   rK  )	r  r   r   r   r  r   r   r   r  )r   r  r  rN   r6  rS   r7  s          r:   test_convertzTestDOK.test_convert  s   A1v& ###### 	199;q1u-uQy9 ggi3;;=1Q3/q; QAKKMQWWq!f%199;qs1u-uQy9 ggi3;;=1Q/q;r<   c                    t        t        | j                         t        g dg dg dgd      }| j                  |      }t	        |j
                  |j
                         t	        |j                         |       | j                  |      }t	        |j                         |j                                g dg dg}| j                  |t        j                        }t	        |j
                  t        j                         |j                         }t	        |j
                  t        j                         t        ||       y )Nr  r  r  r  r.  r  r   )r  r  r  r   r   r?   r   r  rJ   r   r   )r   rS   rQ   r  r  r  das          r:   	test_ctorzTestDOK.test_ctor  s    i!3!34 <|<cBq!QWWagg&QYY[!$ q!QYY[!))+.9%t2::6QWWbjj)YY[RXXrzz*2t$r<   c                     | j                  d      }d|d<   t        d|j                         vd       | j                  d      }d|d d df<   t        t        |j                               dk(  d       y )Nr`  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r  r   keysr   r  s      r:   test_ticket1160zTestDOK.test_ticket1160  sl    u%# 	QVVX%'GH u%!A#AFFH"$@Ar<   N)r   r   r   r"   r   rJ   r  r   r   r  r  r  r  r  r  r  ra   r<   r:   r  r  g  s>    I77BJJ6K5
+;<>%*Br<   r  )rI  rJ  c                       e Zd ZeZy)TestDOKMatrixN)r   r   r   r   r   ra   r<   r:   r  r        Ir<   r  c                       e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zd Zd Zd Zd	 Zy
)TestLILc                    t        dt        j                        }d|d<   d|d<   | j                  dt        j                        }d|d<   d|d<   t	        j
                         dk7  r4t        ||j                  z  ||j                  z  j                                t        ||j                         j                  z  ||j                         j                  z  j                                y )NrV   rV   rV   rC  y              4@r  r   ppc64le)
r   rJ   r   r  platformmachiner   r?  r   r   r&  s      r:   test_dotzTestLIL.test_dot  s    (BMM*$$xr}}=$$ *q133wQSS(9(9(;<1q{{}.Q[[]__1D0M0M0OPr<   c                     | j                  d      }d|d<   |dz  }t        |d   d       |dz  }t        |d   d       y )Nr`  re   r  r  r   )r  r   )r   r@   s     r:   test_scalar_mulzTestLIL.test_scalar_mul  sI    v&$aCQtWa aCQtWa r<   c                     | j                  d      }d|d<   d|d<   t        |dz  j                         |j                         dz         t        |dz  j                         |j                         dz         y r  r  r  s     r:   test_truediv_scalarzTestLIL.test_truediv_scalar  sc    NN6"$$AF++-qyy{R/?@AE??,aiikAo>r<   c                 2   | j                  g dg dg      }| j                  g dg dg      }|||z   f|||z
  fd|dz  fd}|j                         D ]V  \  }\  }}|j                         } t        |d| d      |       t	        |j                         |j                                X | j                  dt        j                  d	      
      }| j                  g d      }|dd d fxx   |z  cc<   t	        |dd d f   j                         |       y )Nr   re   r   r  r  r   )addsubmul__i__rB  r   r   )皙?r  r  r   )	r  r  r,  r{   r   r   rJ   r?   r  )r   rQ   rR   r  opr   rq  rN  s           r:   test_inplace_opszTestLIL.test_inplace_ops  s   	956	9561q5z1q5z1q5z# &*ZZ\ 	E!B!VVXF)GFc"RL)%0v~~/1A1A1CD		E vRXXi-@ALL)	!Q$11QT7??,a0r<   c                     g dg dg}| j                  t        |            }t        |      D ]7  \  }}t        |j	                         t        ||   |j
                               9 y )Nr  r  )ndmin)r  r   r<  r   r   r   )r   row_datarR   r  r  s        r:   test_lil_iterationzTestLIL.test_lil_iteration
  sX    y)uX/l 	RFAss{{}eHQKsxx.PQ	Rr<   c                     | j                  d      }d|d<   d|d<   d|d<   d|d	<   d
|d<   |j                         }| j                  |      }t        |j                         |j                                y )Nr  rV   rC  r  r  r  )r  r   r  )r   r  r  )r  r  )r  r  r   r   )r   rR   r   r  s       r:   test_lil_from_csrzTestLIL.test_lil_from_csr  sp    x($$$$$GGIq!199;		4r<   c                     | j                  t        d      j                  dd            }| j                  |      }t	        |t        g d      ddf   j                         |t        g d      ddf          y )Nr-  r  r  re   r   )r  r   r   r  r   r   r   )r   r  rQ   s      r:   test_fancy_indexing_lilzTestLIL.test_fancy_indexing_lil  sm    LL++Aq12q!QuY'1,-557uY'1,-	/r<   c                    | j                  d      }d|d<   d|d<   d|d<   d|d	<   | j                  d      }d|d<   d|d
<   d|d<   d|d	<   d|d<   t        |j                  |      j                         |j                  |      j                                t        |j                  |      j                         g dg dg dg dg       y )Nrc  r   r  re   r  r   r  r  rW  r5  r  ry  rf  r   r   r  )r   r  r   )r  r   r  r   )r   lr  s      r:   test_point_wise_multiplyz TestLIL.test_point_wise_multiply#  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r<   c                 h    | j                  t        j                  d            }|dz  }d|dd d f<   y )Nr`  r|  r   )r  rJ   r  rS  s     r:   test_lil_multiply_removalz!TestLIL.test_lil_multiply_removal:  s0    rwwv/	R!Q$r<   N)r   r   r   r$   r   rJ   r  r   r   r  r  r
  r  r  r  r  r  r"  r$  ra   r<   r:   r  r    sN    I77BJJ6KQ!?1(R
5/).r<   r  )rI  c                       e Zd ZeZy)TestLILMatrixN)r   r   r   r   r   ra   r<   r:   r&  r&  A  r   r<   r&  c                       e Zd Zej                  ej
                  ej                  gZd Zd Z	d Z
d Zd Zej                  j                  dd      d	        Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)BaseTestCOOc                    t        g d      }t        g d      }t        g d      }| j                  |||ffd      }t        t        d      j	                  dd      |j                                | j                  dd	gd
d	gd
d	gfft        j                        }t        dd
gd
d	ggt        j                        }t        ||j                                y )Nrq  rr  rs  rc  r  r  r   rx  r   r   r   )r   r  r   r   r   r   rJ   r|  )r   r  r  r  rb  rS  s         r:   rj  zBaseTestCOO.test_constructor1L  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5#++-0r<   c                     t        g d      }t        g d      }t        g d      }| j                  |||ffd      }t        g dg dg dg      }t        ||j                                y )N)
r   r   re   re   re   re   r   r   re   re   )
r   re   r   re   r   r   r   r   r   re   )
re   r  r  r  r  r   r   re   r   r  r`  )r  r   r   r   )r  r  r   )r   r  r   r   )r   r  r  r  rb  r   s         r:   rm  zBaseTestCOO.test_constructor2Z  s_    )*)*-.  $Cy!1%8ZJ783.r<   c                    | j                  d      }t        |j                  d       t        |j                  g        t        |j                  g        t        |j
                  g        t        |j                         t        d             y )Nrc  )r  r   r   r  r  r  r   r   r   rb  s     r:   ro  zBaseTestCOO.test_constructor3e  s^      '399U+3772&3772&388B'3;;=%-8r<   c                 P   t        g dg dg dg      }| j                  |      }t        |j                         |       t        g d      }| j                  |      }| j                  r|n|j                  dd      }t        |j                         |       t        j                  t        d      5  | j                  g dg d	g d
f       d d d        t        j                  t        d      5  | j                  g dd       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nr   r   r   r   )r  r   r   r   )r   r  r   r   r   r   zobject cannot be interpretedrk  )r   r     !   r  r  r  r  rW  )
r   r  r   r   r  r   r  r   r  r  )r   r   rb  rq  s       r:   r}  zBaseTestCOO.test_constructor4o  s    Y  !   %3;;=#. I  %,,3#++a2D3;;=(3 ]]9,KL 	N|0LM	N ]]:-CD 	>f=	> 	>		N 	N	> 	>s   3D1DDD%c                     dg}| j                  |dgdgffd       }|j                  t        j                  |      j                  k(  sJ y )Nr   r   r   )r  r?   rJ   r   )r   r  rb  s      r:   "test_constructor_data_ij_dtypeNonez.BaseTestCOO.test_constructor_data_ij_dtypeNone  sK    s  $!qc
!34 @yyBHHTN00000r<   FzCOO does not have a __getitem__runr
  c                      y r>   ra   r   s    r:   r  zBaseTestCOO.test_iterator      r<   c                     ddgg}| j                  |      j                         }t        |j                         |       y rj   )r  todiar   r   )r   r   r{  s      r:   test_todia_all_zerosz BaseTestCOO.test_todia_all_zeros  s6    Q  '--/3;;=%0r<   c                    | j                  d      }|j                          | j                  ddgddgddgff      }|j                          t        |j                         ddgddgg       | j                  ddgddgddgff      }|j                          t        |j                         ddgddgg       t        |j                  dg       t        |j
                  dg       t        |j                  dg       y )Nrc  r   re   r   r   )r  r  r   r   r  r  r  r,  s     r:   test_sum_duplicateszBaseTestCOO.test_sum_duplicates  s      '  1Q%1Q%!A!893;;=Aa5!A-8  1Q%1Q%!A!893;;=Aa5!A-8377QC(377QC(388aS)r<   c                     | j                  g dg dg dff      }|j                         }t        |j                         |j                                y )Nry  rz  r{  )r  r  r   r   )r   rb  rD   s      r:   test_todok_duplicatesz!BaseTestCOO.test_todok_duplicates  s=      )i-C!DEiik3;;=#++-8r<   c                    | j                  g dg dg dff      }|j                         }t        |j                  dz   |j                         |j	                         }t        |j                  dz   |j                         y )Nry  rz  r{  re   )r  r  r   rg  r  )r   rb  r7  r6  s       r:   test_tocompressed_duplicatesz(BaseTestCOO.test_tocompressed_duplicates  s^      )i-C!DEiikSWWq[#''*iikSWWq[#''*r<   c                    | j                  d      }t        |j                  d       t        j                  g dg      }t        j                  dg      t        j                  dg      t        j                  dg      ff}t        j                  ddg      t        j                  ddg      t        j                  ddg      ff}| j                  |      }|j                  du sJ | j                  |      }|j                  du sJ |j                          |j                  du sJ | j                  |d      }|j                  du sJ | j                  |d      }|j                  du sJ |j                          |j                  du sJ | j                  |      }|j                  du sJ t        |j                  d       |j                          |j                  du sJ t        |j                  d       d|_        t        |j                  d       t        |j                  d       |j                          t        |j                  d       | j                  |      }d|_        t        |j                  d       t        |j                  d       |j                          t        |j                  d       y	)
r  r  Tr  re   r   r   Fr  N)r  r   r  rJ   r   r  rg  )r   rQ   A_arrayA_coords_formA_coords_dupss        r:   r  z%BaseTestCOO.test_has_canonical_format  se    v&Q++T2((I;'1#1#!(FG1a&)BHHaV,<bhh1v>N+OPw'%%---}-%%...	%%---qt,%%---qu-%%...	%%---}-%%...QUUA	%%---QUUA "'Q++U3QUUA	Q++T2}-!%Q++T2QUUA	QUUAr<   c                 \   t        g d      }t        g d      }t        g d      }| j                  |||ffd      }|j                         }|j                          t	        |j
                  dk7  j                                t        |j                         |j                                y )Nr  )r   r   r   r   r   r   r   r   r  r  rW  r   )	r   r  r,  r  r   r  rR  r   r   )r   r  r  r  rD  rE  s         r:   r  z BaseTestCOO.test_eliminate_zeros  s    -.,-,-  $c
!36 BhhjQ##%&3;;=#++-8r<   c                    g dg dg dg}d}| j                  |      }|j                  |      }t        |j                  |j                  u        |j                  |d      }t        |j                  |j                  u        |j                  |d      }t        t	        j
                  |j                  |j                                y )Nr  r  r  r  Fr  T)r  r   r   r  rJ   rP   )r   ro   	new_shaper@   rA   s        r:   test_reshape_copyzBaseTestCOO.test_reshape_copy  s    lO<	s#IIi !&& !IIieI,!&& !IIidI+B''778r<   c                    | j                  dgdgdgffd      }| j                  dgdgdgffd      }t        |j                  dd      |k7  j                  dk(         t        |j                  dd	      |k7  j                  dk(         y )
Nr   i- rf  )-   )rJ  rI  r   r  r   r  )r  r   r   rg  )r   mat1mat2s      r:   test_large_dimensions_reshapez)BaseTestCOO.test_large_dimensions_reshape  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr<   N)r   r   r   rJ   r  r   r   r  rj  rm  ro  r}  r2  r  r  xfailr  r9  r;  r=  r?  r  r  rG  rM  ra   r<   r:   r(  r(  I  s    77BJJ6K1	/9>,1
 [[5)JK L1
*9
++Z99	Mr<   r(  c                       e Zd ZeZy)TestCOON)r   r   r   r#   r   ra   r<   r:   rP  rP    s	     Ir<   rP  )rB  rC  rD  rE  rF  c                       e Zd ZeZy)TestCOOMatrixN)r   r   r   r   r   ra   r<   r:   rR  rR    s	    
 Ir<   rR  c                     t         t        j                  t        t           f   } t        | t              sJ | j                  t         u sJ | j                  t        j                  t        t           fk(  sJ t         t        j                     } t        | t              sJ | j                  t         u sJ | j                  t        j                  fk(  sJ y r>   )	r#   rJ   r   r$  r  rI   r   r  r  r  s    r:   test_sparray_subscriptablerT    s    rwwc
*+Ffl+++	)))??rwwc
3333rwwFfl+++	)))??rwwj(((r<   c                   >   e Zd ZeZej                  ej                  ej                  gZ	d Z
ej                  j                  dd      d        Z ed      d        Zd Zd	 Zej                  j'                  d
      d        Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestDIAc                    t        g dg dg dg dg      }t        j                   g dg      j                  dd      }t        j                   g d	      }t        | j	                  ||fd
      j                         |       y )N)r   r   r   r   )r   re   r   r  )r   re   r   r   )r   r   r   r  r  r   r   rd  r   r   re   r  rW  )r   rJ   repeatr   r  r   )r   r  r  r  s       r:   rj  zTestDIA.test_constructor1   st    <! " xx$++A1+5((8$T''wv'FNNPRSTr<   FzDIA does not have a __getitem__r3  c                      y r>   ra   r   s    r:   r  zTestDIA.test_iterator)  r6  r<   r   c                 P   | j                  t        j                  d            }t        |j                  j
                  t        j                         |j                  dd       t        |j                  j
                  t        j                         | j                  t        j                  d            }t        |j                  j
                  t        j                         |j                  dd       t        |j                  j
                  t        j                         y )Nr   rV  re   r  r  )	r  rJ   r'   r   r  r?   rZ   r  rf   r   r  s     r:   test_setdiag_dtypezTestDIA.test_setdiag_dtype-  s    rvvay)QYY__bhh/			$!	QYY__bhh/rvvay)QYY__bhh/			$!	QYY__bhh/r<   c                    dgg}g dg}|dgdddgddggdf|dgdddgddggdf|dgdddgddggdf|d	gdddgddggd
f|dgdddgddggdf|dgdddgddggdf|dgdddgddggdf|d	gdddgddggdfd d dddgddggdfddggdgdddgddggdft        j                  dd      j                  d      g ddddgddggdft        j                  dd      j                  d      g ddddgddggdfgS )Nr   r  r   r   zshorter diagonal withinz+shorter diagonal above (but within if full)r   z$shorter diagonal, all elements abover  z$shorter diagonal, all elements belowz"longer diagonal within (only head)re   z"longer diagonal within (only tail)z#longer diagonal, all elements abovez#longer diagonal, all elements belowzempty inputzexplicit zerosr  )r  r   )r   r   re   r   r   rE  r  r  z)overfilled shorter-diagonal, out of orderr/  )r  r   r     z(overfilled longer-diagonal, out of order)rJ   r   r   )r   d1d3s      r:   	ill_caseszTestDIA.ill_cases9  s   
 cU[bT11v1v.*,aS11v1v.>@aS11v1v.79bT11v1v.79bT11v1v.57aS11v1v.57aS11v1v.68bT11v1v.68tQ!Q!Q 0 a&A3QFQF#3!#1e$,,V4)aVaV$<> 1i(008)aVb!W%;=1> 	>r<   c                     | j                         D ][  \  }}}}}dD ]N  }|| j                  |      }n| j                  ||f|      }d|v rd}|j                         |k(  rFJ d|z           ] y )Nr  r  r  rW  r   case: )rb  r  _getnnz)r   r  ofsetsrg  refcaser   rQ   s           r:   test_getnnzzTestDIA.test_getnnz^  s    ,0NN,< 	;(D&#sD1 ;<**51A**D&>*GA:Cyy{c):8d?:);	;r<   zDIA stores extra zerosr	  c                      y r>   ra   r   s    r:   r1  zTestDIA.test_getnnz_axisi  r6  r<   c                    | j                         D ]  \  }}}}}dD ]  }|| j                  |      }n| j                  ||f|      }|j                         }t        j                  |      d |d   d |d   f   }	t        j
                  |	      }
|j                  |
k(  sJ t        |j                         |	d|z            y )Nrd  rW  r   r   re  r  )	rb  r  r  rJ   r   rh  rg  r   r   )r   r  rg  r#  r  ri  r   rQ   rR   rh  rg  s              r:   
test_tocsrzTestDIA.test_tocsrm  s     )-(8 
	N$D&!Q1 	N<**51A**D&>*GAGGIhhqk)58)YeAhY"67&&s+uu|#|"199;X_M	N
	Nr<   c                     | j                  g dgdgfd      }|j                         }t        |j                         j                         |       t        |j	                         j                         |       y )Nr  r   rK  rW  )r  r   r   r  r  )r   r  rq  s      r:   test_convert_gh14555zTestDIA.test_convert_gh14555}  s]    bT2&A99;1779,,.91779,,.9r<   c                 2   | j                  ddgddgg      j                         }t        j                  |j                  |j
                  f|j                        }t        j                  t        j                  |      dkD        }|j                  |k(  sJ y )Nr   re   r   r  r   )
r  r  rJ   ravel_multi_indexr  r  r   rR  diffr  )r   r  	flat_indsinds_are_sorteds       r:   test_tocoo_gh10050zTestDIA.test_tocoo_gh10050  sz    AA/0668((!%%A	&&!3a!78%%888r<   c                 ,   t        j                  g dg      j                  dd      }t        j                  g dt         j                        }t	        j
                  ||fd      }|j                         }|j                  j                  t         j                  k(  sJ |j                         }|j                  j                  t         j                  k(  sJ |j                         }|j                  j                  t         j                  k(  sJ y )	Nr  r   r   rd  rX  r   r  rW  )rJ   r   rY  rZ   r   r%   r  r  r?   r  r  r  )r   r  r  r{  rb  r7  r6  s          r:   test_tocoo_tocsr_tocsc_gh19245z&TestDIA.test_tocoo_tocsr_tocsc_gh19245  s    xx'..qq.9((:RXX6gf=iikww}}(((iik{{  BHH,,,iik{{  BHH,,,r<   c                 j   t        ddg      }|t        dgd      z   }| j                  |      }| j                  |      }||z   }t        || j                        sJ t        |j	                         ||z          ||z   }t        || j                        sJ t        |j	                         ||z          y )Nr   re   r   )r   r  rI   r   r   r   rQ   rR   r&  r  r  s         r:   test_add_sparsezTestDIA.test_add_sparse  s    !QLaS!  #  #Ci#t112223;;=!a%0Ci#t112223;;=!a%0r<   c                    t        ddg      }|t        dgd      z   }| j                  |      }| j                  |      }||z
  }t        || j                        sJ t        |j	                         ||z
         ||z
  }t        || j                        sJ t        |j	                         ||z
         |j                  d      }t        ||z
  j	                         ||z
         t        ||z
  j	                         ||z
         y )Nr   re   r   r7  )r   r  rI   r   r   rT  ry  s         r:   test_sub_sparsezTestDIA.test_sub_sparse  s    !QLaS!  #  #Ci#t112223;;=!a%0Ci#t112223;;=!a%0ll5!C#I..0!a%8C#I..0!a%8r<   c                 >   | j                  ddgddgg      }|dz  }t        ||j                        sJ t        |j	                         ddgddgg       |j                  d      }t        ||j                        sJ t        |j	                         ddgddgg       y )Nr   re   r   r  r   r   r  )r  rI   r  r   r   r  )r   r  resres2s       r:   r  zTestDIA.test_mul_scalar  s    AA/0!e#q{{+++3;;=Aq6Ar7*;<zz!}$,,,4<<>QFQG+<=r<   c                    t        g dg dg      }t        ddgddgddgg      }| j                  |      }| j                  |      }d	|j                  |j                  d
k(  <   d	|j                  |j                  d
k(  <   t        |j	                         |       t        |j	                         |       ||z  }||z  }t        || j                        sJ t        |j	                         |       t        |j                  g d       t        |j                  | j                  |      j                         ||z  }||z  }t        || j                        sJ t        |j	                         |       t        |j                  g d       t        |j                  | j                  |      j                         | j                  g dg dgddgfd      }| j                  g dg dgd	dgfd      }||z  }t        |j                  t        dd
g             t        |j                  g dg dg       ||z  }t        |j                  t        dd
g             t        |j                  g dg dg       y )Nr  r  r  r  r_  r  r  r  r   r   r  )rE  r   r   r   re   )rz  r{  r|  )ry  r  rw  r   rE  r  )rt  r  rv  )rz  rz  ru  re   r  )      8@g     A@rz  )rt        ,@      ;@)r  rz  rz  )r  rt  r  )r   r  r  r   r   rI   r  )r   rQ   rR   r&  r  r   r  s          r:   test_matmul_diazTestDIA.test_matmul_dia  s&    9 B888    #  #"$Q"$Q3;;=!,3;;=!,ECi#t112223;;=!,3;;
3388T%7%7%:%?%?@ECi#t112223;;=!,3;;(9:388T%7%7%:%?%?@   <">B!H&Q  <">Q!H&QCi3;;r1g7388n&4&6 	7 Ci3;;r1g7388m&4&6 	7r<   N)r   r   r   r%   r   rJ   r  r   r   r  rj  r  r  rN  r  r   r]  rb  rj  r  r1  rm  ro  ru  rw  rz  r|  r  r  ra   r<   r:   rV  rV    s     I77BJJ6KU [[5)JK L Q	0  	0#>J	; [[56 7N :9-19&	>*7r<   rV  )rB  rC  rD  rE  rF  rI  rJ  c                       e Zd ZeZy)TestDIAMatrixN)r   r   r   r   r   ra   r<   r:   r  r    r   r<   r  c                      e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zej.                  j1                  dd      d        Zej.                  j1                  dd      d        Zd Zej.                  j1                  dd      d        Zej.                  j;                  ed      d        Zy)TestBSRc                    t        g d      }t        g d      }t        d      }t        g dg dg      |d<   t        g dg dg      |d	<   t        g d
g dg      |d<   t        g dg dg      |d<   t        g dg dg dgg dg dg      }| j                  |||fd      }t	        |j                         |       | j                  |||f      }t	        |j                         |       y N)r   re   re   r  )r   re   re   r   )r  re   r   r.  rX  r   r  )r   r   rV   r   )r   r  r  )r  r   r  re   )r   r  rV   )r  r   r-  r   r  r  rW  r   r  rW  )r   r   r   r   r   r   )r   r  r  r  rQ   r&  s         r:   rj  zTestBSR.test_constructor1  s    y!	"W~"$ %Q#% &Q$& 'Q$& 'Q )Ii0772CD  $wv!6V DS[[]A&   $wv!67S[[]A&r<   c                    dD ]6  }t        |      }t        | j                  |      j                         |       8 t        d      }t        | j                  |d      j                         |       t        | j                  |d      j                         |       t	        g dg dg dgg d	g d
g      }t        | j                  |      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t        | j                  |d      j                         |       t	        g dg dg dgg d	g d
g      }t        | j                  |d      j                         |       y )N)r  r  r  )rV   r  )r   r  rC  )r  r   r  rZ  r  r  r  rW  r.  rX  r  rW  r  r  )re   r  )r   r  r.  )r   r   r   r   r   )r   r   rQ   s      r:   rm  zTestBSR.test_constructor2  s    B 	=EeA++A.668!<	= %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                     g dg dg dff}t        ddgddgg      }t        | j                  |d	      j                         |       y )
Nr  r"  r  r   r   re   r   r  rZ  )r   r   r   r   )r   argrQ   s      r:   ro  zTestBSR.test_constructor30  sJ    '*+Aa5!A- T''v'>FFH!Lr<   c                 "   d}t        j                  ||dft         j                        }t        j                  d|gt         j                        }t        j
                  |t         j                        }| j                  |||f|dfd       y )Nr  r   r   r   F)r[  r,  )rJ   r  r   r   rZ   r   r   )r   r  r  r  r  s        r:   r}  zTestBSR.test_constructor46  so     ww1ay01a&1))ARXX.D'62q!f5Qr<   c                    d}t        j                  |      }t        j                  |||f      }t        j                  d|g      }t        j                  |      }t	        t
              5  | j                  |||f       d d d        t	        t
              5  | j                  |||fd       d d d        t	        t
              5  | j                  |||fd       d d d        y # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nr  r   rl  rZ  r  )rJ   r  r   r   r  r  r   )r   r  	data_1dimr  r  r  s         r:   r  zTestBSR.test_constructor5?  s    GGAJ	ww1ay!1a&!))A,:& 	=	7F;<	= :& 	Mgv6)L	M :& 	Jgv6&I	J 	J	= 	=	M 	M	J 	Js$   +C%C1C=%C.1C:=Dc                 @   dgdggdgdggg}t        j                  ddgt         j                        }t        j                  ddgt         j                        }| j                  |||fd      }|j                  t        j                  |      j                  k(  sJ y )Nr   r   re   r   rC  rZ  )rJ   r   rZ   r   r?   )r   rH   r  r  rS   s        r:   test_default_dtypezTestBSR.test_default_dtypeS  s    3*sQCj)1a&1((Aq628FKww"((6*00000r<   c                 0   t        g d      }t        g d      }t        d      }t        g dg dg      |d<   t        g dg dg      |d	<   t        g d
g dg      |d<   t        g dg dg      |d<   t        g dg dg dgg dg dg      }| j                  |||fd      }|j	                         }|j                         j	                         }t        |j                         |       t        |j                         |j                                y r  )r   r   r   r   r  r  r   r   )r   r  r  r  rQ   AbsrAcsrAcsr_via_coos           r:   test_bsr_tocsrzTestBSR.test_bsr_tocsr[  s   |$%Y"$ %Q#% &Q$& 'Q$& 'Q ,l;Y')!!4&"9!Izz|zz|))+T\\^Q'T\\^\%9%9%;<r<   c                    t        g dddgddgg      j                  }|j                  ddd      }t        g d      }t        g d      }| j	                  |||fd      }|j                         }|j                          t        |j                  d	       t        |j                         |j                                y )
Nr  r   r   re   r  r  )r  r  rW  r  )
r   r?  r   r   r   r,  r  r   rg  r   r  s         r:   r  zTestBSR.test_eliminate_zerosr  s    ,!uaUm<>>||Bq#01y!  $!8 Ghhj377C(3;;=#++-8r<   c                 j   t         j                  j                  d       | j                  t         j                  j                  d      d      }d|j                  |j                  dk  <   |j                          t        |j                  d       t        |j                  j                  d       d|j                  |j                  dk  <   |j                          t        |j                  d       t        |j                  j                  d	       t        |j                         t        j                  d             |j                          t        |j                  d       t        |j                  j                  d	       t        |j                         t        j                  d             y )
Nr   )r  r  r  rZ  g?B   )r  re   r   r{  r  )rJ   r   r  r   r  r  r   rg  r   r   r   r   r\  s     r:   test_eliminate_zeros_all_zeroz%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                    t        j                  g dg dg dg      }| j                  |      }t        d|j                         t        j                  ddg      }t        j                  ||dz  g      }t        j                  ddg      }| j                  |||f      j                         }t        d|j                         t        |j                  t              sJ |j                          t        d|j                         t        dt        |j                               | j                  |||f      j                         }d|_        t        d|j                         t        dt        |j                               |j                          t        dt        |j                               d|_        |j                          t        dt        |j                               t        d|j                         | j                  |      }d|_        t        d|j                         t        dt        |j                               |j                          t        d|j                         | j                  |      }|||c|_        |_
        |_        t        d|j                         t        dt        |j                               | j                  |      }|j                   |||c|_        |_
        |_        t        d|j                         t        dt        |j                               |j                          t        dt        |j                               y	)
r  )re   r   re   )r   re   r   )r  r   re   Tr   re   Fr   N)rJ   r   r   r   r  r,  rI   r  r  r   r  r  r  )r   rQ   r  r  r  r  s         r:   r  z!TestBSR.test_has_canonical_format  s    HHiJ78q!T1112((Aq6"xxAaC!1a&!gv67<<>UA223!00$777	T1112QAII' gv67<<>!%T1112QAII'	QAII'!&	QAII'T1112 q!!&UA223QAII'	T1112 q!&*GV#	18UA223QAII' q!	&*GV#	18T1112QAII'	QAII'r<   c                     | j                  t        d      j                  dd      d      }t        |j                  d         j                  dd      }t	        ||z  |j                         |z         y )Nx   r  r  r  r  rZ  r   r   r   r   r   r   r   r   ro  s      r:   test_bsr_matveczTestBSR.test_bsr_matvec  s_    vg66s3?5Q1771:&&r!,QUAIIK!O,r<   c                     | j                  t        d      j                  dd      d      }t        |j                  d   dz        j                  dd      }t	        ||z  |j                         |z         y )	Nr  r  r  r  rZ  r   r   r   r  ro  s      r:   test_bsr_matvecszTestBSR.test_bsr_matvecs  sc    vg66s3?5Q1771:a< ((A.QUAIIK!O,r<   FzBSR does not have a __getitem__r3  c                      y r>   ra   r   s    r:   r  zTestBSR.test_iterator  r6  r<   zBSR does not have a __setitem__c                      y r>   ra   r   s    r:   r  zTestBSR.test_setdiag  r6  r<   c                 L   t        j                  g dg dg dg      }| j                  |d      }t        |j	                  d      d u        t        |j                         ddgd	dgd
dgg       |j	                  d       t        |j                         ddgd	dgg       |j	                  d       t        |j                         ddgd	dgddgg       |j	                  d       t        |j                         g dg dg dg       t        t        |j                  d       y )Nr  r  r  r  rZ  r  r   r   re   r   r  r  r  r  r  )	rJ   r   r   r   r  r   r   r  r  r  s      r:   test_resize_blockedz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                      y r>   ra   r   s    r:   r  z"TestBSR.test_setdiag_comprehensive  r6  r<   zexceeds memory limitr	  c                    t        j                  dt         j                        }t        j                  dt         j                        }t        j                  d      }| j                  |||fd      }| j                  |||fd      }| j                  d      }| j                  d      }t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         t	        |j
                  j                  t         j                         	 t        j                  d      }t        j                  d	      }	| j                  |||fd      }
| j                  |	||fd      }t	        |
j
                  j                  t         j                         t	        |j
                  j                  t         j                         |||||
|fD ]  }||z    	 y # t        t        f$ r d}
d}Y (w xY w)
Nre   r   r   r"  r  rW  r  )r   r   r  )r   r   r  )
rJ   r   rZ   r   r   r  r?   rf   MemoryErrorr  )r   r  r  rZ  rN   rS   r  r  vals2vals3r  r  r@   s                r:   r  zTestBSR.test_scalar_idx_dtype  s    !288,((1BHH-xx	"gv6lKgv6jI|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.
	HH_-EHH]+E""E7F#;<"PA""E7F#;:"NA22 Q1a# 	AE	 Z( 	AA	s   'B2H, ,IIN) r   r   r   r&   r   rJ   r  r   r   r  rj  rm  ro  r}  r  r  r  r  r  r  r  r  r  r  rN  r  r  r  r  skipifIS_COLABr  ra   r<   r:   r  r    s    I77BJJ6K'.K0MRJ(1=.	9<.7(r-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar<   r  )rB  rC  rD  rE  rF  rJ  c                       e Zd ZeZy)TestBSRMatrixN)r   r   r   r   r   ra   r<   r:   r  r    r   r<   r  c                 j   |j                  dd      }t        j                  | j                  t        j                        s.t        j                  | j                  t        j
                        r|| f|z   S | f|z   |fz   S | dk(  j                         }| j                  dd      } | dddxx   dz  cc<   d| ddd<   |d   j                  dkD  r=t        d |D              }d|d   z  f|dd z   }d|d   z  dz   f|dd z   }d| |<   d| |<   t        d |D              }|| f|z   S | f|z   |dz  fz   S )	z-Duplicates entries to produce the same matrixr  Nr   re   rd  r   c              3   &   K   | ]	  }|d      ywr  ra   ).0ps     r:   	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>;  s     ,QAaD,s   c              3   >   K   | ]  }|j                  d         yw)re   N)rY  )r  r  s     r:   r  z&_same_sum_duplicate.<locals>.<genexpr>A  s     7w"7s   )
poprJ   rl   r?   r  unsignedintegerr#  rY  rk   r$  )r  indsrB   r  	zeros_pospospos1pos2s           r:   _same_sum_duplicater  (  sP   ZZ$'F	}}TZZ*	}}TZZ!3!34>7T>!7T>VI--##%I ;;qq;!D1INIDAJ |1,),,#a&{SW$#a&
}s12w&T
T
7$77D~w~w~!--r<   c                        e Zd Zdd fd
Zej
                  j                  d      d        Zej
                  j                  d      d        Zej
                  j                  d	      d
        Z	 xZ
S )_NonCanonicalMixinFsorted_indicesc                   t         |   } ||g|i |}|j                         dk(  j                         }|d   j                  dkD  }|rm|d   j                  dz  }	t        j                         5  t        j                  dt        t               | j                  ||d   |	   |d   |	         }ddd       | j                  ||      }
d|vr|j                  |d<    ||
fi |}|j                  t        j                  t        j                   fv rd}nd}t#        |j                         |j                         |	       |r&t%        |j&                  dk(  j)                                |S # 1 sw Y   xY w)
zcReplace D with a non-canonical equivalent: containing
        duplicate elements and explicit zerosr   re   r(  r   Nr   gh㈵>gHz>)rtol)superr   r   r#  rk   r)  r*  r
  r  r)   _insert_explicit_zero_arg1_for_noncanonicalr   r?   rJ   r   r  r   r   r  r  )r   r  r  re  rB   	constructr  zero_pos	has_zerosr  arg1NCr  r  s                r:   r   z_NonCanonicalMixin.spcreatorJ  s_    G%	a)$)&)IIK1$--/a[%%)	  !#A((* R''$8OP..q(1+a.(1+a.QR **1n=& ggF7Ot&v& 88

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

aiik= RWW\&&() 	3R Rs   3?E--E6z"bool(matrix) counts explicit zerosr	  c                      y r>   ra   r   s    r:   r   z_NonCanonicalMixin.test_boolo  r6  r<   z!getnnz-axis counts explicit zerosc                      y r>   ra   r   s    r:   r1  z#_NonCanonicalMixin.test_getnnz_axiss  r6  r<   znnz counts explicit zerosc                      y r>   ra   r   s    r:   ri  z_NonCanonicalMixin.test_emptyw  r6  r<   )r   r   r   r   r  r  r  r   r1  ri  __classcell__)r  s   @r:   r  r  I  s    16 #J [[AB C [[@A B [[89 :r<   r  c                       e Zd ZddZd Zy)_NonCanonicalCompressedMixinc                    t        |j                  |j                  |j                        \  }}}|sOt	        ||dd       D ]=  \  }}||| ddd   j                         ||| ||| ddd   j                         ||| ? |||fS )5Return non-canonical constructor arg1 equivalent to M)r  r   Nr   )r  r  r  r  r  r,  )r   r  r  r  r  r  startstops           r:   r  z3_NonCanonicalCompressedMixin._arg1_for_noncanonical}  s     3AFFAII;<88!Egv"66!":6 At&-eD&9$B$&?&D&D&Fd##'d#3DbD#9#>#>#@U4 A Wf$$r<   c                     d|||f<   |S rj   ra   r   r  r  r  s       r:   r  z2_NonCanonicalCompressedMixin._insert_explicit_zero  s    !A#r<   N)F)r   r   r   r  r  ra   r<   r:   r  r  |  s    %r<   r  c                       e Zd Zd Zd Zej                  j                  dd      d        Zej                  j                  dd      d        Z	y	)
_NonCanonicalCSMixinc                 l      fd}t         D ]%  }dD ]  } |t        j                  |      |         ' y )Nc                 @   t        g dg dg dg dg|       }	j                  ||      }|j                  \  }}t        | |      D ]*  }t        | |      D ]  }t	        |||f   |||f           , dD ]#  }t        t        t        f|j                  |       % y )Nry  r  r  rf  r   r  r  )	r   r   r   r"  r   r  r  r  r  )
r?   r  r  rQ   r  r  r  r  r'  r   s
            r:   r  z3_NonCanonicalCSMixin.test_getelement.<locals>.check  s    w  (-.A q@A''CAaA2q\ 1r1 1A 1Q31Q3011 C Jz95q}}bIJr<   )FTr  )r   r  r?   r  s   `   r:   r  z$_NonCanonicalCSMixin.test_getelement  s;    	J  & 	7E"/ 7bhhuo~67	7r<   c                    t        j                  d      }| j                  |      }| j                  g dg      }|j                         |dd d f<   t	        j
                         5  t	        j                  dt        t               ||dd d f<   d d d        t        |j                         |       |j                         j                         |d d df<   t	        j
                         5  t	        j                  dt        t               |j                  |d d df<   d d d        t        |j                         |       y # 1 sw Y   xY w# 1 sw Y   0xY w)Nr   r  r   r(  re   )rJ   r'   r   r   r)  r*  r
  r  r)   r   r  r?  )r   r  rQ   rR   s       r:   test_setitem_sparsez(_NonCanonicalCSMixin.test_setitem_sparse  s   FF1INN1NNG9%!A#$$& 	##Hd4KLAacF	 	199;*""$!A#$$& 	##Hd4KLSSAacF	 	199;*	 		 	s   &)E *3E E	EFz(inverse broken with non-canonical matrixr3  c                      y r>   ra   r   s    r:   r  z_NonCanonicalCSMixin.test_inv  r6  r<   z&solve broken with non-canonical matrixc                      y r>   ra   r   s    r:   r  z_NonCanonicalCSMixin.test_solve  r6  r<   N)
r   r   r   r  r  r  r  rN  r  r  ra   r<   r:   r  r    s`    7*+" [[5)ST U [[5)QR Sr<   r  c                       e Zd Zy)TestCSRNonCanonicalNr   r   r   ra   r<   r:   r  r        r<   r  c                       e Zd Zy)TestCSRNonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zy)TestCSCNonCanonicalNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zy)TestCSCNonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zd Zej
                  j                  dd      d        Zej
                  j                  dd      d        Zy)	TestBSRNonCanonicalc                 h    |j                         }d|||f<   |j                  |j                        S )Nr   rZ  )r  r  r[  )r   r  r  r  r@   s        r:   r  z)TestBSRNonCanonical._insert_explicit_zero  s/    GGI!A#www--r<   Fz&diagonal broken with non-canonical BSRr3  c                      y r>   ra   r   s    r:   r  z!TestBSRNonCanonical.test_diagonal  r6  r<   z"expm broken with non-canonical BSRc                      y r>   ra   r   s    r:   r  zTestBSRNonCanonical.test_expm  r6  r<   N)	r   r   r   r  r  r  rN  r  r  ra   r<   r:   r  r    s[    .
 [[5)QR S [[5)MN Or<   r  c                       e Zd Zy)TestBSRNonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                        e Zd ZddZd Zd Zy)COONonCanonicalMixinNc                 l    t        |j                  |j                  |j                        \  }}}|||ffS )r  )r  r  r  r  )r   r  r  r  r  r  s         r:   r  z+COONonCanonicalMixin._arg1_for_noncanonical  s1    ,QVVQUUAEEBc3c3Zr<   c                    t         j                  |j                  j                  j	                  d      |j                  f   |_        t         j                  |j
                  j                  j	                  |      |j
                  f   |_        t         j                  |j                  j                  j	                  |      |j                  f   |_        |S rj   )rJ   r_r  r?   rL  r  r  r  s       r:   r  z*COONonCanonicalMixin._insert_explicit_zero  s    qvv||((+QVV34aeekk&&q)15501aeekk&&q)15501r<   c                 2   | j                  t        j                  d            }|j                          |j	                  ddgd       |j                          t        t        j                  t        j                  |j                        dk\               y )Nr   re   r   r  r   )	r   rJ   r'   r  r  r   rR  rr  r  r\  s     r:   test_setdiag_noncanonicalz.COONonCanonicalMixin.test_setdiag_noncanonical  sf    NN266!9%				1a&A		rwwquu~*+,r<   r>   )r   r   r   r  r  r  ra   r<   r:   r  r    s     
-r<   r  c                       e Zd Zy)TestCOONonCanonicalNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zy)TestCOONonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                     t        j                  g dg      } t        j                  dgdgdgg      }t        j                  g dg dg      }t        j                  dgg      }t        j                  dgg      }t        j                  g dg      }t        t        t        t
        fD ]  } ||       j                  d      } ||      j                  d	      } ||      j                  d      }	 ||      j                  d
      }
 ||      j                  d      } ||      j                  d      }t        |j                         t        j                  | d             t        |j                         t        j                  |d	             t        |	j                         |       t        |
j                         t        j                  |d
             t        |j                         t        j                  |d             t        |j                         t        j                  |d             t        j                  t        d      5   |g dg dg      j                  d       d d d        t        j                  t        d      5   |g dg      j                  d       d d d         y # 1 sw Y   LxY w# 1 sw Y   )xY w)Nr  r   r   re   r  r  r  r  r  r  r  r  zcannot be broadcastrk  )r   re   r   r  rC  rW  r.  r  )rJ   r   r   r    r   r!   _broadcast_tor   r   broadcast_tor  r   r  )rN   rS   r  r  r  r  	containerres_ares_bres_cres_dres_eres_fs                r:   test_broadcast_tor    s   
)A
1#sQC!A
)Y'(A
1#A
1#A
)A )ZC ?	!**51!**51!**51!**51!**51!**515==?BOOAu,EF5==?BOOAu,EF5==?A.5==?BOOAu,EF5==?BOOAu,EF5==?BOOAu,EF]]:-BC 	Jy),-;;&;I	J ]]:-BC 	?yk"00v0>	? 	?#?	J 	J	? 	?s   J>K
>K	
K	r>   )NFNNF)T)	TTTTTTTTT)r   
contextlibr   r;  r  r=  sysr)  r  r   r  numpyrJ   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   numpy.exceptionsr   typesr   scipy.linalgr   r  r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   scipy.sparse._baser,   scipy.sparse._sputilsr-   r.   r/   r0   r1   scipy.sparse.linalgr2   r3   r4   r   r  r;   rC   	frozensetr  r  rT   r   r   r   r   r   r   r
  r  r  r  thread_unsafer  r  rW  rr  contextmanagerr  r  r  r  r  r  r,  r>  rN  rP  ra  r  r  r  r  r  r  r  r  r&  r(  rP  rR  rT  rV  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra   r<   r:   <module>r     s        
   *       ,   C C C C C C
 (F F / /ckk)/
'
 %eW- (( JN?DWt$ $6"$ "$H 4 D^ 7 ^ 7BA| |~a+ a+H "56% % 7%0@ @F
OK OKd\0 \0~ B Bk$ k$\%C %CP_K _KD`0 `0FL5 L5^
2 2:8 AE8<JN,0%'X), ),Xc& 1 3 c&L	    /L' /)    P 1 3 Pf    /L' /    _Buu= _BDL'         mu- m`L'         qM qMfkt(,T/3$HL%U.3E5:P        	)U7ueE/45',u> U7pL'         _u(-e/45).0 _D	L'         .B0 0f#5  -7 -`	. 		 3] 		. 		 3] 	6 	 3] 	-- -(	. 		 4m 	?r<   