
    >qjLx                       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<m=Z= dd	l>m?Z? dd
l@mAZAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZI dej                  v ZKd~dZLd ZM eNdg      ZOdZPd ZQ	 	 ddZRd ZS G d d      ZT G d d      ZU G d d      ZV G d d      ZW G d d      ZX G d d       ZY G d! d"      ZZej                  j                  d#$       G d% d&             Z] G d' d(      Z^ G d) d*      Z_ G d+ d,      Z`ej                  d-        Zb G d. d/      Zc G d0 d1      Zd G d2 d3      Ze G d4 d5      Zf G d6 d7      Zg G d8 d9      Zhdd;Zi	 	 	 	 dd<Zj G d= d>      Zk G d? d@ek ej             Zlelj                           G dA dBeWel      ZndC Zoenj                           G dD dEek ej             Zpepj                           G dF dGeWep      Zqeqj                           G dH dI ejddJ            Zr G dK dLeWer      Zserj                          esj                           G dM dN ejdO            Zt G dP dQeWet      Zuetj                          euj                           G dR dS      Zv G dT dUev ejd:d:d:d:d:V            Zw G dW dXeWev ejdddddV            Zxewj                          exj                          dY Zy G dZ d[ ejddddddd\            Zz G d] d^eWez      Z{ezj                          e{j                           G d_ d` ejdddddda            Z| G db dceWe|      Z}e|j                          e}j                          dd Z~ G de df      Z G dg dhe      Z G di dje      Z G dk dleel      Z G dm dneen      Z G do dpeep      Z G dq dreeq      Z G ds dtee|      Z G du dvee}      Z G dw dxe      Z G dy dzeew      Z G d{ d|eex      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matrix_transpose)_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
collectionr7   messages       [/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/sparse/tests/test_base.py	assert_inr<   5   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_dtyperD   :   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)rA   arraysas      r;   _underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arraysF   sO     ""$ 	!A!RZZ"**45a 	! r=   TF)rK   may_share_memory)ABrP   rO   bs        r;   sparse_may_share_memoryrU   C   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?   )r0   r   rK   iinfomaxint32r   intc)rN   maxvalcheck_contentstps       r;   new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypef   s]     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir=   c                     S r?    )rN   r]   r^   fixed_dtypes      r;   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypel   s	    r=     c                 h    t         j                  t         j                  fj                  d         S )N   )rK   r[   int64integers)rN   r]   r^   rngs      r;   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypep   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   )
rK   r[   rg   r   r@   size
issubdtypeintegerrZ   min)rN   r]   r^   r@   arrminvalmaxval_limits         r;   r`   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypes   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)rZ   AssertionErrorastyperK   intp)rp   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)Nr0   downcast_intp_index)rM   getattrsetattr)rO   kwmodnameoldfuncbackuprw   funcmodulesrx   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   rw   rx   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=   )rb   NF)rK   rg   randomdefault_rng)	rr   r   rc   rw   assert_32bitr   rx   r`   ri   s	   ` ``  @@@r;   with_64bit_maxval_limitr   W   sy     xx| xx-	
 
	 		ii##D)	9	* "	'
@ r=   c                 p    t        | t        j                        st        |       r| S | j	                         S r?   )rJ   rK   r
   r/   toarray)rO   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 rightrb   selfmats     r;   __add__zBinopTester.__add__       $r=   c                      yr   rb   r   s     r;   __mul__zBinopTester.__mul__   r   r=   c                      yr   rb   r   s     r;   __sub__zBinopTester.__sub__   r   r=   c                      yNmatrix on the leftrb   r   s     r;   __radd__zBinopTester.__radd__       #r=   c                      yr   rb   r   s     r;   __rmul__zBinopTester.__rmul__   r   r=   c                      yr   rb   r   s     r;   __rsub__zBinopTester.__rsub__   r   r=   c                      yr   rb   r   s     r;   
__matmul__zBinopTester.__matmul__   r   r=   c                      yr   rb   r   s     r;   __rmatmul__zBinopTester.__rmatmul__   r   r=   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   rb   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   rb   r   s     r;   r   zBinopTester_with_shape.__add__   r   r=   c                      yr   rb   r   s     r;   r   zBinopTester_with_shape.__mul__   r   r=   c                      yr   rb   r   s     r;   r   zBinopTester_with_shape.__sub__   r   r=   c                      yr   rb   r   s     r;   r   zBinopTester_with_shape.__radd__   r   r=   c                      yr   rb   r   s     r;   r   zBinopTester_with_shape.__rmul__   r   r=   c                      yr   rb   r   s     r;   r   zBinopTester_with_shape.__rsub__   r   r=   c                      yr   rb   r   s     r;   r   z!BinopTester_with_shape.__matmul__   r   r=   c                      yr   rb   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   rb   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eqrb   r   others     r;   __eq__zComparisonTester.__eq__       r=   c                      y)Nnerb   r   s     r;   __ne__zComparisonTester.__ne__   r   r=   c                      y)Nltrb   r   s     r;   __lt__zComparisonTester.__lt__   r   r=   c                      y)Nlerb   r   s     r;   __le__zComparisonTester.__le__  r   r=   c                      y)Ngtrb   r   s     r;   __gt__zComparisonTester.__gt__  r   r=   c                      y)Ngerb   r   s     r;   __ge__zComparisonTester.__ge__  r   r=   N)	r   r   r   r   r   r   r   r   r   rb   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   r[   r@   rf      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper@   rK   formatru   r   r   rR   rS   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staticmethodr1   asdenser   r   r   rb   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 Zfe1jd                  j                  dO      dP        ZhdQ ZidR ZjdS ZkdT ZldU ZmdV ZndW ZodX ZpdY ZqdZ Zrd[ Zsd\ Ztd] Zud^ Zvy_)`_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   rf   )r   r   r   r   )r   rf   r   r   d)r   r   r   r   setr.   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesru   r   rK   r   r   rJ   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>.checkX  sL    %%e,E*dE2DNNQC5)*u--.r=   z%Cannot create a rank <= 2 DOK matrix.)rJ   TestDOKpytestskipr  r   r  r@   s   `  r;   	test_boolz_TestCommon.test_boolW  s=    	/ dG$KK?@(( 	E%L	r=   c                     t        ddgg      }| j                  |      }t        d      D ]  }||z   }||z   } t        ||j	                                y )NTFrW   )r   r   ranger   r   )r   r   r   _s       r;   test_bool_rolloverz_TestCommon.test_bool_rolloverd  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  rD   r   rK   nan)
r@   r   r   dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r;   r  z"_TestCommon.test_eq.<locals>.checkq  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_eqo  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  rD   r   rK   r.  )
r@   r   r   r/  r0  r1  r3  r2  r4  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r5  r9  r:  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 )Nr5  r9  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         ?      ?)rf   r   r   r   invalidr*  r+  r,  r)   r   r  r  r-  r   ru   complexr  r  r  r  rD   r   rK   rg   errstater.  r@   r   r   r/  r0  
datcomplexdatspcomplexr1  r3  r2  r4  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r5  r9  r:  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rD  rI  rL  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rP  r5  r9  r:  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   rE  )rf   r   r   rF  r*  r+  r,  r)   r   r  r  r-  r   ru   rJ  r  r  r  r  rD   r   rK   rg   rL  s               r;   r  z"_TestCommon.test_le.<locals>.check9     ((* /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r5  r9  r:  r   s   `  r;   test_lez_TestCommon.test_le8  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rW  rX  rL  s               r;   r  z"_TestCommon.test_ge.<locals>.checkq  rY  rZ  r5  r9  r:  r   s   `  r;   test_gez_TestCommon.test_gep  r\  r=   c                    t        | j                  d      j                         t        d             t        | j                  d      j                  d       t        | j                  d      j                         d       | j                  j                  dk7  r7t        | j                  d      j                  d      t        g d             y y )Nr   r   r   dia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k7  }|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)Nrb  )Nr   r   r   rF  rc  znot implemented .* formatmatchr   )	r   r   r@  rK   rg  r   r   r  NotImplementedError)r   axis_supportaxesrR   axexpecteds         r;   test_count_nonzeroz_TestCommon.test_count_nonzero  s    zz((E1'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   re  r   r   rF  rb  (1 diagonals) r6  (blocksize=1x1)  r   r2   < sparse  of dtype ''
	with  stored elements 
and shape >)r   r   r-   r  r@   rf  r   reprr   r   extrar$  fmt
sparse_clsrp  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   rb     r   )maxprintrW   )r  r   iF   )r   r@   r-  r  z'positional argument|unpack non-iterablerj  )r   rK   r   r   r  r   strsplitr   rf  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 )Nrx  re  ry  rf   rb  rz  r6  r{  r|  r   r2   r}  r~  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r   rf  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  r[   r   r   	complex64r   r   rf   )rK   r@   r   tocsctocsrtocoor   r   )
r   r   mytyperO   rT   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   re  r  )r   r   absr   r   r   rR   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   rK   aroundroundr   r   )r   decimalrR   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  rF  r   r   r   rf   r   r  r  rf   )r   r   rK   powerr   r   r  rl  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  re  r  )TFF)FFT)r   r   r   r   r  rl  __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   DrR   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   rf   r   r   rf   r   r   r   r   )r   r   rf   r   r   r   r  r   rf   r   r  krW   i)(   i?  r  r   r   )r  r   r   r  )rM   r   r   r   r   r#  r   diagonalr   rK   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   rf   r   r  r  r   )      	   rF  r   )offsetr   )rK   r   r   r#  r   trace)r   rR   rS   r  s       r;   
test_tracez_TestCommon.test_traceO  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  re  r  )r   r   r  )r   F))   r   )r   r  orderr   rW   r   r   r   r   r   r   r         r  rf   r   )r   rW   r   r   r   r   )r   r   r   r  r  r  rf   r   )r   r   ru  rf   r   r   )
not_an_argr   r  Tr-  zhas no setter|n't set attributerj  )r   r   r   r   r  r  r  r   r   r  AttributeErrorrl   )r   rA   r  srB   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   )rK   r   ro   r   r   r   r   r@  )rO   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   rf   r  r   r   r  rl   r)  z	{msg} {r}err_msg)r   rK   r   r   choicer#  randintr*  r+  filterwarningsWMSGr)   setdiagr   r   r   ro   r   )rO   rT   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	rd   )r  r  r   r   r  r  r   r  r   r   r  r  )rK   r   seedr   r   r   r   r   r  ro   r   )r   r  shapesr@   r  r  ksr  rO   rT   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   rf   r   r)  r  r  r   )r   r   r   )r   rf   rf   r  rF  r   r   r   )r  rf   r   rf   r  rf   r   r   r   r   r   r   )r   r   r   r   )r   rK   r'   r*  r+  r  r	  r)   r  r  r
  r   r  r   r   )r   r  m2rI   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   rR   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   rK   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 )
Nrd   r   r   rf   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)  overrc  r   r   rF  r   r   r   )
r	  r   rK   rK  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.)rK   r   r  r   randr   r   r   r  r#  r   )
r   dat_1dat_2dat_3dat_4dat_5r  r@   r   r7  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-  r.  zaxis out of rangerj  r   rc  r   r   zaxis must be an integer      ?z&do.*n.t match.*shape|wrong.*dimensionsr   rd  out)	rK   r   r   r   r  r  r5  r  meanr   rE  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-  r.  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y Nr   )r5  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                 `   t        ddgddgg      }| j                  D ]  }|j                  |      }| j                  |      }t	        j
                         5  t	        j                  dt               | j                  st        j                  |      }d d d        | j                  D ]H  }	 t        j                  d      5  |j                  |	      }d d d        t        j                  d
      5  |j                  |	      }|j                  |	      }t        ||       t        |j                   |j                          |j                  d|      }|j                  d|      }t        ||       t        |j                   |j                          |j                  d|      }|j                  d|      }t        ||       t        |j                   |j                          d d d        K  y # 1 sw Y   fxY w# 1 sw Y   1xY w# t        $ r Y vw xY w# 1 sw Y   xY w)N333333?ffffff?皙??r)  )categoryraise)allr   r2  r   rd  r@   r   )r   r  ru   r   r*  r+  r  PendingDeprecationWarningr  rK   r2   rK  r5  	Exceptionr   r   r@   )	r   base_datinput_dtyper   r   output_dtyper$  rL  rM  s	            r;   test_sum_dtype_pair_of_dtypesz)_TestCommon.test_sum_dtype_pair_of_dtypes7  s    3**& '  .. $	AK//+.CNN3'E((* )'';TU))))C.C)
 !% 3 3 A1 8GG,G78 [[h/ A!ggLg9G %			 =I#Iw7 '--@ "gg1LgAG %		q	 EI#Iw7 '--@ "gg1LgAG %		q	 EI#Iw7 '--@!A AA$	A) )8 8  
A AsC   =G9.HHH5C5H#9H	HH	H H #H-c                 p   | j                  ddgddgg      }t        | j                  rddgnddgg      }t        | j                  rddgndgdgg      }t        |j	                  t
              d       t        |j	                  dt
              |       t        |j	                  dt
              |       y )	NrR  rS  rT  rU  r   r   rY  r   )r   r   r  r   r5  int)r   r   correct_rest_correct_ress       r;    test_sum_dtype_fractional_to_intz,_TestCommon.test_sum_dtype_fractional_to_intc  s     c
* & ' d&8&8QF1vhG(:(:q!f!qc
KUYYSY)1-UYYASY1;?UYYASY1=Ar=   c                    | 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-  r.  r   rE  keepdimsrE  r   r   r   r   rd  rE  rg  rD  zoutput parameterrj  )
r  r   r   r2   r5  r   rK   r   r  r  r   keepr   r   dat_out	datsp_outs         r;   test_sum_outz_TestCommon.test_sum_outp  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-  r.  )r   r   rK   r5  r   r   r@   )r   r   r   rL  rM  s        r;   test_numpy_sumz_TestCommon.test_numpy_sum  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-  r.  r   rc  r   )
r   r   r/   r5  r  r
   rK   r2   rJ   rF  )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   rc  rd  rg  r   r   rF  r   r4  )	r   r   r   rF  r   r@   r   rK   r6  )r@   r   r   rm  r   s      r;   r  z$_TestCommon.test_mean.<locals>.check  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@   rm  s   `  @r;   	test_meanz_TestCommon.test_mean  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r@  )	r	  rK   r   r   r   r  r  rF  r  rG  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-  r.  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y rK  )rF  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=   rN  rO  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-  r.  r   rf  rh  ri  rj  r   rk  rD  z"output parameter.*wrong.*dimensionrj  )
r  r   r   r2   rF  r   rK   r   r  r  rl  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rq  c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y rs  )r   r   rK   rF  r   r   r@   )r   r   r   r  r  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   ra  r   r@   )      @              ?)r         @r  )r  r  r  r)  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr   r   linalgr4   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  r  r  r)  r  r  r  ra  r  r   )r   r*  r+  r  r)   r   r5   r   r   r   rK   r'   r  r  )r@   r  r  sMinvr   s       r;   r  z#_TestCommon.test_inv.<locals>.check8  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_inv7  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)  rx  r  )r   r  r   re  )r  r   r   )r         @r   r   r   )	r*  r+  r,  r   r   r   r   r   ru   r  s     r;   test_from_arrayz_TestCommon.test_from_arrayR  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   todenseru   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   ru   r  s     r;   test_from_listz_TestCommon.test_from_listn  s    $$& 	!!(N;1At~~a088:A>! A t~~a088:E!HEq088:E!HOOG<T	 	 	r  c                    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   ru   r   r  Ss      r;   test_from_sparsez_TestCommon.test_from_sparse|  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   rh  r  r  r  r  r  r        @)r   r  rJ   r  rK   r
   r2   r   r   r   flagsc_contiguousf_contiguousr   r   r@   rQ   r	  r   r@  r   r  ru   )
r   chkrE  rO   dense_dot_denser  rT   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   rh  r  .r  r  )r   r   r   r   r   r   r  r  r  rK   r   r   r@   r   r   r   r  ru   )r   r   r  rE  rO   r  r  rT   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   re  )TFr  FTc                     t        |       }t        |       }t        ||       t        ||u       d|j                  z  }||   }||    ||<   t        ||   ||   k7         |||<   y )N)r   )r|   r   r   r   )	attributerO   rT   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=   r8  r7  r6  )indicesindptrdatacoo)rowcolr  rb  )offsetsr  )r*  r+  r,  r   r   r   r.   ru   r   r@   r   r   r   )
r   r  r  rA   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  re  r  Fr  )r*  r+  r,  r   r   r   hasattrr  r  	writeabler   r  r  r.   ru   r   r@   )r   r  r  rA   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 Nrf   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  rK   r   r  r  )r   r   s     r;   test_rmul_scalar_type_errorz'_TestCommon.test_rmul_scalar_type_error5  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   rO   rT   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>.checkQ  sW    //%(C%%e,E
AAcFAAAq!aiik/2r=   r  r   s   `  r;   	test_raddz_TestCommon.test_raddP  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   rK   r   r   r   r@   r   r   rR   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  rK   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>.checkw  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_rsubv  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   r5  r#  r   )r@   r   r   r  sumSsumDr   s         r;   r  z$_TestCommon.test_add0.<locals>.check  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_add0  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  )rf   r  r  )r   r  r   )r   r  r   )r7  rb  r6  r8  y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r  )r   r   r   multiplyr   r   )
r   rR   rS   r$  Bspout_fmtr   r  CspDsps
             r;   test_elementwise_multiplyz%_TestCommon.test_elementwise_multiply  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   rf   r   )r  r   r   )r  r   rf   )r   r   r   r  r  r   r   N)r   rK   onesr@  r   r   r  r  r  r   r  r(   )r   rR   rS   r   r  Er  GHJKLr  r  EspFspHspHsppJspJsppKspr7  
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  rf   r   r,  )r   rF  r   r)  )divide)r  rH  )
rK   r.  r   r   r   r   r   r   r   rK  )r   rp  denomrR   rS   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   rf   r   )r   r   r  r   )r   r  r   r   )r   r   r  r  )r   rf   皙@r   r  r   r   r   r   r   r   rf   r   )r   r$  r  )r   r   r  r   r   r   r@   r  rl  __pow__r  rK   r  matrix_powerr  )r   rR   rS   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   rf   r   r  rf   r   r   r  )r   r   r   r   r   )r   r  r  s      r;   test_rmatvecz_TestCommon.test_rmatvec4  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   rf   r   r  r   r   r   r   r   r   )r   r   r(   r   r   r   rK   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   rf   r   rj  r  r4  r5  )rK   r   r   r  r   r  r   r   )r   rR   r$  s      r;   -test_star_vs_at_sign_for_sparray_and_spmatrixz9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrixF  s    HHqcA3_%nnQ%sRWWV_'<&E&E&GK%sUQC5\'9&B&B&DaHuaSz)5+;<uqcU|+UQC!qc?-CDrwwv.@r=   c                 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   rf   r   r   r   )r   r   r   r   rR   rS   s      r;   test_binop_custom_typez"_TestCommon.test_binop_custom_typeS  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   rf   r   rj  r   r   )r   r   r   r:  s      r;   !test_binop_custom_type_with_shapez-_TestCommon.test_binop_custom_type_with_shaped  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   rC  s     r;   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__s  s	    $r=   c                      || j                   z  S r?   rB  r   s     r;   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__v  s    t{{**r=   N)r   r   r   r   r   rb   r=   r;   Customr@  r  s    %+r=   rE  rf   r   r   )r   rD   r   r   r   )r   rE  rC  rR   r  A_scalarA_cs          r;   test_mul_custom_typez _TestCommon.test_mul_custom_typeq  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   rf   r   r   r   r   r   r   r   )r   r   r   r:  s      r;   test_comparisons_custom_typez(_TestCommon.test_comparisons_custom_type  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/  r0  rW   )r   r   r   r   r   )r   r  rC  actualrp  s        r;   test_dot_scalarz_TestCommon.test_dot_scalar  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/  r0  r   r   rf   r  r  )	r   r   r@  operatormatmulr   r   r  r  )r   r  rS   r  rP  s        r;   test_matmulz_TestCommon.test_matmul  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/  r0  r  )r  r   rf   r   )r  r   r  )r   r   r@  r   r   r   r   r2   r   rJ   r
   r  rK   r  r  r   r   r   
atleast_2d)r   r  r  rw  bad_vecsrA   s         r;   test_matvecz_TestCommon.test_matvec  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/  r0  r   r   rf   r  r  g333333?r   r  r  r   )r2   r   r   r   r   r  r  r  r   r  r   r#  r@  r  r  r   r  r   )r   rO   a2rT   aspbspcspr  wantr  fracrR   r  r   r  rS   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/  r0  r   rf   r   r  r  r   r  rf   )r   r   r2   r   rJ   r  r
   typer   r   r   )r   rO   rX  bsrT   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=   z3ignore:.*switching.*sparse array:DeprecationWarningc                    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   rf   r   r   )r6  r  r7  r8  rb  rE   lil              @)r   dense)r   r   r   r   asformatr   r   r   )r   rR   r  r   rO   rT   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  )r6  to)r   rf   r   r   )r   rf   r   r  r   r  	blocksize)r   r   r   r|   r   r   )	r   rA   rB   rR   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	        |j                  j                         |j                  j                                t	        t        |      j                         |j                  j                                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	                         |       t        t        |      j	                         |       t        |j                  |j                         y )Nr   r4  rn  )	r   r   r   r   r   mTr,   r   r@   )r@   r   r   r   rO   rT   r7  r   s         r;   r  z)_TestCommon.test_transpose.<locals>.check4  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqIuxx//115/6>>@!D!''*r=   r  r  r   r   rw  )r   rK   r   r   r   r   r   r   r@  rx  r,   r  r  r  r#  r   )r   r9  r:  r  r  r@   r   r7  s   `      @r;   test_transposez_TestCommon.test_transpose/  s
   "5>	+ v&2<<.668<<f6	8577??,eFm<588++-uww/@A+E2::<eggoo>OP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>.checkP  sQ    //%(C%%e,E ;DtS3Y/3;DtS3Y/r=   r  r   s   `  r;   test_add_densez_TestCommon.test_add_denseO  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   r}  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  re  )r   r   rf   )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)	NrC  r   scalar2r   rh  r   r)  zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rK   rm   complexfloatingr   ru   r`  r  r*  r+  r  r)   maximumminimumr   r   r   r@   )r@   dtype2btyperR   rS   max_smin_smax_dmin_dA_denseA_dense_cpxB_denser   s            r;   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:)rC  r  rh  r   )rK   r   r  r   r   r   r@   )r   r  r@   r  r  r  r  r  s   `    @@@r;   test_maximum_minimumz _TestCommon.test_maximum_minimumx  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  Frn  )	r   r   r-  r   	__class__r   r|   r   rU   )r   rR   toselfs      r;   	test_copyz_TestCommon.test_copy  sZ   JJ 	QVVX__ahh/Q[[[-44ahh?Q[[[.55qxx@QVVX%%'5Q[[[.668!))+FQ[[[/779199;G 4!((?+AE"a'(V&--qxx8V&..0!))+> 	+AFFHa889r=   c                     | j                  t        j                  d      j                  dd            }| j	                  |      }t        ||      D ]  \  }}t        |j                         |       ! y )Nr  r  rW   )r	  rK   r   r   r   zipr   r   )r   rS   rR   rA   rB   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  r4  r  r4  r  r  r   )r   r   rK   r  r   r   r   r   r  r  r  r   )r   r   rO   rT   r  r  r  r  rX  rY  rZ  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   rO   rT   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?re  r   zdoes not support dtyperj  )rK   r   float16r  r  r   ru   r   )r   rO   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   rH   itemsrJ   rK   r
   r"  r   )r   r  sploadedkeyrO  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)rE   rf  z%Unary ops not implemented for dok/lilr  r  r        4@)r  r  r   r   r|   rK   r   r   r   r   r   )r   ufuncrr  X0X2r   s        r;   r  z5_TestCommon.test_unary_ufunc_overrides.<locals>.check2	  s    v~ / 0zz  N2CDB%Eryy}44Q:S@AAqyy{#BqBrzz|R0r=   )sintanarcsinarctansinhtanharcsinharctanhrintr  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  rb   )r   r  r   s   `  r;   test_unary_ufunc_overridesz&_TestCommon.test_unary_ufunc_overrides1	  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  rf   r   r   r   r   r   r   r   r   rf   r   r   rf   r   rf   rf   ra  rx  )rf   r   r   re  )r  r8  ))r   rf   r  r  )rK   r   r   r   resizer   r   r  r   r  r  rl  
IndexError)r   r  r  	bad_shapes       r;   test_resizez_TestCommon.test_resizeF	  s   HHl""$ % NN1 D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)2)2)4 	5 	
199;)2)2)4 	5
 	
A199;!Q*+Q*+Q)1 	2 !((n"<HHQK:':JGSTU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)r8  r7  r  rb  rE   rf  )r   r   r  rD   r   NON_ARRAY_BACKED_FORMATSr   rU   r@   rK   r   r   ri  )r   rR   self_formatr   other_formatrS   s         r;   test_constructor1_basez"_TestCommon.test_constructor1_baseo	  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)wr   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>  rA  rQ  rT  r[  r_  rh  rq  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markslowr  r  r(  r*  r>  rH  rP  r_  rd  rp  rt  rx  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+  r1  r6  r8  r;  r=  rH  rJ  rM  rQ  rU  r]  rc  r  rj  rt  rz  r  r  r  r  r  r  r  r  r  r  r  r  rb   r=   r;   r  r  2  sm   @"KMMMMMMMG; ;.	1"H#J4;z:x6p6pY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F(" *AXBE65?&P(" F67A>6N22'6R#6J(LT="		
,02<08=t!DF3B>
;A3"32 #>0$X>64p+ [[ UV( W(2
D @6,D\:0)84t924*';R7r=   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 shapesrj  zdimension mismatchunsupported operand)rK   r  r   r-  r   r  r  r  r@  r   r   r  )r   rO   rT   rA   rB   s        r;   test_inplace_densez)_TestInplaceArithmetic.test_inplace_dense	  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)castingrf   r  	r  r  rK   can_castra  r-  r   r   r  r@   r   r   rO   rT   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  rK   r  r@   ra  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  rj  )r   rK   r'   r   r   r  r  r  )r   rO   rT   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  rb   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 )Nrx  r  r   r   r   rf   r   re  r   r3  rB  rs  )r  r   ry  )r  r   r  )
r   r   r   r#  r   r`  r  r  r  __getitem__)	r@   r  rR   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.   rK   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   rf   r   r4  r  r  r  r   r   r  r   rF  r  )r   r  r   r  )r   r   r  r   )rf   r   r  r   ))r   r  )r   r  r5  r  rt  g     ^@r  )rg  )r   r*  r+  r  r	  r)   r`  rK   bool_r   r   r  r  __setitem__r   r  rm   r  r  )r@   scalar_containerrR   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!   rK   r   rA   s    r;   <lambda>z-_TestGetSet.test_setelement.<locals>.<lambda>D
  s    i1#0 r=   c                     | S r?   rb   r	  s    r;   r
  z-_TestGetSet.test_setelement.<locals>.<lambda>D
  s    a r=   )rK   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   rW   r   r)  r   )r   r  )r   r*  r+  r  r	  r)   r   r@   rR   r   s     r;   r  z9_TestGetSet.test_negative_index_assignment.<locals>.checkM
  sb    we4A((* ''$8OP% 51% s   %A&&A/r  r   s   `  r;   test_negative_index_assignmentz*_TestGetSet.test_negative_index_assignmentJ
  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  rW   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   r5  )r  r   nitemsr7   rR   r  r  r   s        r;   	_test_setz3_TestGetSet.test_scalar_assign_2.<locals>._test_setZ
  s    EQEVJ/C1v&A((* ''$8OP!Q$  =!Q$C8	 s   'BBrf   r   r   r  r  r   rF  r   )r   r   r  r  r   r  r  s   `   @@r;   test_scalar_assign_2z _TestGetSet.test_scalar_assign_2W
  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   r4  r  r5  r  
r   rK   r   r*  r+  r  r	  r)   r   r   r   s       r;   test_index_scalar_assignz$_TestGetSet.test_index_scalar_assignh
  s    NN6"HHV$$& 	##Hd4KLV ###	 	199;*	 	s   8BB N)r   r   r   r  r  r  r  r  rb   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   r  r)  r  )rK   r   r  r   rJ  r8  r#  r   r   r   r*  r+  r  r)   r3   solver   )r   r  rR   rA   rB   r  r  s          r;   
test_solvez_TestSolve.test_solvev
  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$  rb   r=   r;   r!  r!  t
  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   rW   r   r   r   r  )r   r   rK   r   r@   r[   r   r   r   s    r;   test_dtype_preservationz$_TestSlicing.test_dtype_preservation
  s    T^^F"((^;AacEBHH"((ST^^F"((^;AacEBHH"((ST^^F"**^=a!eDJJBJJWT^^F"**^=a!eDJJBJJWr=   c                    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   rf   rK   r   r[   r   r   r   r   r@   r   dtrR   s      r;   #test_dtype_preservation_empty_slicez0_TestSlicing.test_dtype_preservation_empty_slice
  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  rW   r,  r   r   rf   r   rf   r   r  r   r   re  r  r   r  r   r   rF     r   r  )r	  r   r   r   r  r   r   r  r  r  slice)
r   rS   rR   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 )Nr0  r  rW   r,  r   r   rf   r1  r2  re  r  r   r  r3  rF  r4  r   r  )r   r   r   r  r   r   r   r  r  r  r5  )
r   rS   rR   c0c1c2r   r  r  r  s
             r;   test_get_vert_slicez _TestSlicing.test_get_vert_slice
  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 )Nr0  r  rW   rf   r   r   r   r   r  r3  re  r  )r   r   r   r   r   r   )r   rS   rR   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      rf   r  r   feature not implemented)	rK   r   r8  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  rW   r  r  r  r   rF  rf   r   r  r  r   r  )	r	  r   r   r   r   r   r   r5  r   )r   rS   rR   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=   rf   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  rW   rf   r   r   r  r  r  r   r  rF  r   r  r  c                     |    }|    }|j                   dk(  rt        ||t        |              y |j                  dk(  r|j                  dk(  ry t	        |j                         |t        |              y Nrb   r   )r   r   r  rl   r   r   )rO   rA   rB   rR   rS   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 rJ  )
rJ   rK   r
   ra  r   r   r  rl   r   r   )rO   rT   aibirA   rB   rR   rS   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   rf   r  r  r   rF  r  i)r	  r   r   r   rK   s_r   r   	enumerate	itertoolsproductrM   r5  )r   rP  slicesrK  r   rO   rO  r  rT   extra_slicesr  rR   rS   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  rW   r  r   r   rf   r  )Nr   rf   Nr3  )Nr   r(  )r   N)rW   r   r   rf   r   )rf   )Nr   rf   )r   )r   Nrf   )r   rf   N)r	  r   r   r   r   r   r  r   rS   rR   s      r;   test_None_slicingz_TestSlicing.test_None_slicingQ  s   LL++Ab12NN1w||q   q!A#$$...!"((F222 z7***z7***q!}""g---D!}""g---At}""g---qsA$$$!Q,(=(=GGGGGG1dA$$!A#tQ,(=(=GGGGGG1a$$!A#q$,(=(=GGGGGGq!A#$$$1Q3,(=(=GGGGGGD!A#$$!T1Q3,(=(=GGGGGGAaC$$!QqS$,(=(=GGGGGG QqS!V9??a!Qioo======Q!V9??a1Q3ioo======Z=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEQ!V9??a1Q3ioo??????QqS!V9??a!Qioo??????Z=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGr=   c                 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  rW   .).)r  .).r  ).r  zindex .5. out of rangerj  )r  .zindex .10. out of range).rW   r   rf   )r   r   .)r   .r   )r	  r   r   r   r   r   r  r   r  r@  r   r   rT   rO   s      r;   test_ellipsis_slicingz"_TestSlicing.test_ellipsis_slicingu  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  rW   )TFTFTF.shape mismatchrj  )r	  r   r   r   r   r   r  r  )r   numpy_arO   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  rW   r  .rf   r   )r	  r   r   r   r   r   r\  s      r;   test_ellipsis_fancy_slicingz(_TestSlicing.test_ellipsis_fancy_slicing  s   LL++Ar23NN11aS#X;..0!QCH+>1aVS[>113Q1vs{^D1S1#X;..0!C!H+>1S1a&[>113QsQF{^D1aS!S[>113QsAs{^D1aVQ^,4461a&!S.8IJ1aS#q[>113QsC{^D1S1#q[>113QsQC{^D71aVS1a&%8#9:Aq!fcAq6>Q<RS71S1a&1a&%8#9:AcAq6Aq6>Q<RSr=   c                 ,   | 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   rf   z(an index can only have a single ellipsisrj  )..).r   .)r   r   r   r  r   r  r   rO   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.  r9  r>  r@  rE  rG  r  r  	fail_slowrV  rZ  r]  re  rg  rj  rb   r=   r;   r&  r&  
  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)   rK   r   r   r   )r  r   r7   rR   rS   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$rf   r   rW   r  r  rF  )r5  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)Nry  r)  rf   r  r  r  r   rX  rW   r5  r   r   r   )r   r*  r+  r  r	  r)   r   r   rK   r   r@  rY  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)Nry  rW   r   r   )r   r   r   )r   r  r   re  r   r   r  r)  r  r  r   r  r  rX  rf   )
r   r   r*  r+  r  r	  r)   r   r   r  )r   rS   rp  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)Nry  r)  r  r  r   r  r  rX  rW   r5  rx  r.  r  rv  )r   r*  r+  r  r	  r)   r  rK   r'   r   r   r   )r   rS   rp  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%        t0        |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  rf   r   r   r  r   r  rF  r  r   r  r  r)  rW     r  d   r  re  r  )r  r   r   r   rf   r  )r   r   r   r  )r   r   r   r  rK   rP  r   r*  r+  r  r	  r)   rQ  r   r   r  r#  r   r  r  r  listr5  r-  r  )	r   rR   rS   rP  rT  r   rO   r  rT   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   rf   r   r   r   r  )r   rK   r  r   r   r:  s      r;   test_assign_emptyz$_TestSlicingAssign.test_assign_emptyR  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 )Nra  r   r   r   r   re  )r   rK   r  r   r   r   r   rR   rA   s      r;   test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_sliceZ  sV    NN2776?+HHQK!Q$!Q$199;Iy(IJr=   N)r   r   r   ro  rr  rt  rx  rz  r  r  r  rb   r=   r;   rm  rm    s.    +"G,;&2+(Z@Kr=   rm  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_indexg  s     88RXXrzz2::> 	-BvR0A1uen,-33R80!34::B?1b5,2q5,	-r=   c                 \   | j                  t        j                  ddg            }t        t        |j
                  d      j                  d       t        t        |j
                  d      j                  d       g dg df}t        t        |j
                  |      j                  d       y )Nr  foozIndex dimensionrf   r  r  r  r_  )r   rK   r   r  r  r  rk  )r   rR   idxs      r;   test_bad_indexz!_TestFancyIndexing.test_bad_indexq  s{    NN288QF+,j!--7==>OPj!--<BBCTU,'j!--5;;<LMr=   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  rW   r   r   r   rf   r  )rf   r  r   r   r  r  r  r  r  rF  r   r  z"Only 1D or 2D|>2D is not supportedrj  r   )r	  r   r   r   r   r   r   r   r  r   r  r5  r   rK   ra  )r   rS   rR   r  r  s        r;   test_fancy_indexingz&_TestFancyIndexing.test_fancy_indexingx  s   LL++Ab12NN1 	QsV^^%q!v.Q1vY&&(!QF)4 	Qq1#vY&&(!AsF)4Qq1a&y\))+Qq1a&y\:QrAr7{^++-qaW~>QuRy1b')*224aQGnEQr5!R>)*224aQGnEQuRy%B.0199;QrAr7{^L 	Qq-'(002Aa6F4GHQqsQCx[((*AacA3hK8QqsRH}%--/1Q3R=1ABQqsE2r(O+,446!A#Bx-8HI 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w{^++-q!R"~>QuaW~r)*224aBnEQ2wb	)*224aBnEQuaW~uRy0199;Q2w{^L 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w"}%--/Ar7AbD=1ABQuaW~qt+,4461b'1R4-8HI 	WQsQCx[)1aS1#X;7WQ1v1v~./Aq6Aq6>1BCWQBx!R012Ar2hB6G4HIAeRHo2w./0!RHq"g4E2F	
 	Ar2hq"g./0!RHq"g4E2F	
 	AeRHouaW~567B8aW;L9M	

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

 	a1a&kNQF8Q;'//11Q!Q[>Aq6(A+3N	
 	a2r(mq"gY\*224aRH:6FByRS|6T	
 88u2A2Ax<002AbqbAq6(lODQF8RaR<002A1vhlODz1UV  "1"1vh, 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 )Nrd   r  r   r  r  r   r  )rK   r   r  r	  r8  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   rf   z(bool index .* has shape .* instead of .*rj  )r	  r   r   r   rK   r  r  rR  rS  r5  rJ   r  r   r  )r   r  r  rS   rR   row_long	row_shortcol_long	col_shortrk  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 )Nrd   r  r  rW   r   rf   r  r   r  r  )TFTTF)
FTTFTFFFFF)r   r4  Tr  )r   r   r   )rK   r   r  r	  r   r   r   r   r  r  r   r   r   r  r  r  r  )	r   rS   rR   r  r  rr  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 )Nrd   r  r  rW   r   rf   r  r  r   r  )r  r4  )r   rW   r   )rK   r   r  r	  r   r   r   r   r  r  r  r   r   r  r  r  r  )	r   rS   rR   rr  XspZrs  ZspYsps	            r;   "test_fancy_indexing_sparse_booleanz5_TestFancyIndexing.test_fancy_indexing_sparse_booleanH  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 )Nrx  r.  r   r   )r   r   rK   ravelr5  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  rf   )r   r   r  r  r  rK   r   s     r;   test_fancy_indexing_seq_assignz1_TestFancyIndexing.test_fancy_indexing_seq_assignd  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   rf   r   r)  )	r   r   r*  r+  r  r	  r)   r   r   r   s     r;   test_fancy_indexing_2d_assignz0_TestFancyIndexing.test_fancy_indexing_2d_assignh  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  rW   r   r   rf   r   r   FFFFFr   r   r   rf   r   r  	r	  r   r   r   rK   r   r   r   ra  r   rS   rR   r  r  s        r;   test_fancy_indexing_emptyz,_TestFancyIndexing.test_fancy_indexing_emptyp  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   r  r  r  r  r  r  r  r  r  r  r  rb   r=   r;   r  r  b  sF    -N~=@<4,G@I.O
L<0r=   r  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   )rr  r  s     r;   check_remains_sortedr    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  r  rf   r  )r   rK   r   r  r  r  r  r  r  s     r;   test_bad_index_assignz._TestFancyIndexingAssign.test_bad_index_assign  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	  rK   r   r*  r+  r  r	  r)   r  r   r   r  r   rR   rS   r  r  r   s       r;   _test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_slice  s    1v&ARXXq!f-.A((*  ''$8OP!Q$)!,  AadG  
 &aiik15      s$   2C B4	C 4B=	9C  C	r  rW   r  r   r  rF  rf   )re  r~  )r5  rK   r   r   r  r  r   r  r  s   `   @@r;   test_fancy_indexing_setz0_TestFancyIndexingAssign.test_fancy_indexing_set  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   rf   r  r  r  )	r   r*  r+  r  r	  r)   r`  r   r5  r  s     r;   r  zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.check  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_dtypes  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)Nry  r   r  r,  r)  r   r   rf   r  rW   r  re  )r   rW   r  r  ra  r  r  )r  r,  r   )r   r'   r   r*  r+  r  r	  r)   r  r@  r   r   r	  rK   r   r   r5  )r   rR   rS   i0i1i2r   s          r;   test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignment  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  rW   r   r   rf   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  rb   r=   r;   r  r    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   rf   r   r   r  rf   r  r  r  r   r   rf   r   r   rd   r  r  r  r   )rK   r   r   r  r	  r8  r   r   rM   r   r   r  r  r  r5  )
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  rb   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
Nrd   r  r  rf   r   r  r  r  r  )rK   r   r  r	  r8  r   r   r  r   r   r  r  r  )	r   r  r  rr  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	  rK   r   r   r   r  s       r;   r  zR_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_sliceK  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   rf   r   r   r  r  r   rf   r  )r   r  r   )r  r   rf   )rK   r   r  s   `   @@r;    test_fancy_indexing_multidim_setz9_TestFancyMultidimAssign.test_fancy_indexing_multidim_setH  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  )rK   r   r  r	  r8  r   r   r   r  r  r  )r   r  r  rr  r  r  r  iir  r   jjr  r   s                r;   test_fancy_assign_listz/_TestFancyMultidimAssign.test_fancy_assign_listY  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 )Nrd   r  r  )r   rf   r   r   r  rf   )r  r   r   rf   r   r   )r   rf   r   r  r  r   r  )rK   r   r  r	  r8  r   r   r  r  r  r5  )r   r  r  r  r  r  r  r  r  C1C2s              r;   test_fancy_assign_slicez0_TestFancyMultidimAssign.test_fancy_assign_slicev  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  rb   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      r[   )r   r  r   ru   r  r   )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r;   __arith_initz_TestArithmetic.__arith_init  s    /9302 4=> .9/57 9EF 4;579 ;DE 	CF??73BsF;CHHRK//8CHHECHHRK//8CHHEs#s#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)  rG  r  )_TestArithmetic__arith_initr   r   r.   rK   rK  ru   r   rm   r  r  r   r@   r   r  r  r  r  rA   rR   r$  rB   rS   r  D1S1s                r;   test_add_subz_TestArithmetic.test_add_sub  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)  rG  g+=)atol)r  r   r@  r   r.   rK   rK  ru   r   rm   r  r  r   r  rZ   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  rk  r  r  rb   r=   r;   r  r    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   rW   r   Texplicitr3  rf   r  r   rW   rW   r   )rK   r   r   r[   rg   r   r   r   r   r   ro   rZ   r@   r   r  r  r  )r   r@   r  rr  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  rW   r   r   r  ra  r   r  rF  rc  r{  Trd  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   r4  )rW   r  r	  Fr
  )r  rK   r   r   r   r   rZ   r   ro   r   r	  anyr  r   r   r  rR  rS  r  r  )r   rm  r  rr  	axes_evenaxes_oddrd  rp  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 rv  )r   r   r  r
   rK   r2   r*   r+   r/   ro   rJ   rZ   nanminnanmaxargminargmax)r   r   r   rw  spmatrix_or_sparrays        r;   test_minmax_container_typez&_TestMinMax.test_minmax_container_type  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  rW   r   r   r   r  ra  r   r  r_  )r   r  r4  rc  )rF  r   r   r   )r	  rK   r   r   r  r.  r   r$  r6  r#  r   r   rJ   r  )	r   r  rr  X_nan_maximumX_nan_minimumrn  rd  X_nan_maximaX_nan_minimas	            r;   test_nanminmaxz_TestMinMax.test_nanminmax  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-  r.  )ro   rZ   r   rc  rC  r   rD  r4  )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-  r.  )
scipy.sparser5  r   r   rJ   _minmax_mixinr   rK   ro   rZ   )r   r5  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   r4  )r   r  rf   r   )r   r   r   rF  )r   rF  r  r  r  )r   rf   r   r   r  r   r  r  )r  r  r   )r  r  rW   )r   r  r  rc  r   Tr  rf   r  r  Fr  zCannot applyrj  r  r4  r4  )r   r   r   r   )r   rf   rf   rf   )r   rf   r   r   r   )r   r   r   r   r   r  r   r  r  )r6  r5  rK   r   r   r	  r   rJ   r7  r   r&  r%  r  rR  rS  r   r  r   r  r  r   rf  r   r   )r   r5  r  D2D3D4D5r  r   D6D7	explicitsrd  r   rp  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.  r2  r8  rA  rb   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   rf   r   r  r/  r  rc  r   rF  r   )r   ru   r  r   rK   r[   rg   r  rg  getnnzr   r5  r<   r@   r  r  )r   r   bool_datr   accepted_return_dtypesrE  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   rH  rb   r=   r;   rC  rC  :  s    2r=   rC  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)NrC  )rl  r  r  r  r  r  r  )rO   r~   fcs     r;   r   z6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper`  sF    Aq<B<'+Y
"N4 A ++&?@@As    4?)r   r   )rL  r   s   ` r;   wrapz%_possibly_unimplemented.<locals>.wrap_  s'    __R A !A Nr=   test_NotImplemented)dictrH   r  
startswithr`  r   	__bases__)r  requirerM  new_dictr   r   s         r;   _possibly_unimplementedrU  W  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.
    rN  zTest class z overloads test z defined in TestBase)r  rU  r  r!  r  r  r&  rm  r  r  r  r  r  rC  rH   rQ  getr  r   r`  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr  r   old_clss                 r;   sparse_test_classre  s  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
  rK   rX  r  r  s      r;   _test_setdiag_sortedz%_CompressedMixin._test_setdiag_sorted  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   rf   r   r   r  r  r   rK   r   c_r  ri  )r   r  valsdiagsN_newr  r  s          r;   test_setdiag_noconvertz'_CompressedMixin.test_setdiag_noconvert  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 )Nrk  r   rl  r  r  r  rm  rn  )r   r  rp  rq  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   ri  rs  ru  rb   r=   r;   rg  rg    s    	),",r=   rg  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  argsrC   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   rf   r  r%  r   r8  )r   r  r   r  r   r  r  r   rf  r   r   r   rT   rY  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   r  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   rf   r   r  r  r.  r%  )r   r  r   r  r   r  r  r   r  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rf   r   r   r   r   r   r   r   rf   r   rf   r   r   r   r   r   r   rf   rf   rf   rf   r         @g      $@r        "@r  r  g      &@r         @      @r  ry  r  r  r              r   r   r   r   r   r   r   r   rf   rf   r   r   r   r   r   rf   )
r   r	   r  r   r   r   r   rK   uint64rf  )r   r  r  r  r%  r8  rh  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   rf   r  r  )r   r  r   r   r   r  r  r  r8  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   rK   rm   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   rf   r   r   r   rf   r   r   rf   r  r   ra  rm  r,  r  )r  r   r   r  )r   r   rK   rg   r  r@   r  r[   r   r  r  r   r   )r   r  r  ptrrO   rT   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   r}  r   rf   r   r  r   )r   rK   rY   r[   rZ   r   rg   r  r   r  r@   r  r   r   )r   r  larger  r  rO   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  rf   r   r  r  r   r   r  rf   rW   rm  r   rf   r  r  r  )r   r   r  r-  r  r   r  r   r   r  r  r  rX  rY  s         r;   test_sort_indiceszTestCSR.test_sort_indices6  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   rf   r   r   r   r   rf   r   r  r  r   r  r  r   r   r  r  rm  r   r  )r   r  r-  eliminate_zerosr   rf  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  rK   r   r   r   r  r   r|   r   r   r  r  r   r   rr  r  r  s       r;   test_ufuncszTestCSR.test_ufuncsK      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  rm  r   r  r   r  r  rf   r  r   rf   r   )r   r   r  r   r   r  s         r;   test_unsorted_arithmeticz TestCSR.test_unsorted_arithmeticW      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   rf   r   r  rd   r  r  
rK   r   r   r  r	  r8  r   r(   r   r   r   r  r  r  r  r  s         r;   test_fancy_indexing_broadcastz%TestCSR.test_fancy_indexing_broadcastb      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   rf   TFN)rK   r   r  r-  r   r  rJ   r  r  r   r  )r   sorted_indsunsorted_indsr  r  r  s         r;   test_has_sorted_indiceszTestCSR.test_has_sorted_indicesp  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_duplicatesrf   r   r   TF)r   r   r   r   ra  r)  r4  Nr  r   r  )rK   r   r  r   has_canonical_formatr-  rJ   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_format  s    !rxx}bhh1v6FG((Aq6*BHHaV,<bhh1v>NO|,T1112~.335UA223!00$777 	
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 )Nrf   r   r   r   rm  r           r  )rK   r   r[   r  r   r  r@   rg   r   r  r  rp  rO   rT   r%  r  r  r  r  rA   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   rf   r   )r  rf  r  r   rO   rT   s      r;   test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zeros  sZ     	{+	{+A{{azz!}  A%%%r=   N)r   r   r   r  r   rK   r  int_r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rb   r=   r;   rw  rw    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58B(H0&r=   rw  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ry  )r*  r+  r  r	  r)   r   rz  s      r;   r   zTestCSRMatrix.spcreator  C    $$& 	/##Hd4KLt.v.	/ 	/ 	/r}  Nr   r   r   r  r   rb   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   rK   r   rJ   r   
__origin____args__rb  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ry  )r*  r+  r  r	  r)   r    rz  s      r;   r   zTestCSC.spcreator  r|  r}  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   rf   r   r   r  )r   rf   r   r   )r   rf   r   rf   r  r  r7  )r   r  r   r  r   r  r  r   rf  r   r   r  s      r;   r  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 )Nr  r  r  rf   r  rf   )r   r   r   r   r   r   r   )r   r  r   r  r   r  r  r  s      r;   r  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   rf   r  r,  )r   r  r   r  r   r  r  r  s      r;   r  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 )Nr  r  r  ry  r  r  r   r  r  r  rf   )r   r	   r  r   r   r   r   rf  )r   r  r  r  r%  r7  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  r7  s        r;   r  zTestCSC.test_constructor54  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   rK   rm   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  rW   rf   rm  r   r  )r   r  r-  r  r   rf  r  r   r  s         r;   r  zTestCSC.test_eliminate_zerosE  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  rm  r  )r   r   r  r-  r  r   r  r   )r   r  r  r  rX  rY  s         r;   r  zTestCSC.test_sort_indicesP  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  rK   r   r   r   r  r   r|   r   r   r  r  r   r  s       r;   r  zTestCSC.test_ufuncsZ  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  rm  r   r  r  )r   r   r  r   r   r  s         r;   r  z TestCSC.test_unsorted_arithmeticf  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_broadcastq  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 )
Nrf   r   r   )r  r   rm  )r  r   r  r  r  )	rK   r   r[   r  r  r   r  r@   rg   r  s               r;   r  zTestCSC.test_scalar_idx_dtype  r  r=   N)r   r   r   r  r   rK   r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  rb   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ry  )r*  r+  r  r	  r)   r   rz  s      r;   r   zTestCSCMatrix.spcreator  r  r}  Nr  rb   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)rW   r  rW   rB  r  r  r   )r  r@  r   r   r   )r   rR   r  r  s       r;   	test_multzTestDOK.test_mult  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  r4  r  r  rW   r   r  r  )r   r   r   r   r:  s      r;   test_add_nonzerozTestDOK.test_add_nonzero  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  r4  r  r  r  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   rX  rf   r  r   rj  r  r  r  ry  r   r_  )	r  r   r   r   r  r   r   r   r  )r   r  r  rO   r7  rT   r8  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  rK   r   r   )r   rT   rR   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 )Nra  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   rK   r  r   r   r  r  r  r  r  r  r  rb   r=   r;   r  r    s>    I77BJJ6K5
+;<>%*Br=   r  )r`  ra  c                       e Zd ZeZy)TestDOKMatrixN)r   r   r   r   r   rb   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rW   rW   rW   rB  y              4@r  r   ppc64le)
r   rK   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 )Nra  rf   r  r  r   )r  r   )r   rA   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   rf   r   r2  r.  r   )addsubmul__i__rA  r   r   )皙?r*  r*  r   )	r  r  r-  r|   r   r   rK   r@   r	  )r   rR   rS   r  opr   rp  rb  s           r;   test_inplace_opszTestLIL.test_inplace_ops5  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   rQ  r   r   r   )r   row_datarS   r  r  s        r;   test_lil_iterationzTestLIL.test_lil_iterationI  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  rW   rB  r  r  r  )r  r   r  )r   r  r  )r  r  )r  r  r   r   )r   rS   r   r  s       r;   test_lil_from_csrzTestLIL.test_lil_from_csrO  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 )NrB  r  r  rf   r   )r	  r   r   r  r   r   r   )r   r  rR   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 )Nry  r   r  rf   r3  r   r  r  rj  r4  r  rx  re  r   r   r  )r   r  r   )r  r   r  r   )r   lr  s      r;   test_point_wise_multiplyz TestLIL.test_point_wise_multiplyb  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r=   c                 h    | j                  t        j                  d            }|dz  }d|dd d f<   y )Nra  r  r   )r  rK   r  ri  s     r;   test_lil_multiply_removalz!TestLIL.test_lil_multiply_removaly  s0    rwwv/	R!Q$r=   N)r   r   r   r$   r   rK   r  r   r   r  r  r   r"  r,  r0  r2  r4  r8  r:  rb   r=   r;   r  r    sN    I77BJJ6KQ!?1(R
5/).r=   r  )r`  c                       e Zd ZeZy)TestLILMatrixN)r   r   r   r   r   rb   r=   r;   r<  r<    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 )Nr  r  r  ry  r  r  r   r  r   r   r   )r   r  r   r   r   r   rK   r  )r   r  r  r  r  rh  s         r;   r  zBaseTestCOO.test_constructor1  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5#++-0r=   c                     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   rf   rf   rf   rf   r   r   rf   rf   )
r   rf   r   rf   r   r   r   r   r   rf   )
rf   r  r  r  r  r   r   rf   r   r  ra  )r  r   r   r6  )r  r  r   )r   r  r   r   )r   r  r  r  r  r   s         r;   r  zBaseTestCOO.test_constructor2  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 )Nry  )r  r   r   r  r  r  r   r   r   r  s     r;   r  zBaseTestCOO.test_constructor3  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 interpretedrj  )r   r4     !   r%  r  r  r  rm  )
r   r  r   r   r  r   r  r   r  r  )r   r   r  rp  s       r;   r  zBaseTestCOO.test_constructor4  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@   rK   r   )r   r  r  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?   rb   r   s    r;   r  zBaseTestCOO.test_iterator      r=   c                     ddgg}| j                  |      j                         }t        |j                         |       y rk   )r  todiar   r   )r   r   rb  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 )Nry  r   rf   r   r   )r  r  r   r   r  r  r  rB  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 )Nr  r  r  )r  r  r   r   )r   r  rE   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 )Nr  r  r  rf   )r  r  r   rf  r  )r   r  r8  r7  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  rf   r   r   Fr  N)r  r   r  rK   r   r  rf  )r   rR   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  rm  r   )	r   r  r-  r  r   r  rX  r   r   )r   r  r  r  rX  rY  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  rK   rQ   )r   rp   	new_shaperA   rB   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- r|  )-   )r`  r_  r   r  r   r  )r  r   r   rf  )r   mat1mat2s      r;   test_large_dimensions_reshapez)BaseTestCOO.test_large_dimensions_reshape0  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr=   N)r   r   r   rK   r  r   r   r  r  r  r  r  rH  r  r  xfailr  rO  rQ  rS  rU  r  r  r]  rc  rb   r=   r;   r>  r>    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   rb   r=   r;   rf  rf  ;  s	     Ir=   rf  )rY  rZ  r[  r\  r]  c                       e Zd ZeZy)TestCOOMatrixN)r   r   r   r   r   rb   r=   r;   rh  rh  A  s	    
 Ir=   rh  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#   rK   r   r"  ra  rJ   r   r  r  r  s    r;   test_sparray_subscriptablerj  M  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   rf   r   r  )r   rf   r   r   )r   r   r   r  r  r   r   rc  r   r   rf   r  rm  )r   rK   repeatr   r  r   )r   r  r  r  s       r;   r  zTestDIA.test_constructor1_  st    <! " xx$++A1+5((8$T''wv'FNNPRSTr=   FzDIA does not have a __getitem__rI  c                      y r?   rb   r   s    r;   r  zTestDIA.test_iteratorh  rL  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   ri  rf   r  r  )	r  rK   r'   r   r  r@   r[   r
  rg   r   r  s     r;   test_setdiag_dtypezTestDIA.test_setdiag_dtypel  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)rf   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   rf   r   r   rF  r  r  z)overfilled shorter-diagonal, out of orderrE  )r  r   r     z(overfilled longer-diagonal, out of order)rK   r   r   )r   d1d3s      r;   	ill_caseszTestDIA.ill_casesx  s   
 cU[bT11v1v.*,aS11v1v.>@aS11v1v.79bT11v1v.79bT11v1v.57aS11v1v.57aS11v1v.68bT11v1v.68tQ!Q!Q 0 a&A3QFQF#3!#1e$,,V4)aVaV$<> 1i(008)aVb!W%;=1> 	>r=   c                     | j                         D ][  \  }}}}}dD ]N  }|| j                  |      }n| j                  ||f|      }d|v rd}|j                         |k(  rFJ d|z           ] y )Nr  r  r  rm  r   case: )rx  r  _getnnz)r   r  ofsetsrf  refcaser   rR   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?   rb   r   s    r;   rH  zTestDIA.test_getnnz_axis  rL  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 )Nrz  rm  r   r   r{  r  )	rx  r  r  rK   r   rg  rf  r   r   )r   r  r}  r$  r  r  r   rR   rS   r~  rf  s              r;   
test_tocsrzTestDIA.test_tocsr  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   r_  rm  )r  r   r   r  r  )r   r  rp  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   rf   r   r  r   )
r  r  rK   ravel_multi_indexr  r  r   rX  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   rc  rn  r   r  rm  )rK   r   ro  r[   r   r%   r  r  r@   r  r  r  )r   r  r  rb  r  r8  r7  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   rf   r   )r   r  rJ   r   r   r   rR   rS   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   rf   r   r8  )r   r  rJ   r   r   ri  r  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   rf   r   r  r   r   r  )r  rJ   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  r4  r  ru  r  r  r  r   r   r  )rF  r   r   r   rf   )r  r  r  )r  r  r  r   rF  r  )r  r  r  )r  r  r  rf   r  )      8@g     A@r  )r        ,@      ;@)r  r  r  )r  r  r  )r   r  r  r   r   rJ   r  )r   rR   rS   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   rK   r  r   r   r  r  r  r  rd  r  r   rs  rx  r  r  rH  r  r  r  r  r  r  r  r  rb   r=   r;   rl  rl  Y  s     I77BJJ6KU [[5)JK L Q	0  	0#>J	; [[56 7N :9-19&	>*7r=   rl  )rY  rZ  r[  r\  r]  r`  ra  c                       e Zd ZeZy)TestDIAMatrixN)r   r   r   r   r   rb   r=   r;   r  r  1  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   rf   rf   r  )r   rf   rf   r   )r  rf   r   r,  rm  r   r  )r   r   rW   r   )r   r  r  )r  r   r  rf   )r   r  rW   )r  r   rB  r   r#  r  rl  r   r  rm  )r   r   r   r  r   r   )r   r  r  r  rR   r$  s         r;   r  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)r3  r  r(  )rW   r  )r   r  rX  )r  r   r  ro  r  r#  r  rl  r,  rm  r  rm  r3  r  )rf   r  )r   r  rD  )r   r   r  r   r   )r   r   rR   s      r;   r  zTestBSR.test_constructor2W  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   rf   r   r  ro  )r   r   r  r   )r   argrR   s      r;   r  zTestBSR.test_constructor3o  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)rp  r-  )rK   r  r   r   r[   r   r  )r   r  r  r  r  s        r;   r  zTestBSR.test_constructor4u  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   r  ro  r3  )rK   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   rf   r   rX  ro  )rK   r   r[   r  r@   )r   rI   r  r  rT   s        r;   test_default_dtypezTestBSR.test_default_dtype  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  rR   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   rf   r  r  )r  r  rm  r  )
r   r@  r   r   r  r-  r  r   rf  r   r  s         r;   r  zTestBSR.test_eliminate_zeros  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  ro  rU  B   )r4  rf   r   r  r$  )rK   r   r  r  r  r  r   rf  r   r   r   r   rr  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  )rf   r   rf   )r   rf   r   )r  r   rf   Tr   rf   Fr   N)rK   r   r  r   r  r-  rJ   r  r  r   r  r  r  )r   rR   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  ro  r   r   r  r   r   r   r   r   r  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  ro  r   r   r   r  r  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__rI  c                      y r?   rb   r   s    r;   r  zTestBSR.test_iterator  rL  r=   zBSR does not have a __setitem__c                      y r?   rb   r   s    r;   r  zTestBSR.test_setdiag  rL  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  ro  r  r   r   rf   r   r  r  r  r  r  )	rK   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?   rb   r   s    r;   r  z"TestBSR.test_setdiag_comprehensive6  rL  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)
Nrf   r   r   r   r  rm  r  )r   r   r  )r   r   r  )
rK   r   r[   r  r   r  r@   rg   MemoryErrorr  )r   r  r  rp  rO   rT   r  r  vals2vals3r  r  rA   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   rK   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rd  r  r  r  r  skipifIS_COLABr  rb   r=   r;   r  r  9  s    I77BJJ6K'.K0MRJ(1=.	9<.7(r-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar=   r  )rY  rZ  r[  r\  r]  ra  c                       e Zd ZeZy)TestBSRMatrixN)r   r   r   r   r   rb   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   rf   rc  r   c              3   &   K   | ]	  }|d      ywr
  rb   ).0ps     r;   	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>z  s     ,QAaD,s   c              3   >   K   | ]  }|j                  d         yw)rf   N)ro  )r  r  s     r;   r  z&_same_sum_duplicate.<locals>.<genexpr>  s     7w"7s   )
poprK   rm   r@   r  unsignedintegerr!  ro  rl   r"  )r  indsrC   r  	zeros_pospospos1pos2s           r;   _same_sum_duplicater  g  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   rf   r)  r   Nr   gh㈵>gHz>)rtol)superr   r   r!  rl   r*  r+  r  r	  r)   _insert_explicit_zero_arg1_for_noncanonicalr   r@   rK   r   r  r   r   r  r  )r   r  r  r{  rC   	constructr  zero_pos	has_zerosr  arg1NCr  r  s                r;   r   z_NonCanonicalMixin.spcreator  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?   rb   r   s    r;   r!  z_NonCanonicalMixin.test_bool  rL  r=   z!getnnz-axis counts explicit zerosc                      y r?   rb   r   s    r;   rH  z#_NonCanonicalMixin.test_getnnz_axis  rL  r=   znnz counts explicit zerosc                      y r?   rb   r   s    r;   rh  z_NonCanonicalMixin.test_empty  rL  r=   )r   r   r   r   r  r  r  r!  rH  rh  __classcell__)r  s   @r;   r  r    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 rk   rb   r   r  r  r   s       r;   r  z2_NonCanonicalCompressedMixin._insert_explicit_zero  s    !A#r=   N)F)r   r   r   r  r  rb   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 )Nrx  r  r  re  r   r  r  )	r   r   r   r#  r   r  r  r  r  )
r@   r  r  rR   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)  rf   )rK   r'   r   r   r*  r+  r  r	  r)   r   r  r@  )r   r  rR   rS   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 matrixrI  c                      y r?   rb   r   s    r;   r  z_NonCanonicalCSMixin.test_inv  rL  r=   z&solve broken with non-canonical matrixc                      y r?   rb   r   s    r;   r$  z_NonCanonicalCSMixin.test_solve  rL  r=   N)
r   r   r   r  r  r  r  rd  r  r$  rb   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   rb   r=   r;   r  r        r=   r  c                       e Zd Zy)TestCSRNonCanonicalMatrixNr  rb   r=   r;   r  r    r  r=   r  c                       e Zd Zy)TestCSCNonCanonicalNr  rb   r=   r;   r  r    r  r=   r  c                       e Zd Zy)TestCSCNonCanonicalMatrixNr  rb   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   ro  )r  r  rp  )r   r  r  r   rA   s        r;   r  z)TestBSRNonCanonical._insert_explicit_zero  s/    GGI!A#www--r=   Fz&diagonal broken with non-canonical BSRrI  c                      y r?   rb   r   s    r;   r  z!TestBSRNonCanonical.test_diagonal  rL  r=   z"expm broken with non-canonical BSRc                      y r?   rb   r   s    r;   r  zTestBSRNonCanonical.test_expm  rL  r=   N)	r   r   r   r  r  r  rd  r  r  rb   r=   r;   r  r    s[    .
 [[5)QR S [[5)MN Or=   r  c                       e Zd Zy)TestBSRNonCanonicalMatrixNr  rb   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 rk   )rK   r_r  r@   r`  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   rf   r   r  r   )	r   rK   r'   r  r
  r   rX  r  r  rr  s     r;   test_setdiag_noncanonicalz.COONonCanonicalMixin.test_setdiag_noncanonical*  sf    NN266!9%				1a&A		rwwquu~*+,r=   r?   )r   r   r   r  r  r  rb   r=   r;   r
  r
    s     
-r=   r
  c                       e Zd Zy)TestCOONonCanonicalNr  rb   r=   r;   r  r  2  r  r=   r  c                       e Zd Zy)TestCOONonCanonicalMatrixNr  rb   r=   r;   r  r  6  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   rf   r  r  r  r  r  r  r  r  zcannot be broadcastrj  )r   rf   r   r  rX  rm  r,  r  )rK   r   r   r    r   r!   _broadcast_tor   r   broadcast_tor  r   r  )rO   rT   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   rO  r  rR  sysr*  r  r   r  numpyrK   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   numpy.exceptionsr   typesr   scipy.linalgr   r6  r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   scipy.sparse._baser-   scipy.sparse._sputilsr.   r/   r0   r1   r2   scipy.sparse.linalgr3   r4   r5   r   r  r<   rD   	frozensetr  r	  rU   r   r   r   r   r   r   r  r  r  r  thread_unsafer!  r&  rm  r  contextmanagerr  r  r  r  r  r  rC  rU  re  rg  rw  r  r  r  r  r  r  r  r  r<  r>  rf  rh  rj  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  rb   r=   r;   <module>r,     s        
   *       ,         (F F / /ckk)/
'
 %eW- (( JN?DWt$ $6"$ "$H 4 D\!7 \!7~B| |~a+ a+H "56% % 7%0@ @F
OK OKd\0 \0~ B Bk$ k$\%C %CP_K _KD`0 `0FL5 L5^
2 2:8 AE8<JN,0%'X), ),Xc& 1 3 c&L	    /L' /)    P 1 3 Pf    /L' /    _Buu= _BDL'         mu- m`L'         qM qMfkt(,T/3$HL%U.3E5:P        	)U7ueE/45',u> U7pL'         _u(-e/45).0 _D	L'         .B0 0f#5  -7 -`	. 		 3] 		. 		 3] 	6 	 3] 	-- -(	. 		 4m 	?r=   