
    e!hB                    4	   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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 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+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z? dd	l@mAZAmBZBmCZC dd
lDmEZE ddlFmGZG dej                  v ZId{dZJd ZK eLdg      ZMd ZN e!       ZOeOj                  eG       	 	 d|dZQd ZR G d d      ZS G d d      ZT G d d      ZU G d d      ZV G d d      ZW G d d      ZX G d  d!      ZYej                  j                   G d" d#             Z\ G d$ d%      Z] G d& d'      Z^ G d( d)      Z_ej                  d*        Za G d+ d,      Zb G d- d.      Zc G d/ d0      Zd G d1 d2      Ze G d3 d4      Zf G d5 d6      Zgd}d7Zh	 	 	 	 d~d8Zi G d9 d: ei             Zjejj                           G d; d<eVej      Zlelj                           G d= d> ei             Zmemj                           G d? d@eVem      Znenj                           G dA dB eiddC            Zo G dD dEeVeo      Zpeoj                          epj                           G dF dG eidH            Zq G dI dJeVeq      Zreqj                          erj                           G dK dL eidddddM            Zs G dN dOeVes      Ztesj                          etj                           G dP dQ eidddddddR            Zu G dS dTeVeu      Zveuj                          evj                           G dU dV eiddddddW            Zw G dX dYeVew      Zxewj                          exj                          dZ Zy G d[ d\      Zz G d] d^ez      Z{ G d_ d`e{      Z| G da dbe|ej      Z} G dc dde}el      Z~ G de dfe|em      Z G dg dheen      Z G di dje{ew      Z G dk dleex      Z G dm dnezes      Z G do dpeet      Zdq Z G dr ds      Z G dt du      Zej                  j                  ej                  j                   G dv dwe                    Zej                  j                   G dx dye             Zdz 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suppress_warnings)
csc_matrix
csr_matrix
dok_matrix
coo_matrix
lil_matrix
dia_matrix
bsr_matrix	csc_array	csr_array	dok_array	coo_array	lil_array	dia_array	bsr_arrayeyeissparseSparseEfficiencyWarningsparray)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminv)	decorator)ComplexWarningzgoogle.colabc                 8    ||n| d|}t        | |v |       y )Nz not found in )msg)r   )member
collectionr6   messages       d/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/sparse/tests/test_base.py	assert_inr;   3   s'    _cVJnZN*SGFj g.    c                 b    t        | j                  |j                  k(         t        | |fi | y N)r   dtyper   )xykwargss      r:   assert_array_equal_dtyperC   8   s&    AGGqwwq!&v&r<   dokc                 p    d } ||       D ](  } ||      D ]  }t        j                  ||      s  y * y)Nc                     g }| j                   j                         D ]?  }t        |t        j                  t        j
                  z        s/|j                  |       A |S r>   )__dict__values
isinstancenpr
   genericappend)r@   arraysas      r:   _underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arraysB   sO     ""$ 	!A!RZZ"**45a 	! r<   TF)rJ   may_share_memory)ABrO   rN   bs        r:   sparse_may_share_memoryrT   ?   sI      " #A& 	A""1a(	 r<   Fc                      t        j                  d       nt        j                          |rd
dn8d
fd	n/|r't         j                  j                  d      d
fd	nd
 fd	fdt        fd	       }|S )z
    Monkeypatch the maxval threshold at which scipy.sparse switches to
    64-bit index arrays, or make it (pseudo-)random.

    
   c                 *   t        | ||      }t        t        j                  |      j                  t        j                  t        j
                        j                         t        |t        j
                  k(  xs |t        j                  k(         |S r>   )r-   r   rJ   iinfomaxint32r   intc)rM   maxvalcheck_contentstps       r:   new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypef   s]     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir<   c                     S r>    )rM   r\   r]   fixed_dtypes      r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypel   s	    r<     )seedc                 h    t         j                  t         j                  fj                  d         S )N   )rJ   rZ   int64randint)rM   r\   r]   counters      r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypeq   s$    HHbhh'(:;;r<   c                    t         j                  }||kD  rt         j                  }| D ]  }t        j                  |      }|j                  t         j                  kD  s6|rj|j
                  dk(  rHt        j                  |j                  t         j                        r,|j                         }|j                         }| k\  r|k  rt         j                  } |S Nr   )
rJ   rZ   rg   r   r?   size
issubdtypeintegerrY   min)rM   r\   r]   r?   arrminvalmaxval_limits         r:   r_   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypet   s    HHE!L(HHE %jjo99rxx'%88q=$]]399bjjA%(WWYF%(WWYF%,66\;Q (HHE% Lr<   c                 ~    | j                         kD  rt        d      | j                  t        j                        S )Nzdowncast limited)rY   AssertionErrorastyperJ   intp)rp   downcast_maxvals    r:   new_downcast_intp_indexz8with_64bit_maxval_limit.<locals>.new_downcast_intp_index   s0    wwy?*$%788::bgg&&r<   c           
      L   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
}	 |D ]]  }|j                  |dt        |dd       f       t        |d
       2|j                  |dt        |dd       f       t        |d	       _  | |i ||D ]  \  }}}|
t        |||        S # |D ]  \  }}}|
t        |||        w xY w)Nr-   downcast_intp_index)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_constructrL   getattrsetattr)funcrN   kwbackupmodulesmodnameoldfuncrw   rx   r_   s           r:   decoz%with_64bit_maxval_limit.<locals>.deco   sl   <<$$ell&7&79J9J<<$$ell&7&79J9J<<$$ell&;&;<<++U\\-D-DF	0 Qs$5&s,=tDF G.0CD".MM3(=#*30Et#L#N OC!68OPQ >b>&, 0"T7&Cw/0f 0"T7&Cw/0s   3F 55F F#F#)ra   NF)rJ   rg   randomRandomStater3   )	rr   r   rb   rw   assert_32bitr   ri   rx   r_   s	   ` ``  @@@r:   with_64bit_maxval_limitr   W   s     xx| xx-	
 
	 		))''T'2	<	* "	'
 0 0* Kr<   c                 p    t        | t        j                        st        |       r| S | j	                         S r>   )rI   rJ   r
   r,   toarray)rN   s    r:   r   r      s'    !RZZ LO99;r<   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
BinopTesterc                      yNmatrix on the rightra   selfmats     r:   __add__zBinopTester.__add__       $r<   c                      yr   ra   r   s     r:   __mul__zBinopTester.__mul__   r   r<   c                      yr   ra   r   s     r:   __sub__zBinopTester.__sub__   r   r<   c                      yNmatrix on the leftra   r   s     r:   __radd__zBinopTester.__radd__       #r<   c                      yr   ra   r   s     r:   __rmul__zBinopTester.__rmul__   r   r<   c                      yr   ra   r   s     r:   __rsub__zBinopTester.__rsub__   r   r<   c                      yr   ra   r   s     r:   
__matmul__zBinopTester.__matmul__   r   r<   c                      yr   ra   r   s     r:   __rmatmul__zBinopTester.__rmatmul__   r   r<   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s*    %%%$$$%$r<   r   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)BinopTester_with_shapec                     || _         y r>   _shape)r   shapes     r:   __init__zBinopTester_with_shape.__init__   s	    r<   c                     | j                   S r>   r   r   s    r:   r   zBinopTester_with_shape.shape   s    {{r<   c                 ,    t        | j                        S r>   )lenr   r   s    r:   ndimzBinopTester_with_shape.ndim   s    4;;r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__add__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__mul__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__sub__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__radd__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__rmul__   r   r<   c                      yr   ra   r   s     r:   r   zBinopTester_with_shape.__rsub__   r   r<   c                      yr   ra   r   s     r:   r   z!BinopTester_with_shape.__matmul__   r   r<   c                      yr   ra   r   s     r:   r   z"BinopTester_with_shape.__rmatmul__   r   r<   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s9     %%%$$$%$r<   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ComparisonTesterc                      y)Neqra   r   others     r:   __eq__zComparisonTester.__eq__       r<   c                      y)Nnera   r   s     r:   __ne__zComparisonTester.__ne__   r   r<   c                      y)Nltra   r   s     r:   __lt__zComparisonTester.__lt__   r   r<   c                      y)Nlera   r   s     r:   __le__zComparisonTester.__le__   r   r<   c                      y)Ngtra   r   s     r:   __gt__zComparisonTester.__gt__   r   r<   c                      y)Ngera   r   s     r:   __ge__zComparisonTester.__ge__   r   r<   N)	r   r   r   r   r   r   r   r   r   ra   r<   r:   r   r      s     r<   r   c                   N    e Zd ZdZeZeZeZ	e
ZeZeZeZ ee      Zd Zd Zd Zy)_MatrixMixinz8mixin to easily allow tests of both sparray and spmatrixc                    t        | j                  j                  d      j                         | j                  dgd d f          t        | j                  j                  d      j                         | j                  dgd d f          y N   )r   datspgetrowr   datr   s    r:   test_getrowz_MatrixMixin.test_getrow  sd    4::,,Q/779488QCF;KL4::,,R088:DHHbT1W<MNr<   c                    t        | j                  j                  d      j                         | j                  d d dgf          t        | j                  j                  d      j                         | j                  d d dgf          y r   )r   r   getcolr   r   r   s    r:   test_getcolz_MatrixMixin.test_getcol  sd    4::,,Q/779488AsF;KL4::,,R088:DHHQW<MNr<   c                    | j                  t        dd      j                  dd            }t        |j	                         j
                  t        j
                  d             t        |j	                         j                  |j                         t        |j                  d      j	                         j
                  t        j
                  d             t        |j                  d	      j	                         j
                  t        j
                  d	             |j	                         }|j	                         }t        ||u        y )
N   rZ   r?   rf      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyper?   rJ   formatru   r   )r   rQ   rR   Cs       r:   test_asfptypez_MatrixMixin.test_asfptype  s    NN6!'2::1Q?@QZZ\''))<=QZZ\((!((3QXXg&//177)9LMQXXl+446<<bhh|>TUJJLJJLQr<   N)r   r   r   __doc__r   bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr.   asdenser   r   r   ra   r<   r:   r   r     sC    BMMMMMMM8$GOO
r<   r   c                      e Zd ZdZeZeZeZ	e
ZeZeZeZeZeZed        Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/e0jb                  jd                  d        Z3d Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?d( Z@d) ZAd* ZBeCd+        ZDeCd,        ZEeCd-        ZFeCd.        ZGd/ ZHd0 ZIeCd1        ZJeCd2        ZKd3 ZLd4 ZMd5 ZNd6 ZOd7 ZPd8 ZQd9 ZRd: ZSd; ZTd< ZUd= ZVd> ZWd? ZXd@ ZYdA ZZdB Z[dC Z\dD Z]dE Z^dF Z_dG Z`dH ZadI ZbdJ ZcdK ZddL ZedM ZfdN ZgdO ZhdP ZidQ ZjdR ZkdS ZldT ZmdU ZndV ZodW ZpdX ZqdY ZryZ)[_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   rJ   r   r   rI   r)   is_array_test)clsr?   s     r:   
init_classz_TestCommon.init_class6  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>.checkO  sL    %%e,E*dE2DNNQC5)*u--.r<   z%Cannot create a rank <= 2 DOK matrix.)rI   TestDOKpytestskipr  r   r  r?   s   `  r:   	test_boolz_TestCommon.test_boolN  s=    	/ dG$KK?@(( 	E%L	r<   c                     t        ddgg      }| j                  |      }t        d      D ]  }||z   }||z   } t        ||j	                                y )NTFrV   )r   r   ranger   r   )r   r   r   _s       r:   test_bool_rolloverz_TestCommon.test_bool_rollover[  sY     dE]O$s#r 	AEME)C	 	30r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 z   	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                                y Nr   r   )r  r  copyr   r   r   r   r  rC   r   rJ   nan)
r?   r   r   dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r:   r  z"_TestCommon.test_eq.<locals>.checkj  s    //%(C%%e,E88:DD1I^^D)F'',F'',F'',F'',F %SD[5F?2K2K2MN$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SF]FcMB$SAX
/C/C/EF$SAX
/C/C/EF$SBFF]&+rvvo%>%>%@Br<   bsrcsccsr8Bool comparisons only implemented for BSR, CSC, and CSR.	r   filterr(   sup_complexr   r   r  r  r  r   supr  r?   s   `   r:   test_eqz_TestCommon.test_eqf  sr    !

*+			B 
 
	B4 ::$99KKRS(( 	E%L	r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                    	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                                y r#  )r  r  r$  r   r   r   r   r  rC   r   rJ   r%  )
r?   r   r   r&  r'  r(  r*  r)  r+  r   s
            r:   r  z"_TestCommon.test_ne.<locals>.check  s    //%(C%%e,E88:DD1I^^D)F'',F'',F'',F'',F %SD[5F?2K2K2MN$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SD[6V3C2L2L2NO$SF]FcMB$SAX
/C/C/EF$SAX
/C/C/EF$Q#XU
/C/C/EF$Q#XU
/C/C/EF$SBFF]&+rvvo%>%>%@Br<   r,  r0  r1  r4  s   `   r:   test_nez_TestCommon.test_ne  sr    !

*+			B 
 
	B8 ::$99KKRS(( 	E%L	r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 ~   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         y # 1 sw Y   dxY wNr         ?      ?)rf   r   r   r   ignoreinvalidr  r  r$  r   ru   complexr   r   r   r  rC   r   rJ   rg   errstater%  r?   r   r   r&  r'  
datcomplexdatspcomplexr(  r*  r)  r+  valr   s               r:   r  z"_TestCommon.test_lt.<locals>.check  s    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %S4Z%&.1I1I1KL$Z$%6&2V&;%D%D%FH %S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$S4Z>$Z$%6t8KL( Mhhsm(%#+)>)>)@#)L(#+)>)>)@#)LM
 X. 7(%"&&.)A)A)C),rvv77
 //%(C%%e,E88:DD1I^^D)F %S6\54<@7 7   =L33L<r,  r0  r1  r4  s   `   r:   test_ltz_TestCommon.test_lt  ss    !

*+		2	A 
 
2	Ah ::$99KKRS(( 	E%L	r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                 ~   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         y # 1 sw Y   dxY wr<  rB  rE  s               r:   r  z"_TestCommon.test_gt.<locals>.check  s    //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %S4Z%&.1I1I1KL$Z$%6&2V&;%D%D%FH %S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$S4Z&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$TCZ&6/1J1J1LM$S4Z>$Z$%6t8KL( Mhhsm(%#+)>)>)@#)L(#+)>)>)@#)LM
 X. 7(%"&&.)A)A)C),rvv77
 //%(C%%e,E88:DD1I^^D)F %S6\54<@7 7rI  r,  r0  r1  r4  s   `   r:   test_gtz_TestCommon.test_gt  ss    !

*+		1	A 
 
1	Af ::$99KKRS(( 	E%L	r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                    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         y Nr   r=  )rf   r   r   r>  r  r  r$  r   ru   rC  r   r   r   r  rC   r   rJ   rg   rE  s               r:   r  z"_TestCommon.test_le.<locals>.check3      //%(C%%e,E88:DD1I^^D)FG,J$JqsO>>*5L'',F'',F'',F'',F %SD[5F?2K2K2MN$Z4%7&2f&<%E%E%GI %f&6%?%?%A3$;O$f&6%?%?%A3$;O$f&6%?%?%A3$;O$f&6%?%?%A3$;O$f&6%?%?%A43;O$f&6%?%?%A43;O$f&6%?%?%A43;O$f&6%?%?%A43;O$Ud]C4K@$\T%9:;MN% Ohhsm(%3,)?)?)A3#:N(#,)?)?)A3#:NO //%(C%%e,E88:DD1I^^D)F %SF]ETMBr<   r,  r0  r1  r4  s   `   r:   test_lez_TestCommon.test_le/  s    !

*+		-	C 
 
-	C^ ::$99KKRS(( 	E%L	r<   c                      t               }|j                  t               |t         fd              } j                  j
                  dvrt        j                  d        j                  D ]
  } ||        y )Nc                    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\         y rP  rQ  rE  s               r:   r  z"_TestCommon.test_ge.<locals>.checkm  rR  r<   r,  r0  r1  r4  s   `   r:   test_gez_TestCommon.test_gei  rT  r<   c                    t        | j                  d      j                         t        d             t        | j                  d      j                  d       t        | j                  d      j                         d       | j                  j                  dv r7t        | j                  d      j                  d      t        g d             y y )Nr   r   r   coor/  r.  lilaxisr   r   r   )	r   r   r   r   nnzcount_nonzeror   r   r   r   s    r:   
test_emptyz_TestCommon.test_empty  s    T^^F+335uV}ET^^F+//3T^^F+99;Q?:: <</==1=EuYGWX =r<   c                    | j                   j                  dv }|rg dnd g}| j                   | j                   j                  fD ]J  }|D ]C  }t        j                  |j                         |      }t        |j	                  |      |       E L |s7t        t        d      5  | j                   j	                  d       d d d        y y # 1 sw Y   y xY w)NrZ  )Nr   r   r   r>  r]  znot implemented .* formatmatchr   )	r   r   TrJ   ra  r   r   r  NotImplementedError)r   axis_supportaxesrQ   axexpecteds         r:   test_count_nonzeroz_TestCommon.test_count_nonzero  s    zz((,HH'3#$**djjll+ 	AA A++AIIKbAQ__"_5x@A	A
 2:UV 1

((a(01 1 1 1s   $CCc                     t        t        | j                  d       t        t        | j                  d       t        t        | j                  d       y )Nr   r   r   r   r   r   )r  r  r   r   s    r:   test_invalid_shapesz_TestCommon.test_invalid_shapes  s2    j$..&9j$..&9j$..':r<   c                 R   | j                  g dg dg dg      }|j                  dk(  rdn|j                  dk(  rdnd}t        |j                     \  }}| j                  rd	nd
}d| d| d|j                   d|j
                   d| d|j                   d}t        |      |k(  sJ y )Nr   r   r   r_  r   r   r>  dia(1 diagonals) r-  (blocksize=1x1)  r   r/   < sparse  of dtype ''
	with  stored elements 
and shape >)r   r   r*   r  r?   r`  r   reprr   r   extrar  fmt
sparse_clsrk  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   ru     r   )maxprintrV   )r  r   iF   )r   r?   r$  r  z'positional argument|unpack non-iterablerd  )r   rJ   r   r   r  r   strsplitr   r`  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 )Nrs  r_  rt  rf   ru  rv  r-  rw  rx  r   r/   ry  rz  r{  r|  r}  r~  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r   r`  r   r*   r  r?   r   r  r  s          r:   test_strz_TestCommon.test_str  s    	9jAB99> % 5',||u'<# 	
 %,,'3 $ 2 2W
uHZLEKK= Aii[ 1%
5;;- P 	 5zX%%%r<   c                    d}t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      fD ]  }| j                  ||      }||z   }d|z  }||j                         z  }||j	                         z  }||j                         z  }||||||fD ]u  }	t        |	j                         |j                         |j                         z         t        |	j                  |       t        |	j                         j                  |       w  y )	Nr  r  rZ   r   r   	complex64r   r   rf   )rJ   r?   r   tocsctocsrtocoor   r   )
r   r   mytyperN   rS   cr  efms
             r:   test_empty_arithmeticz!_TestCommon.test_empty_arithmetic  s   xx("((9*=#RXXk%:&( 	7F uF3AAAAAAGGIAAGGIAAGGIA!Aa] 7QYY[!))+aiik*ABQWWV,QYY[..v6	7	7r<   c                     t        g dg dg dg dgd      }t        t        |      t        | j                  |            j	                                y )Nr   r      r   r   r   r   r_  r  )r   r   absr   r   r   rQ   s     r:   test_absz_TestCommon.test_abs  s<    ;
J	BCHSVS!23;;=>r<   c                     d}t        ddgddggd      }t        t        j                  ||      t	        | j                  |      |      j                                y )	Nr   ggQ?g     @1@gQr  )decimals)ndigits)r   r   rJ   aroundroundr   r   )r   decimalrQ   s      r:   
test_roundz_TestCommon.test_round
  sR    E4=5%.137RYYq734>>!,g>FFH	Jr<   c                    t        g dg dg dgd      }t        t        j                  |d      | j	                  |      j                  d      j                                t        t        | j	                  |      j                  |       y )N)r  r>  )r   r   r   rf   r   r  r  rf   )r   r   rJ   powerr   r   r  rg  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  r_  r  )TFF)FFT)r   r   r   r   r  rg  __neg__r  s     r:   test_negz_TestCommon.test_neg  se    ;
J	BCHaR4>>!,,5578 ')=>?)4>>!+<+D+DEr<   c                     t        ddgg      }| j                  |      }t        |j                  j	                         |j                         y N      ?      @y       @      )r   r   r   realr   r   DrQ   s      r:   	test_realz_TestCommon.test_real  ;    FF#$%NN1QVV^^%qvv.r<   c                     t        ddgg      }| j                  |      }t        |j                  j	                         |j                         y r  )r   r   r   imagr   r  s      r:   	test_imagz_TestCommon.test_imag$  r  r<   c           	         g }|j                  g dg       |j                  dgdgdgg       |j                  ddgddgddgg       |j                  g dg dg dg       |j                  ddgddgg       |j                  t        |d   ddgg             |j                  t        |d   dgdgg             |j                  t        |d   ddgdd	gg             |j                  t        |d   ddgdd	gg             |j                  t        |d   ddgdd	gg             |j                  t        |d   g d
g             |D ]  }t        |      j                  \  }}| j	                  |      }t        | dz
  |dz         D ])  }t        |j                  |      t        ||             + t        |j                  d      t        |d             t        |j                  d      t        |d              t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                         t        j                  d             t        | j	                  d      j                  d      t        j                  d             y )Nr   r   rf   r   r   rf   r   r   r   r   )r   r   rf   r   r   r   r  r   rf   r   r  krV   i)(   i?  r  r   r   )r  r   r   r  )rL   r   r   r   r   r  r   diagonalr   rJ   r   empty)r   matsr  rowscols
sparse_matr  s          r:   test_diagonalz_TestCommon.test_diagonal)  sy   WIaS!aSM"aUAa5!A'(WWW-.aUAa5M"Da1Q%)*Da1#qc+,Da1Q%1/0Da1Q%1/0Da1Q%1/0Da)-. 	EAqJD$*JD57DF+ EZ00105tA|DE ,,r,2DbMB,,s,3T!s^D	E 	T^^K099;RXXb\J 	T^^F+446DT^^G,557!ET^^F+44R8"((1+Fr<   c                    t        j                  g dg dg dg      }| j                  |      }t        dd      D ].  }t	        |j                  |      |j                  |             0 t        j                  g dg dg      }| j                  |      }t        dd      D ].  }t	        |j                  |      |j                  |             0 y )Nr   rf   r   r  r  r   )      	   r>  r   )offsetr   )rJ   r   r   r  r   trace)r   rQ   rR   r  s       r:   
test_tracez_TestCommon.test_traceJ  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  r_  r  )r   r   r  )r   F))   r   )r   r  orderr   rV   r   r   r   r   r   r   r         r  rf   r   )r   rV   r   r   r   r   )r   r   r   r  r  r  rf   r   )r   r   rp  rf   r   r   )
not_an_argr   r  Tr$  zhas no setter|n't set attributerd  )r   r   r   r   r  r  r  r   r   r  AttributeErrorrl   )r   r@   r  srA   desireds         r:   test_reshapez_TestCommon.test_reshapeW  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 r#  )rJ   r   ro   r   r   r   r   rf  )rN   vr  nr  jdense_setdiags         r:   r  z=_TestCommon.test_setdiag_comprehensive.<locals>.dense_setdiag  s    

1AAv
AGGAJN366Q;As1vA"1AIIaOIIaQ'!A#Qacc1qb) r<   c                    dt        t        j                  | |            ddfD ].  }|dk  r*t        j                  j	                  t        dd            }n"t        j                  j                  dd|      } | ||       t               5 }|j                  t        d       |j                  ||       d d d        t        j                  | |      }t        j                  |      j                  dk(  rt        ||d	
       n2t        t        |      t        |            }t        |d | |d | d	
       t        |j                         | d	
       1 y # 1 sw Y   xY w)Nr   rf   r  r   r   r  rl   zChanging the sparsity structuz	{msg} {r}err_msg)r   rJ   r   r   choicer  rh   r   r2  r(   setdiagr   r   r   ro   r   )	rN   rS   r  rr  r5  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&&( $CJJ68WXIIaO$
 GGAqM::a=%%*&q![ACFCF+A&q!uae[I"199;;G'H$ $s   )EE!	rc   )r  r  r   r   r  r  r   r  r   r   r  r  )rJ   r   rd   r   r   r   r   r   r   ro   r   )r   r  shapesr?   r  r  ksr  rN   rS   k2r  s              @r:   test_setdiag_comprehensivez&_TestCommon.test_setdiag_comprehensive  s    	*	H2 			t4ggrzz* 	0E 
0!YYr!tQqS) 0A!Qu5A1vU;A!!Q* !ii..rCGQ.H 0%aB/00
0	0r<   c           
      *   | j                  t        j                  d            }| j                  d      }g d}t               5 }|j	                  t
        d       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   Changing the sparsity structurer  r  r   )r   r   r   )r   rf   rf   r  r>  r   r   r   )r  rf   r   rf   r  rf   r   r   r   r   r   r   )r   r   r   r   )r   rJ   r&   r   r2  r(   r  r  r  r   r  r   r   )r   r  m2rH   r5  s        r:   test_setdiagz_TestCommon.test_setdiag  s   NN266!9%^^F#  	ACJJ.0QR*aii1=IIfqzz|V4IIfI"qyy{BHHi6?6?6A -B C IIfI#qyy{BHHi6?6?6A -B C IIdaI qyy{3/3IIdbI!qyy{3/3JJsaJ rzz|A=JJ1vJ#rzz|BQ/,2>2@ A-	A 	A 	As   F<H		Hc                 6   t        g dg dg dg      }| j                  |      }t        |j                               D ch c]  }t	        |       }}t        |j                               D ch c]  }t	        |       }}t        ||       y c c}w c c}w Nr   r   r   r   r   r   r  )r   r   r   nonzerotupler   r   rQ   AspijA_nzAsp_nzs         r:   test_nonzeroz_TestCommon.test_nonzero  sw    9Yy12nnQ$-aiik$:;bb	;;&/&>?%)??T6" <?s   B0Bc                 J   t        g dg dg dg      }| j                  |      }t        t        j                  |            D ch c]  }t        |       }}t        t        j                  |            D ch c]  }t        |       }}t        ||       y c c}w c c}w r  )r   r   r   rJ   r  r  r   r  s         r:   test_numpy_nonzeroz_TestCommon.test_numpy_nonzero  s{    9i34nnQ$-bjjm$<=bb	==&/

3&@A%)AAT6" >As   B:B c                    	 t         j                  j                  d       t        j                  g dg dg dg      }t         j                  j	                  dd      }t        j                  g g      }t        j
                  d      }t        j                  ddd      j                         }|||||g		 fd	} j                  D ]$  }t        t        	            D ]  } |||        & y )
Nrc   r   r   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                         d d d        y # 1 sw Y   y xY w)	Nr   r?  )overr]  r   r   r>  r   )
r  r   rJ   rD  r   sumr   r?   r   isscalar)r?   r  r   r   matricesr   s       r:   r  z#_TestCommon.test_sum.<locals>.check  s!   ,,x{%,8CNN3eN4E(+ O)#'')UYY[ASWWY__eiik.?.?@EII4I$89:)#''t'*<*/)))*>@SWW$W/55"YYDY1779)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MNO O Os   J/K99L)rJ   r   rd   r   randr   r|   r   r  r  r   )
r   dat_1dat_2dat_3dat_4dat_5r  r?   r  r,  s
   `        @r:   test_sumz_TestCommon.test_sum  s    
		t)""$ % 		q!$""Aq$/7795%6	O( (( 	 E3x=)  eQ 	 r<   c                 Z   t        j                  d      }t        g dg dg dg      }| j                  |      }t	        t
        |j                  d       t	        t        |j                  d       t	        t        |j                  d       t	        t
        |j                  d	|
       y Nr   r   r#  r$  r%  r   r]  r   r         ?r   r^  out)rJ   r   r   r   r  r  r*  r  r   r:  r   r   s       r:   test_sum_invalid_paramsz#_TestCommon.test_sum_invalid_params  sy    hhvY! " s#j%))!4i8i5j%))!=r<   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   )r*  r   r   r?   )r?   dat_sum	datsp_sumr   r   s      r:   r  z)_TestCommon.test_sum_dtype.<locals>.check#  s?    ggEg*G			.I%gy9	8r<   r   r   r  r   r  r?   r   r   s      @@r:   test_sum_dtypez_TestCommon.test_sum_dtype  sM    Y! " s#	9 (( 	E%L	r<   c                    | j                    }t        g dg dg dg      }| j                  |      }| j                   rt        d      nt        dgg      }| j                   rt        d      nt        dgg      }|j	                  ||       |j	                  |       t        ||       | j                   rt        j                  d      nt        j                  d      }| j                   rt        j                  d      nt        t        j                  d            }|j	                  d	||
       |j	                  d	|       t        ||       t        t        d      5  |j	                  t        dg             d d d        t        t        d      5  |j	                  t        | j                   rdggnd             d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY wNr#  r$  r%  r   )r:  keepdimsr:  r   r   r   r   )r^  r:  rG  r9  z"output parameter.*wrong.*dimensionrd  )
r  r   r   r/   r*  r   rJ   r   r  r  r   keepr   r   dat_out	datsp_outs         r:   test_sum_outz_TestCommon.test_sum_out-  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 :-QR 	&II%*I%	&:-QR 	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   rJ   r*  r   r   r?   )r   r   r   r@  rA  s        r:   test_numpy_sumz_TestCommon.test_numpy_sumH  s_    Y! " s#&&+FF5M	!'95W]]IOO4r<   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
                         y )Nr#  r   r  r  )r   r  r  r   r]  r^  rG  r   r   r>  r   )	r   r   r   meanr   r?   r   rJ   r+  )r?   r   r   rL  r   s      r:   r  z$_TestCommon.test_mean.<locals>.checkW  s$   ""$+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Lr<   )r  r  )r   r  r?   rL  s   `  @r:   	test_meanz_TestCommon.test_meanU  s5    %%%	M< (( 	E%L	r<   c                 x   | j                  t        j                  d            }t        g dg dg dg      }| j	                  |      }t        t        |j                  d       t        t        |j                  d       t        t        |j                  d       t        t        |j                  d	|
       y r5  )	r  rJ   r   r   r   r  r  rX  r  r;  s       r:   test_mean_invalid_paramsz$_TestCommon.test_mean_invalid_paramsx  s    ll288F+,Y! " s#j%**15i&9i#6j%**1#>r<   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 r?  )rX  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<   rB  rC  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rF  )
r  r   r   r/   rX  r   rJ   r   r  r  rK  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rP  c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y rR  )r   r   rJ   rX  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               5 }|j                  t        d	       |j                  t        d
       |j                  t        d       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   rY  r   r?   )      @              ?)rj         @rj  )rj  rj  rj  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr   r{   linalgr1   r   r2  r(   r   r   r   )
r   MsMMexpNsNNexpr5  sMexpsNexps
             r:   	test_expmz_TestCommon.test_expm  s   9i4e<^^AU%^8||  #<|<=^^AU%^8||  #  	'CJJ'8 JJ'U JJ'@ H$$&EH$$&E	'  	"54<%-@!54<%-@#	' 	's   &A5EEc                 8      fd}t         fD ]
  } ||        y )Nc                    t        g dg dg dg|       }t               5 }|j                  t        d       |j                  t        d       |j                  t        d       j	                  |d|       }t        |      }d d d        t        j                        j                         t        j                  d	             t        t        t
        |       y # 1 sw Y   [xY w)
Nr  rf  rg  ro  rn  rm  rY  rh  r   )r   r   r2  r(   r   r2   r   r   r   rJ   r&   r  r  )r?   rr  r5  rs  sMinvr   s        r:   r  z#_TestCommon.test_inv.<locals>.check  s    y)Z8%@A"$ 	 

2KN

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

2CF^^AU%^@B	  &eiim&;&;&=rvvayI)S!,	  	 s   A"CC&)rp  r  s   `  r:   test_invz_TestCommon.test_inv  s"    	- W 	E%L	r<   c                 r   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             y 	Nrs  r  )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_array  s    7777344>>!,446:#"  	4>>!,446:4>>!7>;CCEahhwFWXr<   c                    | 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             y r  )r  r   r   todenseru   r  s     r:   test_from_matrixz_TestCommon.test_from_matrix  s    LL)Y	9EF4>>!,446:LL*)#% & 	4>>!,446:NN1GN,4468I	
r<   c                 r   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             y r  )r   r   r   r   ru   r  s     r:   test_from_listz_TestCommon.test_from_list  s    WWW-4>>!,446: 	4>>!,446aANN1GN,446a8P	
r<   c                    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             y r  )r   r   r   r   r   ru   r   r  Ss      r:   test_from_sparsez_TestCommon.test_from_sparse  s3   777734q!4>>!,446:NN14>>!,446:#"  q!4>>!,446:4>>!7>;CCE88G,	.NN14>>!,446:4>>!7>;CCE88G,	.r<   c                 ~   | 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  rk  rl  ri  rk  rl  ri        @)r   r  rI   r  rJ   r
   r/   r   r   r   flagsc_contiguousf_contiguousr   r   r?   rP   r  r   rf  r   r  ru   )
r   chkr:  rN   dense_dot_denser  rS   check2spboolmatbools
             r:   test_todensez_TestCommon.test_todense'  s   jj  "#T-?-?rzzRYYOOO3)		&&#))*@*@@Ajj  s +3)		&&'CII***+jj  s +3)CII***+		&&'hhtzz''tzz/?/?@jj  S )488S)488S)""3,,,ll288DJJ$4$4DJJ<L<LMNjj  S )488S)488S)""3,,,:,dhh,DJJ&&((?E2=/"$$((Q,##%)?F35((//$'6>>+W5r<   c                 n   t        | j                        }| j                  j                         }t	        ||       t        |j                  j                  |j                  j                  k7         | j                  j                  d      }t	        ||       t        |j                  j                         t        |j                  j                          | j                  j                  d      }t	        ||       t        |j                  j                          t        |j                  j                         t        j                  | j                  j                  | j                  j                        }| j                  j                  |       t	        ||       d|d<   | j                  j                  |       t	        ||       t        g d      }t        ||      }t        || j                  j                               }t	        ||       t        g d	      }t        ||      }t        | j                  j                         |      }t	        ||       | j                  | j                  t               }	|j#                  t               }
t	        |	j                         |
       y )
Nr   r  r  r   rH  rk  .r  r  )r   r   r   r   r   r   r  r  r  rJ   r   r   r?   r   r   r   r  ru   )r   r   r  r:  rN   r  r  rS   r  r  arrbools              r:   test_toarrayz_TestCommon.test_toarrayP  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                   	 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 ]
  } ||        - y )Ny       @      @r   r   r   y      @      @r   r_  )TFr  FTc                     t        |       }t        |       }t        ||       t        ||u       d|j                  z  }||   }||    ||<   t        ||   ||   k7         |||<   y )N)r   )r   r   r   r   )	attributerN   rS   r  b_iS_castedS_copieds        r:   (check_equal_but_not_same_array_attributezI_TestCommon.test_astype.<locals>.check_equal_but_not_same_array_attribute  ss    Hi0Hi0"1a(
#166MdQ4x!!!%!r<   r/  r.  r-  )indicesindptrdatar[  )rowcolr  ru  )offsetsr  )	r   r   r+   ru   r   r?   r   r   r   )
r   r  r  r@   D_castedr$  r  r  r  r  s
           @@r:   test_astypez_TestCommon.test_astypeu  sS   ##  NN1!  	HAxx{H% 888AD81X^^X^^<X--/:X__ahh7	8 HOOAEO2h>?qt4HHH,-	 "77!> HI<YGHE)!7 HI<YGHE)!4 HI<YGH? 	Hr<   c                    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 y )Nr  r  r_  r  Fr  )r   r   hasattrr  r  	writeabler   r  r  r+   ru   r   r?   )r   r  r  r@   r  r  s         r:   test_astype_immutablez!_TestCommon.test_astype_immutable  s    ##  NN11f%*AFFLL"88,,',AHHNN$(-AIIOO%! 	9Axx{Hxx{H8	9r<   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  rJ   r   r  r  )r   r   s     r:   test_rmul_scalar_type_errorz'_TestCommon.test_rmul_scalar_type_error  s:    !!"**-9% 	5L	 	 	s	   <Ac                 B      fd} j                   D ]
  } ||        y )Nc                    j                   |    }j                  |    }|j                         }d|d<   |}||z   }t        ||j	                         |z          ||j                         z   }t        |j	                         |j	                         |j	                         z          ||d   z   }t        ||j	                         |d   z          y )Nrl  r  r   )r  r  r$  r   r   r  r?   r   r   rN   rS   r  r   s         r:   r  z#_TestCommon.test_add.<locals>.check  s    //%(C%%e,E
AAcFAAAq!))+/2AGGIAqyy{ yy{QYY[8: AaDAq!))+!"45r<   r  r  s   `  r:   test_addz_TestCommon.test_add  s&    	6$ %% 	E%L	r<   c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }|j                         }d|d<   |}||z   }t        |||j	                         z          y )Nrl  r  )r  r  r$  r   r   r  s         r:   r  z$_TestCommon.test_radd.<locals>.check  sW    //%(C%%e,E
AAcFAAAq!aiik/2r<   r  r  s   `  r:   	test_raddz_TestCommon.test_radd  s&    	3 %% 	E%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                     j                   |    }j                  |    }t        ||z
  j                         t	        j
                  d             t        |dz
  j                         |       j                  t	        j                  g dg dg dgd            }t        ||z
  j                         ||j                         z
         t        ||z
  j                         |j                         |z
         t        ||d   z
  ||d   z
         y )Nr  r   r   r   r   r  r   r   r   r   r   r  r   r  r  )r  r  r   r   rJ   r   r   r   r?   r   r   rQ   r   s       r:   r  z#_TestCommon.test_sub.<locals>.check  s    //%(C%%e,E668"((6:JK	224c:,}EsKA 	224cAIIK6GHE	224aiikC6GH us1v~sSV|<r<   r  r  rJ   r?   r  s   `  r:   test_subz_TestCommon.test_sub  s:    	=  %% 	E((%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                 ~   j                   |    }j                  |    }t        ||z
  g dg dg dg       t        ||z
  g dg dg dg       t        d|z
  j                         |        j	                  g dg dg dgd      }t        ||z
  ||j                         z
         t        ||z
  |j                         |z
         t        |j                         |z
  |j                         |z
         t        ||j                         z
  ||j                         z
         t        |d   |z
  |d   |z
         y )Nr  r   r  r  r  r  r   )r  r  r   r   r   r  s       r:   r  z$_TestCommon.test_rsub.<locals>.check  s   //%(C%%e,Eei	)-LMi	)-LME	224sd;	*Z@sKAa#		*;<C!))+*;<qyy{U2AIIK#4EFuqyy{2C!))+4EF s1v~s1v|<r<   r  r  r  s   `  r:   	test_rsubz_TestCommon.test_rsub  s:    	=" %% 	E((%L	r<   c                 B      fd} j                   D ]
  } ||        y )Nc                 \   j                   |    }j                  |    }t        |dz   j                         |       t	        t        dd      D cg c]  }||z  	 c}      }t	        t        dd      D cg c]  }||z  	 c}      }t        |j                         |       y c c}w c c}w )Nr   r   r   )r  r  r   r   r*  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                  |      }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   y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r  )r   r   r   multiplyr   )	r   rQ   rR   r  Bspr   r  CspDsps	            r:   test_elementwise_multiplyz%_TestCommon.test_elementwise_multiply.  s9   78$%78$%nnQnnQ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 ]`  }|D ]Y  }	 |j                         |z  }|j                  |      }t        |      rt        |j                         |       Nt        ||       [ b y # t        $ r t        t        |j                  |       Y w xY w# t        $ r Y t        $ r t        t        |j                  |       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   rJ   onesrf  r   r   r  r  r  r   r  r'   )r   rQ   rR   r   r  Er  GHJKLr  r  EspFspHspHsppJspJsppKspr,  
spmatricesr  r  
dense_multsp_mults                              r:   #test_elementwise_multiply_broadcastz/_TestCommon.test_elementwise_multiply_broadcastC  so   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 **Q-G$'(9:F'<=	= " !*ajj!< ! ! !*ajj!<s*   %!H I$II	I6#I65I6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   r>  r   r?  )divide)r  rA  )
rJ   r%  r   r   r   r   r   r   r   rD  )r   rk  denomrQ   rR   r  r  s          r:   test_elementwise_dividez#_TestCommon.test_elementwise_dividez  s=   rvvbffQ'rvva'VVAbffRVV,. 	74::

#:;XF	*Z@sKrvvbffS)s266*VVD*, 	74::#56A $^45$^45nnQnnQ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   rf   r   )r   r  r  )r   r   r  r   r   r   r?   r  rg  __pow__r  rJ   rq  matrix_powerr  )r   rQ   rR   exponentret_spret_nps         r:   test_powz_TestCommon.test_pow  sj   <|\JKNN1 + 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   ri  rf   r   r   r  )r   r   r   r   r   )r   rr  r  s      r:   test_rmatvecz_TestCommon.test_rmatvec  sY    NNGGIg>?!)a-Y		1LMYK !#'3+<=r<   c                 0   | j                  dgdgdgg      }t        t        |t        d      z               t	        |t        d      z  j                         dgdgdgg       t	        |t        dg      z  t        g d             t	        |t        dgg      z  t        dgdgdgg             t	        |t        j                  d      z  t        dgdgdgg             t	        |t        j                  d      z  t        j                  d             y )Nr   rf   r   r  r   r   r   r   r   r   )r   r   r'   r   r   r   rJ   r  r  s     r:   test_small_multiplicationz%_TestCommon.test_small_multiplication  s    NNQCQC=)U1X&'a%(l++-aS1#?Qs^U9%56Qu%uqcA3_'=>Q(%!qcA3*@AQ("''&/:r<   c                 *   t        j                  dgdgdgg      }| j                  |      }| j                  rYt	        |t        j
                  d      z  j                         |       t	        |t        dgg      z  j                         |       y t        |t        dg      z  t        g d             t        |t        dgg      z  t        dgdgdgg             t        |t        j
                  d      z  t        j
                  d             y )Nr   rf   r   rJ  r  r  r  )rJ   r   r   r  r   r  r   r   )r   rQ   r  s      r:   -test_star_vs_at_sign_for_sparray_and_spmatrixz9_TestCommon.test_star_vs_at_sign_for_sparray_and_spmatrix  s    HHqcA3_%nnQ%sRWWV_'<&E&E&GK%sUQC5\'9&B&B&DaHuaSz)5+;<uqcU|+UQC!qc?-CDrwwv.@r<   c                 6   | j                  dgdgdgg      }t               }t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z  d       t        ||z  d       y )Nr   rf   r   r   r   )r   r   r   r   rQ   rR   s      r:   test_binop_custom_typez"_TestCommon.test_binop_custom_type  s    
 NNQC!qc?+MQU01QU01QU01QU12QU12QU12QU01QU12r<   c                 8   | j                  dgdgdgg      }t        d      }t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z   d       t        ||z
  d       t        ||z  d       t        ||z  d       t        ||z  d       y )Nr   rf   r   rJ  r   r   )r   r   r   r  s      r:   !test_binop_custom_type_with_shapez-_TestCommon.test_binop_custom_type_with_shape  s    NNQC!qc?+"5)QU01QU01QU01QU12QU12QU12QU01QU12r<   c                      G d d      }d}| j                  dgdgdgg      } ||      }||z  }||z  }t        |j                         |j                                t        |j                  |j                         y )Nc                       e Zd Zd Zd Zy)0_TestCommon.test_mul_custom_type.<locals>.Customc                     || _         y r>   scalar)r   r  s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__init__  s	    $r<   c                      || j                   z  S r>   r  r   s     r:   r   z9_TestCommon.test_mul_custom_type.<locals>.Custom.__rmul__  s    t{{**r<   N)r   r   r   r   r   ra   r<   r:   Customr    s    %+r<   r  rf   r   r   )r   rC   r   r   r   )r   r  r  rQ   r  A_scalarA_cs          r:   test_mul_custom_typez _TestCommon.test_mul_custom_type  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	  r
  rV   )r   r   r   r   r   )r   rr  r  actualrk  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	  r
  r   r   rf   r  r  )	r   r   rf  operatormatmulr   r   r  r  )r   rr  rR   r  r*  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	  r
  r  )r  r   rf   r   )r  r   r  )r   r   rf  r   r   r   r   r/   r   rI   r
   r  rJ   r  r  r   r   r   
atleast_2d)r   rr  r  matrix_or_arraybad_vecsr@   s         r:   test_matvecz_TestCommon.test_matvec5  s   NNGGIg>?WI  !!c'199;+<= 	a%.(//5a%!aS!..55e<a&1#qc1#//66u= 	
1uW~-w78%)%7%7'RYY
1vg000/BC 1Q%L%	"2EA3s)4D7OVaS!I%68 	7A*allA6	7
 	AeGn,c!))+g.FGAsA3smOR]]3qyy{7;S-T-V-VWr<   c                    t        g dg dg dg dg      }t        g dg dg dg dg      }t        ddgddgddggd      }| j                  |      }| j                  |      }t        ||z  j	                         ||z         t        ||z  ||z         t        ||z  ||z         t        ||z  ||z         |j                         }|}||z  }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       |j                         }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       |j                         }t        ||z  j	                         |       t        ||z  |       t        ||z  |       t        ||z  |       d	}	d
}
t        j                  d       t        |	df      }t        |	      D ]6  }t        d      D ]&  }t        j                         }||
k  s||
z  |||f<   ( 8 | j                  |      }||j                  z  }t        |j	                         |j	                         |j                  j	                         z         t        |j	                         |j	                         |j	                         j                  z         | j                  ddgddgg      }| j                  ddgddgddgg      }t        t        |j                  |       | j                   rt        t        |j"                  |       y y )Nr  r  r	  r
  r   r   rf   r  r  g333333?r   r  r  r   )r/   r   r   r   r   r  r  r  r   rd   r   r  rf  r  r  r   r  r   )r   rN   a2rS   aspbspcspr  wantr  fracrQ   r  r  r  rR   s                   r:   test_matmat_sparsez_TestCommon.test_matmat_sparseT  s   GGIg67GGIg67QqE1Q%1&s+nnQnnQ!39"5"5"7Q?!#'1q51!!c'1q51!"s(AE2 iik1u!39"5"5"7>!#'40!!c'40!"s(D1iik!39"5"5"7>!#'40!!c'40!"s(D1iik!39"5"5"7>!#'40!!c'40!"s(D1 A1Q%Lq 	$A1X $MMOt8tVAacF$	$ NN1G!!))+qyy{QSS[[]/JK!!))+qyy{QYY[]]/JK NNQqE1Q%=)NNQqE1Q%1./j!,,2*aii3 r<   c           	      b   g dg dg dg dg}| j                  |      }t        ddgddgd	d
gg      t        ddgddgd	d
gg      g}|D ]c  }||z  }t        t	        || j
                  rt        n
t        |                   t        |j                  d       t        |t        ||             e y )Nr  r  r	  r
  r   rf   r   r  r  r   r  rf   )r   r   r/   r   rI   r  r
   typer   r   r   )r   rN   r3  bsrS   results         r:   test_matmat_densez_TestCommon.test_matmat_dense  s    WYw/nnQ aUAa5!A'(&1Q%1qe1D*EF 	+A1WFJv$2D2Dw$q'RSu-Qq*		+r<   c                    t        j                  g dg dg dgddgddgg      }|j                         }| j                  |      }dD ]  }|j	                  |      }t        |j                  |       t        |j                         |       | j                  |d	z         j	                  |      }t        |j                  |       t        |j                         |d	z          | j                  |      j	                  |      }t        |j                  |       t        |j                         |        d
D ]Q  }|j	                  |      }t        ||       | j                  |d	z         j	                  |      }t        ||d	z          S y )Nr  r   r   r  )r  r   r   r   rf   r   r   )r-  r[  r.  r/  ru  rD   r\                @)r   dense)r|   r   r   r   asformatr   r   r   )r   rQ   r  r   rN   rS   r  s          r:   test_sparse_format_conversionsz*_TestCommon.test_sparse_format_conversions  sC   KK1QqE1Q%=AIIKNN1A 	/F

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

6"Aq!$qt$--f5Aq!B$'	(r<   c           	         t        g dg dg dg      }t        g dg dg      }t        ||      }| j                  |      }dD ]B  }t        |d|z         }dD ],  }d	D ]%  }t	         |||f
      j                         |       ' . D y )Nr  r  r   r   r  r  r#  r   r   r  )r-  to)r   rf   r   r   )r   rf   r   r  r   r  	blocksize)r   r   r   r   r   r   )	r   r@   rA   rQ   r  r   fnXYs	            r:   
test_tobsrz_TestCommon.test_tobsr  s    9Yy1277#$1InnQ 	DFdVm,B! D, DA q!f!5!=!=!?CDD	Dr<   c                      j                   }t        j                  g g      }||g fd} j                  d      }t	        t        j
                  |      j                         t        j
                  t        d                   t	        |j                  j                         t        d             t        t        |j
                  d        j                  D ]$  }t        t                    D ]  } |||        & y )Nc                    t        |   |       }j                  |      }|j                         }|j                         }t        |j	                         |       t        |j                         j	                         |       t        |j                  d      j	                         |       t        |j                  |j                         y )Nr   r  ri  )r   r   r   r   r   r   r?   )r?   r  r   r   rN   rS   r,  r   s         r:   r  z)_TestCommon.test_transpose.<locals>.check  s    51CNN3'E!AAqyy{A.q{{}446<uF;CCEqI!''*r<   r  r  r   r   rQ  )r   rJ   r   r   r   r   r   r   rf  r  r  r  r  r   )r   r.  r/  r  r  r?   r  r,  s   `      @r:   test_transposez_TestCommon.test_transpose  s    "5>
	+ v&2<<.668<<f6	8577??,eFm<j%//:(( 	 E3x=)  eQ 	 r<   c                 B      fd} j                   D ]
  } ||        y )Nc                     j                   |    }j                  |    }||z   }t        |||z          ||z   }t        |||z          y r>   )r  r  r   r?   r   r   sum1sum2r   s        r:   r  z)_TestCommon.test_add_dense.<locals>.check  sQ    //%(C%%e,E ;DtS3Y/3;DtS3Y/r<   r  r  s   `  r:   test_add_densez_TestCommon.test_add_dense  s&    	0 %% 	E%L	r<   c                 t      fd} j                   D ]#  }|t        j                  d      k(  r ||       % y )Nc                 "   j                   |    }j                  |    }|j                  t        k(  r)||z
  }t	        |||z
         ||z
  }t	        |||z
         y ||z   |z   |z
  }t	        |||z          ||z   |z   |z
  }t	        |||z          y r>   )r  r  r?   r  r   rV  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  r_  )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               5 }|j                  t        d       |j                  |      }|j                  |      }d d d        t        j                  t        |      t        |            }t        t              |       t        |j                  |j                         t        j                  t        |      t        |            }	t        t              |	       t        |j                  |	j                         y # 1 sw Y   xY w)Nr  r   scalar2r   rB  r|   zHTaking maximum .minimum. with > 0 .< 0. number results to a dense matrix)rJ   rm   complexfloatingr   ru   r;  r  r   r2  r(   maximumminimumr   r   r   r?   )r?   dtype2btyperQ   rR   r5  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	  sm   }}UB$6$67NN;#5#5e#<=NN7>>%#89 KKN)#KKO'!NN6*("NN7>>&#9: l""$ %

278 		!		!% JJwqz71:6Ewu~u5ekk2JJwqz71:6Ewu~u5ekk2% %s   &9G""G+)r  r`  rB  r|   )rJ   r   r  r   r   r   r?   )r   r  r?   rd  re  rj  rk  rl  s   `    @@@r:   test_maximum_minimumz _TestCommon.test_maximum_minimum  s    ((Iy)<=((Iy*=>hh	<FG	3@ %% 	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  FrH  )	r   r   r$  r   	__class__r   r   r   rT   )r   rQ   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  rV   )r  rJ   r   r   r   zipr   r   )r   rR   rQ   r@   rA   s        r:   test_iteratorz_TestCommon.test_iteratorF  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  r7  r  r  r  r  r   )r   r   rJ   r  r   r   r   r   r  r  r  r   )r   r   rN   rS   r  r  r  r  r3  r4  r5  dspespfsps                 r:    test_size_zero_matrix_arithmeticz,_TestCommon.test_size_zero_matrix_arithmeticM  s    BiKKKKKKKKKKGGQFOnnQnnQnnQnnQnnQnnQ 	3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@3773<//1266!Q<@ 	j#''1-j#''1- 	3<<,446Aq8IJ3<<,446Aq8IJ3<<,446Aq8IJ3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH3<<?224bkk!Q6GH 	j#,,2j#,,2 	3;;s+335qyy|D3;;s+335qyy|D3;;s+335qyy|D 	j#++s3j#++s3r<   c                    t        g       }|j                  d      }|j                  d      }|j                  d      }|||fD ]  }| j                  |      }t        |j	                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |       t        |j                         j                         |        y )Nr  r  r  )r   r   r   r   r  r   r  r  toliltodoktobsr)r   r   rN   rS   r  r  spms          r:   test_size_zero_conversionsz&_TestCommon.test_size_zero_conversions  s    BiKKKKKKQ 	9A..#Csyy{224a8syy{224a8syy{224a8syy{224a8syy{224a8syy{224a8	9r<   c                    t        j                  g dg dgt         j                        }t        t        d      5  | j                  |       d d d        | j                  |j                  t         j                              }t        t        d      5  | j                  |t         j                         d d d        y # 1 sw Y   sxY w# 1 sw Y   y xY w)N)g      @r   g?r_  r   zdoes not support dtyperd  )rJ   r   float16r  r  r   ru   r   )r   rN   A32s      r:   test_dtype_checkz_TestCommon.test_dtype_check  s    HHmY/rzzB:-EF 	NN1	 nnQXXbjj12:-EF 	2NN3bjjN1	2 	2		 		2 	2s   C"CC
Cc                 r     dd l t               }|j                  t               | fd       } |        y )Nr   c                     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 y )N)protocolr   )r   r$  r  HIGHEST_PROTOCOLloadsdumpsr   r   r   r   r   rG   itemsrI   rJ   r
   r  r   )r   r  sploadedkeyrH  pickler   s        r:   r  z&_TestCommon.test_pickle.<locals>.check  s   JJOO%E!&"9"9: ?!<<UX(NOU[[(..9"5==?H4D4D4FGU\\8??; !& 4 4 6 ?HC!#rzz2*30A0A#0FG$S%0S(Q<*30A0A#0FGx'8'8'= =>??r<   )r  r   r2  r(   )r   r5  r  r  s   `  @r:   test_picklez_TestCommon.test_pickle  s4    !

*+		? 
	?( 	r<   c                 .      fd}dD ]
  } ||        y )Nc                    | dk(  rt        j                  d       j                  j                  dv rt        j                  d       t	        t
        |       }j                  t        j                  d      j                  dd      dz        } ||j                               } ||      }t        |j                         |       y )	Nsignz2sign conflicts with comparison op support on Numpy)rD   r\  z%Unary ops not implemented for dok/lilr  r  r        4@)r  r  r   r   r   rJ   r   r   r   r   r   )r   ufuncrL  X0X2r   s        r:   r  z5_TestCommon.test_unary_ufunc_overrides.<locals>.check  s    v~ / 0zz  N2CDB%Eryy}44Q:S@AAqyy{#BqBrzz|R0r<   )sintanarcsinarctansinhtanharcsinharctanhrintr  expm1log1pdeg2radrad2degfloorceiltruncsqrtr  ra   )r   r  r   s   `  r:   test_unary_ufunc_overridesz&_TestCommon.test_unary_ufunc_overrides  s"    	1 	D $K		r<   c                    t        j                  g dg dg dg      }| j                  |      }t        |j	                  d      d u        t        |j                         ddgddgddgg       |j	                  d	       t        |j                         ddgddgg       |j	                  d       t        |j                         ddgddgddgg       |j	                  d
       t        |j                         g dg dg dg       |j	                  d
       t        |j                         g dg dg dg       |j	                  dd       t        |j                         ddgddgddgg       | j                  r |j                  dv r|j	                  d       n&t        t        t        t        f|j                  d       dD ]  }t        t        |j                  |        y )Nr   r   r   r  rf   r   r   r   r   r   r   r   r   rf   r   r   rf   r   rf   rf   rY  rs  )rf   r   r   r_  )r[  r/  ))r   rf   r  r  )rJ   r   r   r   resizer   r   r  r   r  r  rg  
IndexError)r   r  r  	bad_shapes       r:   test_resizez_TestCommon.test_resize  s   HHl""$ % NN1 D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)2)2)4 	5 	
199;)2)2)4 	5
 	
A199;!Q*+Q*+Q)1 	2 !((n"<HHQK:':JGSTU6 	;I*ahh	:	;r<   c                 4   | j                   }|j                  }|j                  |d      }t        |j	                         |j	                                |t
        vrt        t        ||             |j                  ||j                  d      }t        |j	                         |j	                                |t
        vrt        t        ||             |j                  |t        j                  d      }t        |j	                         |j	                                |j                  |d      }t        |j	                         |j	                                t        t        ||              dD ]  }||k(  r	|j                  |      }|j                  |d      }t        |j	                         |j	                                |j                  |d      }t        |j	                         |j	                                t        t        ||               y )NFr  )r?   r$  T)r/  r.  r[  ru  rD   r\  )r   r   ro  rC   r   NON_ARRAY_BACKED_FORMATSr   rT   r?   rJ   r   r   rC  )r   rQ   self_formatr   other_formatrR   s         r:   test_constructor1_basez"_TestCommon.test_constructor1_base  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)sr   r   r   r   r+   r  r%   r   r"   r   r   r   r    r   r$   r   r!   r  r#   r  r   r  classmethodr  r  r   r6  r9  rJ  rM  rS  rW  rb  rl  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markslowr
  r  r  r!  r3  r<  rD  rO  rS  rY  r[  r`  rb  rd  rz  r~  r3  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+  r0  r8  r>  rD  rN  rS  rY  r\  rm  rq  rt  ry  r  r  r  r  r  r  ra   r<   r:   r  r  )  s   @"KMMMMMMMG; ;.	1#J%N=~<|8t8tY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F
> E65!F
? F67A8$ Y Y 

 

 

 

 . ..'6R#6J &H &HP 9 9		
,02<*5=n!DF%3N>
;A3"32 #>0$X>64p+(2
D 86)DV:0)84t928*';R7r<   r  c                   $    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   YxY w# 1 sw Y   xY w# 1 sw Y   yxY w# t        $ r Y Qw xY w# 1 sw Y   y xY w)Nr  inconsistent shapesrd  zdimension mismatchunsupported operand)rJ   r  r   r$  r   r  r  r  rf  r   r   r  )r   rN   rS   r@   rA   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	%HA AAz1EF Qacc
AHAq!$ 9,AB 	!GA	 	C  "   			 	sB   H7>II I(I,7III	I)(I),I5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  rJ   can_castintr$  r   r   rp  r?   r   r   rN   rS   r   s        r:   r  z6_TestInplaceArithmetic.test_imul_scalar.<locals>.checkU	  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_scalarT	  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>.checkl	  s    //%(C%%e,E{{3{;JJLQHHJQ"1aiik2{{5%=JJLT	HHJT	"1aiik2 >r<   )r  rJ   r  r?   r  r  s   `  r:   test_idiv_scalarz'_TestInplaceArithmetic.test_idiv_scalark	  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  rd  )r   rJ   r&   r   r   r  r  r  )r   rN   rS   bps       r:   test_inplace_successz+_TestInplaceArithmetic.test_inplace_success	  s    NN266!9%NN266!9%^^BFF1I&	Q!V		RZZ\2FAaBAIIK6	Q!V		RZZ\2	Q!V		RZZ\29,AB 	!GA	 	 	s   E!!E*N)r   r   r   r  r  r  r  ra   r<   r:   r  r  	  s    6p.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 )Nrs  r  r   r   r   rf   r   r_  r   r  r   r   rn  )r  r   rR  )r  r   r  )
r   r   r   r  r   r;  r  r  r  __getitem__)	r?   r  rQ   rr  ru  r  r  r  r   s	           r:   r  z*_TestGetSet.test_getelement.<locals>.check	  s    w  (-.A q!A''CAaA2q\ 1r1 1A 1Q31Q3011 afu-B Jz95q}}bIJr<   r+   rJ   r?   r  s   `  r:   test_getelementz_TestGetSet.test_getelement	  s*    	J$ & 	#E"((5/"	#r<   c                 \      fd}t         D ]  } |t        j                  |              y )Nc                 |   j                  d|       }t               5 }|j                  t        d       | 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   r7  rl  r  r  r   r   r  r   r>  r  )r   r  r   r  )r   r   r  r   )rf   r   r  r   ))r   r  )r   r  r  r  ro  g     ^@r  )rA  )r   r   r2  r(   r;  rJ   bool_r   r   r  r  __setitem__r   r  rm   ra  r  )r?   rQ   r5  r  r  r   s        r:   r  z*_TestGetSet.test_setelement.<locals>.check	  s   uE2A"$ (

24UV**Q-$**S/$**Q-$**S/$**Q-$ ::a=%**Q-$(  "IIK$$$ 8 Dj!--UCD uW~. Cj!--BC MM%););<RXX% FA!)Q]]E1EF & =5( (s   B#F22F;r  r  s   `  r:   test_setelementz_TestGetSet.test_setelement	  s+    	FB & 	#E"((5/"	#r<   c                 h      fd} j                   D ]  } |t        j                  |              y )Nc                     j                  d|       }t               5 }|j                  t        d       d|d<   d d d        t	        |d   d       y # 1 sw Y   xY w)N)r   rV   r   r  r   )r   r  )r   r   r2  r(   r   r?   rQ   r5  r   s      r:   r  z9_TestGetSet.test_negative_index_assignment.<locals>.check	  s[    we4A"$ 

24UV% 51% s   AAr  r  s   `  r:   test_negative_index_assignmentz*_TestGetSet.test_negative_index_assignment	  s/    	& %% 	#E"((5/"	#r<   c           	           d\   fd}dddt        d      dfdt        d      ft        d      t        d      ffD ]  \  }} |||d        y )	Nr  rV   c                    | d|d|}j                  f      }t               5 }|j                  t        d       d|| |f<   d d d        t	        |j                         ||       t	        || |f   d|       y # 1 sw Y   9xY w)Nz ; r  r   r  )r   r   r2  r(   r   r*  )	r  r  nitemsr6   rQ   r5  r  r  r   s	         r:   	_test_setz3_TestGetSet.test_scalar_assign_2.<locals>._test_set	  s    EQEVJ/C1v&A"$ 

24UV!Q$  =!Q$C8	 s   A??Brf   r   r   r  r  r   r>  r   )r   r   r  r  r  r  r  s   `   @@r:   test_scalar_assign_2z _TestGetSet.test_scalar_assign_2	  s_    1	9 WhrB"eBiBir+- 	DAqaA	r<   c                     | j                  d      }t        j                  d      }t               5 }|j	                  t
        d       ||fD ]  }d|d<   d|d<   d|d<    	 d d d        t        |j                         |       y # 1 sw Y   $xY w)Nr  r  r   r7  r  r  r  r   rJ   r   r   r2  r(   r   r   r   rQ   rR   r5  r   s        r:   test_index_scalar_assignz$_TestGetSet.test_index_scalar_assign	  s    NN6"HHV  	CJJ.0QRV ###	 	199;*	 	s   /BBN)r   r   r   r  r  r  r  r  ra   r<   r:   r  r  	  s    #,##J#"	+r<   r  c                       e Zd Zd Zy)
_TestSolvec                    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               5 }|j                  t        d       t        |      j                  |      }d d d        t        ||z  |       y # 1 sw Y   xY w)Nr  r   r   r   r^  rm  )rJ   r   rd   r   rC  r-  r  r   r   r   r   r2  r(   r0   solver   )r   r  rQ   r@   rA   r  r  r5  s           r:   
test_solvez_TestSolve.test_solve
  sM    
		q1Q%w'IINN1IINN1Q3299>>!A##6 66IINN1s1v 	AqTAacF	s1v 	'AtAa!eH 1Aac!eH	' NN1  	!CJJ.?AQa A	! 	AE!$		! 	!s   51E>>FN)r   r   r   r  ra   r<   r:   r  r  
  s    %r<   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d      d	        Zd
 Zd Zd Zd Zd Zy)_TestSlicingc                 T   t        | j                  dt        j                        dddf   j                  t        j                         t        | j                  dt        j
                        dddf   j                  t        j
                         t        | j                  dt        j                        dddf   j                  t        j                         t        | j                  dt        j                        dddf   j                  t        j                         y )Nr   rV   r   r   r   r  )r   r   rJ   r   r?   rZ   r   r   r   s    r:   test_dtype_preservationz$_TestSlicing.test_dtype_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   rJ   r   rZ   r   r   r   r   r?   r   dtrQ   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  rV   r#  r   r   rf   r   rf   r   r  r   r   r_  r  r   r  r   r   r>     r   r  )r  r   r   r   r  r   r   r  r  r  slice)
r   rR   rQ   r0r1r2r   r  r  r  s
             r:   test_get_horiz_slicez!_TestSlicing.test_get_horiz_slice/
  s   LL,,Qr23NN1"&"4"4YA3aS/
B1RU8Qq!tW__%671R1W:qAaCy'8'8':;LL)Y	9EFNN11R1W:qAaCy'8'8':; LL)Y	9EFNN11R1W:qAaCy'8'8':;1RW:qBCy'8'8':; 	j!--%+r1BCj!--!U1a[1ABr<   c           	         t        d      j                  dd      }| j                  |      }| j                  rdndgdgdgf\  }}}t	        |dd|f   |dddf   j                                t	        |d d |f   |d d df   j                                t        g dg d	g d
g dg      }| j                  |      }t	        |dd|f   |dddf   j                                t	        |d d |f   |d d df   j                                t        g dg dg d
g dg      }| j                  |      }	t	        |d d |f   |	d d df   j                                t	        |dd |f   |	dd df   j                                t        t        |j                  t        d       df       t        t        |j                  dt        dd      f       y )Nr  r  rV   r#  r   r   rf   r  r  r_  r  r   r  r  r>  r  r   r  )r   r   r   r  r   r   r   r  r  r  r	  )
r   rR   rQ   c0c1c2r   r  r  r  s
             r:   test_get_vert_slicez _TestSlicing.test_get_vert_sliceD
  s   3K2&NN1"&"4"4YA3aS/
B1QqS"W:q1ay'8'8':;1QU8Qq!tW__%679iI>?NN11QqS"W:q1ay'8'8':;1QU8Qq!tW__%67 9iI>?NN11QU8Qq!tW__%671RS"W:qay'8'8':; 	j!--%+r1BCj!--!U1a[1ABr<   c                 d   t        d      j                  dd      }| j                  |      }t        |ddddf   j	                         |ddddf          t        |dd d df   j	                         |dd d df          t        |d ddd f   j	                         |d ddd f          t        g d	g d
g dg dg      }| j                  |      }t        |ddddf   |ddddf   j	                                t        |d d dd f   |d d dd f   j	                                y )Nr  r  rV   rf   r   r   r   r   r  r  r_  r  )r   r   r   r   r   r   )r   rR   rQ   r  r  s        r:   test_get_slicesz_TestSlicing.test_get_slicesZ
  s4   3K2&NN11QqS!A#X;..0!AaC1H+>1QR"W:--/12ss7<1SbS!"W:--/3B37< 9iI>?NN11QqS!A#X;!A#qs((;(;(=>1QU8Qq!"uX%5%5%78r<   c                    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)	rJ   r   r-  r   r  r  r  r   r   )r   v0r  s      r:    test_non_unit_stride_2d_indexingz-_TestSlicing.test_non_unit_stride_2d_indexingg
  s    YY^^B#	9r"1R61R6>2A
 	199;1R61R6>(:;	  	9++788	9s   A$ $Bc                    | j                  t        d      j                  dd            }| j                  |      }t	        |d   |d          t	        |d   |d          t	        |d   |d          t	        |t        d      df   |d          t	        |dt        d      f   |d          t	        |t        d      t        d      f   |d          t	        |d	d d f   j                         |d	d d f          t	        |d	ddf   j                         |d	ddf          t	        |t        d	      ddf   j                         |d	ddf          t	        |d d d	f   j                         |d d d	f          t	        |d
ddf   j                         |d
ddf          t	        |dddf   j                         |dddf          t	        |d	dd
f   j                         |d	dd
f          t	        |d	dt        d
      f   j                         |d	dd
f          t	        |dd	dd	f   j                         |dd	dd	f          t	        |dd d
d f   j                         |dd d
d f          t	        |d dd df   j                         |d dd df          t	        |d	dd df   j                         |d	dd df          t	        |dd d f   j                         |dd d f          t	        |dd d f   j                         |dd d f          t	        |t        d      d d f   j                         |dd d f          t	        |dd j                         |dd        t	        |dd j                         |dd        t        t        d	      t        d      d       }t	        ||d d f   j                         |d	dd d f          t	        |d d |f   j                         |d d d	df          y )Nr  r  rV   r  r  r  r   r>  rf   r   r  r  r   r  )	r  r   r   r   r   r   r   r	  r   )r   rR   rQ   r  s       r:   test_slicing_2z_TestSlicing.test_slicing_2r
  s   LL++Ab12NN1 	QsVQsV$QtWag&QuXah'QuRy|_QuX.Qr%)|_QuX.QuRyr*+AeH5 	Qq!tW__&!Q$0Qq!B$wZ'')1Q"W:6QuQx2~&..0!AqtG*= 	Qq!tW__&!Q$0QqsAvY&&(!AaCF)4QqsBwZ'')1QqS"W:6QqtQwZ'')1QrT1W:6QqtU1X~&..0!AbD!G*= 	QqsAaCx[((*Aac1Q3hK8Qqr12vY&&(!ABF)4Qrr2A2vY&&(!BQBF)4QqtRaRx[((*AadBQBhK8 	Qq!tW__&!Q$0Qr1uX%%'2q52QuRy!|_,,."a%9 	QqV^^%q1v.QqW__&!B0 $q'$q'$'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  rV   rf   r   r   r  r  r  r   r  r>  r   r  r  c                     |    }|    }|j                   dk(  rt        ||t        |              y |j                  dk(  r|j                  dk(  ry t	        |j                         |t        |              y Nra   r   )r   r   r  rl   r   r   )rN   r@   rA   rQ   rR   s      r:   check_1z,_TestSlicing.test_slicing_3.<locals>.check_1
  s^    !A!Aww"}Q47+66Q;166Q;&qyy{AtAw?r<   c                    t        | t        j                        rt        |       }n| }t        |t        j                        rt        |      }n|}| |f   }||f   }|j                  dk(  rt        ||t        | |f             y |j                  dk(  r|j                  dk(  ry t        |j                         |t        | |f             y r  )
rI   rJ   r
   r  r   r   r  rl   r   r   )rN   rS   aibir@   rA   rQ   rR   s         r:   check_2z,_TestSlicing.test_slicing_3.<locals>.check_2
  s     !RZZ(V!RZZ(V!Q$A"b&	Aww"}Q4A<066Q;166Q;&qyy{AtQF|Dr<   )
Nr   r   rf   r  r  r   r>  r  i)r  r   r   r   rJ   s_r   r   	enumerate	itertoolsproductrL   r	  )r   r$  slicesr  r  rN   r#  r  rS   extra_slicesr  rQ   rR   s              @@r:   test_slicing_3z_TestSlicing.test_slicing_3
  s   LL++Ab12NN1UURa&"Qq'2ab62add8R)R!WQqV*bBiEQrEQ1r!AwB)RWWR[	*		@ f% 	DAqAJ		E0 f% 	DAq!&) 11	
  (( -= ,>>?,@ B 	0GAq!AvaA/		0  	AAqMArNBN	r<   c                    | j                  t        d      j                  dd            }| j                  |      }|d   j                  dk(  sJ |d dddf   j
                  dk(  sJ |d	   j
                  d
k(  sJ |d   j
                  dk(  sJ |d   j
                  dk(  sJ |d dd d f   j
                  dk(  sJ |dd d d f   j
                  dk(  sJ |dd d d f   j
                  dk(  sJ |d dddf   j
                  |d dddf   j
                  cxk(  rdk(  sJ  J |ddd df   j
                  |ddd df   j
                  cxk(  rdk(  sJ  J |dddd f   j
                  |dddd f   j
                  cxk(  rdk(  sJ  J |d dddf   j
                  |d dddf   j
                  cxk(  rdk(  sJ  J |dd ddf   j
                  |dd ddf   j
                  cxk(  rdk(  sJ  J |dddd f   j
                  |dddd f   j
                  cxk(  rdk(  sJ  J | j                  r|dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rdk(  sJ  J y |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |dddf   j
                  |dddf   j
                  cxk(  rdk(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J |d   j
                  |d   j
                  cxk(  rd
k(  sJ  J y )Nr  r  rV   r  r   r   rf   r  )Nr   rf   Nr  )Nr   r  )r   N)rV   r   r   rf   r   )rf   )Nr   rf   )r   )r   Nrf   )r   rf   N)r  r   r   r   r   r   r  )r   rR   rQ   s      r:   test_None_slicingz_TestSlicing.test_None_slicing
  s   LL++Ab12NN1w||q   q!A#$$...!"((F222 z7***z7***q!}""g---D!}""g---At}""g---qsA$$$!Q,(=(=GGGGGG1dA$$!A#tQ,(=(=GGGGGG1a$$!A#q$,(=(=GGGGGGq!A#$$$1Q3,(=(=GGGGGGD!A#$$!T1Q3,(=(=GGGGGGAaC$$!QqS$,(=(=GGGGGG QqS!V9??a!Qioo======Q!V9??a1Q3ioo======Z=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEZ=&&!J-*=*=EEEEEEQ!V9??a1Q3ioo??????QqS!V9??a!Qioo??????Z=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGZ=&&!J-*=*=GGGGGGr<   c                 r   | j                  t        d      j                  dd            }| j                  |      }t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t	        |d   j                         |d          t        j                  t        d	
      5  |d    d d d        t        j                  t        d
      5  |d    d d d        t        j                  t        d	
      5  |j                  d    d d d        t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |d ddf   j                         |d ddf          t	        |dd df   j                         |dd df          t	        |d ddf   j                         |d ddf          t	        |dd df   j                         |dd df          t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |dd df   j                         |dd df          t	        |ddd f   j                         |ddd f          t	        |dd ddf   j                         |dd ddf          t	        |dddd f   j                         |dddd f          t	        |dddd f   j                         |dddd f          t	        |d dddf   j                         |d dddf          t	        |ddd df   j                         |ddd df          t	        |ddd df   j                         |ddd df          t        |d   |d          t        |d   |d          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr  r  rV   .).)r  .).r  ).r  zindex .5. out of rangerd  )r  .zindex .10. out of range).rV   r   rf   )r   r   .)r   .r   )r  r   r   r   r   r   r  r   r  rf  r   r   rS   rN   s      r:   test_ellipsis_slicingz"_TestSlicing.test_ellipsis_slicing  s   LL++Ab12NN11S6>>+QsV41T7??,ag61V9,,.&	:1V9,,.&	:1V9,,.&	:]]:-EF 	fI	]]:-FG 	gJ	]]:-EF 	CCK	 	1QRW:--/12s7<1S!"W:--/37<1RaRW:--/2A2s7<1S"1"W:--/37< 	1RaRW:--/2A2s7<1S"1"W:--/37<1QRW:--/12s7<1S!"W:--/37<1RS#X;..0!BCH+>1S"#X;..0!CH+> 	1QRCZ=002Aab!SjMB1QQRZ=002AaabjMB1S!QRZ=002AaabjMB1RaRCZ=002Abqb!SjMB1QRaRZ=002AabqbjMB1S!RaRZ=002AabqbjMBQy\1Y<0Qy\1Y<0;	 		 		 	s$   7P P	P,PP),P6c                    | j                  t        d      j                  dd            }| j                  |      }g d}dgdz  |z   }||z   }|gdz  }t	        t        ||df         ||df          t	        t        |d|f         |d|f          t	        t        ||df         ||df          t	        t        |d|f         |d|f          t	        t        ||d|f         ||d|f          t	        t        |d||f         |d||f          t	        t        |||df         |||df          t        t        d      5  |||f    d d d        y # 1 sw Y   y xY w)	Nr  r  rV   )TFTFTF.zshape mismatchrd  )r  r   r   r   r   r   r  r  )r   numpy_arN   ix5ix10
ix10_6Truefull_ixs          r:   test_ellipsis_fancy_boolz%_TestSlicing.test_ellipsis_fancy_bool/  ss   ,,vbz11!R89NN7#.w{S 3Y
&1*71Wc\?3WWc\5JK71S'\?3WS'\5JK71S#X;/c1BC71S$Y<0'#t)2DE71S#t^#45wsC~7NO71S#t^#45wsC~7NO71S$^#45wsD#~7NO:-=> 	c:o	 	 	s   EEc           	         | j                  t        d      j                  dd            }| j                  |      }t	        |dgdf   j                         |dgdf          t	        |ddgdf   j                         |ddgdf          t	        |ddgf   j                         |ddgf          t	        |dddgf   j                         |dddgf          t	        |dgddf   j                         |dgddf          t	        |ddgddf   j                         |ddgddf          t	        |dgddf   j                         |dgddf          t	        |ddgdf   j                         |ddgdf          t	        t        |ddgdddgf         |ddgdddgf          t	        t        |dddgddgf         |dddgddgf          y )Nr  r  rV   r  .rf   r   )r  r   r   r   r   r   r/  s      r:   test_ellipsis_fancy_slicingz(_TestSlicing.test_ellipsis_fancy_slicingE  s   LL++Ar23NN11aS#X;..0!QCH+>1aVS[>113Q1vs{^D1S1#X;..0!C!H+>1S1a&[>113QsQF{^D1aS!S[>113QsAs{^D1aVQ^,4461a&!S.8IJ1aS#q[>113QsC{^D1S1#q[>113QsQC{^D71aVS1a&%8#9:Aq!fcAq6>Q<RS71S1a&1a&%8#9:AcAq6Aq6>Q<RSr<   c                 ,   | 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 ellipsisrd  )..).r   .)r   r   r   r  r   r  r   rN   s     r:   test_multiple_ellipsis_slicingz+_TestSlicing.test_multiple_ellipsis_slicingV  s    NN6!9,,Q23]]:!KM 	hK	 ]]:!KM 	kN	 		 		 	s   A>/B
>B
BN)r   r   r   r  r  r  r  r  r  r  r  r  	fail_slowr*  r-  r0  r7  r9  r<  ra   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                 b   | j                  d      }t        j                  d      }t               5 }|j	                  t
        d       ||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_assignb  s    NN6"HHV  	 CJJ.0QRV  !A#a%!A#a%!A#a%!AB$!%R%( 	  	199;*	  	 s   AB%%B.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                 (   d| d|}j                  f      }t               5 }|j                  t        d       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   r2  r(   rJ   r   r   r   )	r  r  r6   rQ   r5  rR   r  r  r   s	         r:   r  z9_TestSlicingAssign.test_slice_assign_2.<locals>._test_setr  s    qe4u%C1v&A"$ 

24UV!Q$ !Q AAadG%aiik1cB s   BBrf   r   rV   r  r  r>  )r	  r   r  s   `   @@r:   test_slice_assign_2z&_TestSlicingAssign.test_slice_assign_2o  sl    1	C q]QdB(:$;aq"=NAha-/ 	DAqaO	r<   c                    | j                  d      }t               5 }|j                  t        d       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)NrR  r  rf   r  r  r  r   r,  rV   r  r   r   r   )	r   r   r2  r(   r   r   rJ   r   rf  )r   rR   r5  rQ   s       r:   test_self_self_assignmentz,_TestSlicingAssign.test_self_self_assignment  sN   NN5!  	GCJJ.0QRAcFAcFAcFAcFBAqsVAacFq1v~~/1Q31ABBArr"1"uXAacFrxx37EBAa{}}Acrc!eHq1v~~/111SbSU83C3C3EF#	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               5 }|j                  t        d	       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)NrR  rV   r   r   )r   r   r   )r   r  r   r_  r   r   r  r  r  r  r   r  r  r,  rf   )r   r   r   r2  r(   r   r   r   )r   rR   rk  blockr5  s        r:   test_slice_assignmentz(_TestSlicingAssign.test_slice_assignment  s    NN5!(!"!# $ A!u  		;CJJ.0QRAcFAcFAcFqSAacFqyy{H5))%,7Abqb!eHqyy{2A2rr62E:		; 		; 		;s   BCC!c                 h   | j                  d      }t               5 }|j                  t        d       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)NrR  r  r  r  r   r  r  r,  rV   r  rs  r  r  rH  )
r   r   r2  r(   r   rJ   r&   r   r   r   )r   rR   r5  rk  s       r:   "test_sparsity_modifying_assignmentz5_TestSlicingAssign.test_sparsity_modifying_assignment  s    NN5!  	2CJJ.0QRAcFAcFAcFAcF&&rvvay1AbqE	2 '''(;<199;1	2 	2s   AB((B1c                 <   | 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               5 }|j                  t        d       t        |      D ]3  \  }}|||<   |||<   t        |j                         |t        |             5 t        |      D ]d  \  }}t        |      D ]Q  \  }}	d|z  d|dz   z  z   |||	f<   d|z  d|dz   z  z   |||	f<   t        |j                         |t        ||	f             S f t        ddd      |d
dddf<   t        ddd      |d
dddf<   t        |j                         |       t	        j                  dd	d      d d d f   |dd	dd
f<   t	        j                  dd	d      d d  |dd	dd
f<   t        |j                         |       d d d        t!        t"        |j$                  dt'        t        d                   t!        t"        |j$                  dt        d             t!        t"        |j$                  d
t)        d       ft'        t        d                   t!        t"        |j$                  t)        d       dft'        t        d                   t!        t"        |j$                  t)        d       df|j+                                t!        t"        |j$                  g dg dgg dfg d       t!        t"        |j$                  g dg dg dgg dg dgfg d       t!        t"        |j$                  t)        d      d
fddgddgg       y # 1 sw Y   xY w)Nr  rf   r   r   r  r   r  r>  r  r   r  r  r  rV     r  d   r  r@  r  )r  r   r   r   rf   r  )r   r   r   r  )r   r   r   rp  rJ   r$  r   r   r2  r(   r%  r   r   r  r  r   r  r  r  listr	  r$  )
r   rQ   rR   r$  r(  r5  r  rN   r  rS   s
             r:   test_set_slicez!_TestSlicingAssign.test_set_slice  s_   NN6"%'(UURa&"Qq'2ab62add8QqV*bBiEQrEQ1r!AwB)RWWR[*
   	/CJJ.0QR!&) <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   E0N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   rJ   r  r   r   r  s      r:   test_assign_emptyz$_TestSlicingAssign.test_assign_empty  sL    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 )NrY  r   r   r   r  r_  )r   rJ   r  r   r   r   r   rQ   r@   s      r:   test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_slice  sV    NN2776?+HHQK!Q$!Q$199;Iy(IJr<   N)r   r   r   rA  rD  rF  rJ  rL  rR  rU  rX  ra   r<   r:   r?  r?  a  s.    +"G,;&2+(Z@Kr<   r?  c                   R    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)_TestFancyIndexingzTests fancy indexing features.  The tests for any matrix formats
    that implement these features should derive from this class.
    c                    t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  d|      }t        |d d ddgf   j                  |       t        |g dd d f   j                  |       t        |d d g f   j                  |       t        |g d d f   j                  |        y )Nr  r   F)FFFr  r   s      r:   #test_dtype_preservation_empty_indexz6_TestFancyIndexing.test_dtype_preservation_empty_index  s     88RXXrzz2::> 	-BvR0A1uen,-33R80!34::B?1b5,2q5,	-r<   c                 6   | j                  t        j                  ddg            }t        t        t
        t        f|j                  d       t        t        t
        t        f|j                  d       t        t        t
        f|j                  g dg df       y )Nr  foorf   r^  r  r  )r   rJ   r   r  r  r  r  r  r  s     r:   test_bad_indexz!_TestFancyIndexing.test_bad_index   sh    NN288QF+,z:y91==%Pz:y91==*Uz:. ,/	1r<   c           
         | j                  t        d      j                  dd            }| j                  |      }t	        |dg   j                         |dg          t	        |ddg   j                         |ddg          t	        |ddgf   j                         |ddgf          t	        |dddgf   j                         |dddgf          t	        |dddgf   j                         |dddgf          t	        |t        d      ddgf   j                         |dddgf          t	        |dt        ddg      f   j                         |dddgf          t	        |t        d      t        ddg      f   j                         |dddgf          t	        |d d g d	f   j                         |d d g d	f          t	        |dd
dgf   j                         |dd
dgf          t	        |dd
ddgf   j                         |dd
ddgf          t	        |dd
t        ddg      f   j                         |dd
ddgf          t	        |dgdf   j                         |dgdf          t	        |ddgdf   j                         |ddgdf          t	        |ddgdf   j                         |ddgdf          t	        |t        ddg      df   j                         |ddgdf          t	        |ddgt        d      f   j                         |ddgdf          t	        |t        ddg      t        d      f   j                         |ddgdf          t	        |dgd d f   j                         |dgd d f          t	        |ddgd d f   j                         |ddgd d f          t	        |ddgddf   j                         |ddgddf          t	        |t        ddg      ddf   j                         |ddgddf          t	        t        |dgd
gf         |dgd
gf          t	        t        |ddgdd
gf         |ddgdd
gf          t	        t        |ddgddgf         |ddgddgf          t	        t        |t        ddg      ddgf         |ddgddgf          t	        t        |ddgt        ddg      f         |ddgddgf          t	        t        |t        ddg      t        ddg      f         |ddgddgf          t	        |dgdggdd
gf   j                         |dgdggdd
gf          t	        |dgdgdggddgf   j                         |dgdgdggddgf          t	        |t        dgdgdgg      ddgf   j                         |dgdgdggddgf          t	        |dgdgdggt        ddg      f   j                         |dgdgdggddgf          t	        |t        dgdgdgg      t        ddg      f   j                         |dgdgdggddgf          t	        |ddg   j                         |ddg          t	        |ddg   j                         |ddg          t	        |t        ddg         j                         |ddg          t	        |dgd d f   d d d
gf   j                         |dgd d f   d d d
gf          t	        |ddgd d f   d d dd
gf   j                         |ddgd d f   d d dd
gf          t	        |ddgd d f   d d ddgf   j                         |ddgd d f   d d ddgf          t	        |t        ddg      d d f   d d t        ddg      f   j                         |ddgd d f   d d ddgf          t	        |dddggf   ddggdf   j                         |dddggf   ddggdf          t	        |dddggf   ddggdf   j                         |dddggf   ddggdf          t        j                  t        d      5  |d dddggf    d d d        t        j                  t        d      5  |ddggd df    d d d        t	        |d d ddgf   dd
gd d f   j                         |d d ddgf   dd
gd d f          t	        |d d ddgf   ddgd d f   j                         |d d ddgf   ddgd d f          t	        |d d t        ddg      f   t        ddg      d d f   j                         |d d ddgf   ddgd d f          t        t        d      t        d
      d       }t	        ||d d f   j                         |dd
d d f          t	        |d d |f   j                         |d d dd
f          t        j                  dggt              }t	        |||f   j                         |||f          t	        |g gg gf   j                         |g gg gf          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr  r  rV   r   r   r   rf   r  )rf   r  r   r   r  r  r  r  r  r>  r   zOnly 1D or 2D arrays allowedrd  r   )r  r   r   r   r   r   r   r  r   r  r	  r   rJ   r  )r   rR   rQ   r  r  s        r:   test_fancy_indexingz&_TestFancyIndexing.test_fancy_indexing  sY   LL++Ab12NN1 	QsV^^%q!v.Q1vY&&(!QF)4 	Qq1#vY&&(!AsF)4Qq1a&y\))+Qq1a&y\:QrAr7{^++-qaW~>QuRy1b')*224aQGnEQr5!R>)*224aQGnEQuRy%B.0199;QrAr7{^L 	Qq-'(002Aa6F4GHQqsQCx[((*AacA3hK8QqsRH}%--/1Q3R=1ABQqsE2r(O+,446!A#Bx-8HI 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w{^++-q!R"~>QuaW~r)*224aBnEQ2wb	)*224aBnEQuaW~uRy0199;Q2w{^L 	QsAvY&&(!QCF)4Q1vqy\))+Q1vqy\:Q2w"}%--/Ar7AbD=1ABQuaW~qt+,4461b'1R4-8HI 	WQsQCx[)1aS1#X;7WQ1v1v~./Aq6Aq6>1BCWQBx!R012Ar2hB6G4HIAeRHo2w./0!RHq"g4E2F	
 	Ar2hq"g./0!RHq"g4E2F	
 	AeRHouaW~567B8aW;L9M	

 	QaSzAq6)*224a!qc
QF8J6KLtbTB4 1b')*224tbTB4 1b')*	
 	ebTB4"&'!R0199;tbTB4 1b')*	
 	tbTB4 %B.0199;tbTB4 1b')*	
 	ebTB4"&'2w78@@BtbTB4 1b')*	
 	Q1vY&&(!QF)4QBx[((*Ar2hK8Qub"X'//11b"X;? 	QsAvYq1#v&..0!QCF)AsF2CDq!faiLQF#++-q!Q|A1vI/F	
 	r2hkN1q"g:&..0!RHaK.QG2L	
 	eRHoq !!UAr7^"34<<>r2hkN1q"g:&	
 	a1a&kNQF8Q;'//11Q!Q[>Aq6(A+3N	
 	a2r(mq"gY\*224aRH:6FByRS|6T	
 ]]:-KL 	bqbAq6(lO	]]:-KL 	1vhlO	 	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   h:<i:iic                    t         j                  j                  d       d}d}d}| j                  t         j                  j	                  ||            }t        j
                  ||dkD        }t         j                  j                  | dz   ||      }t         j                  j                  | dz   ||      }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          ||z   }	||z
  }
t        t        |j                  |	|f       t        t        |j                  ||
f       y )Nrc   r  r   r  r  r   r  )rJ   r   rd   r  r-  r  rh   r   r'   r   r   r  r  r  )r   NUM_SAMPLESrr  ru  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 .*rd  )r  r   r   r   rJ   r  r  r&  r'  r	  rI   r  r   r  )r   rr  ru  rR   rQ   row_long	row_shortcol_long	col_shortre  r  r  r  s                r:   test_missized_maskingz(_TestFancyIndexing.test_missized_masking  s   1LLA..q!45NN1 771q5-GGAE.	771q5-GGAE.	8%%y%+.y%+.
 	DAq !U#
1e(<z7 adG 	 s   .EE
	c                 F   t         j                  j                  d       | j                  t	        d      j                  dd            }| j                  |      }t        j                  t         j                  j                  ddd      t              }t        j                  t         j                  j                  ddd      t              }t        j                  t         j                  j                  ddd	      t              }t        t        ||         ||          t        t        |d d |f         |d d |f          t        t        ||         ||          t        t        ||d
kD           ||d
kD            t        j                  g d      }t        j                  g d      }t        t        |||f         |||f          t        j                  dt              }t        j                  dt              }d|d<   t        j                  dt              }d|d<   t        t        |j                  |       t        t        |j                  |       t        t        |j                  |       t        t        t         f|j                  |df       y )Nrc   r  r  rV   r   rf   r  r   r  r  )TFTTF)
FTTFTFFFFF)r   r  Tr  )r   r   r   )rJ   r   rd   r  r   r   r   r   rh   r  r   r   r   r  r  r  r  )	r   rR   rQ   re  r  rL  Z1Z2Z3s	            r:   test_fancy_indexing_booleanz._TestFancyIndexing.test_fancy_indexing_boolean  s   
		tLL++Ab12NN1HHRYY&&q!!&4DAHHRYY&&q!"&5TBHHRYY&&q!'&:$GWQqT]AaD)WQq!tW%qAw/WQqT]AaD)WQq1uX&!a%1HH56HH 9 : 	WQq!tW%qAw/XXgT*XXgT*4XXgT*4j!--4j!--4j!--4z:.1vFr<   c                    t         j                  j                  d       | j                  t	        d      j                  dd            }| j                  |      }t        j                  t         j                  j                  ddd      t        	      }| j                  |      }t        t        ||         ||          t        t        ||d
kD           ||d
kD            t        j                  t         j                  j                  ddd      t        	      }t        j                  t         j                  j                  ddd      t        	      }| j                  |      }| j                  |      }t        t        |j                  |       t        t        |j                  |       t        t        t         f|j                  |df       y )Nrc   r  r  rV   r   rf   r  r  r   r  )r  r  )r   rV   r   )rJ   r   rd   r  r   r   r   r   rh   r  r   r   r   r  r  r  r  )	r   rR   rQ   rL  XspZrM  ZspYsps	            r:   "test_fancy_indexing_sparse_booleanz5_TestFancyIndexing.test_fancy_indexing_sparse_boolean  sO   
		tLL++Ab12NN1HHRYY&&q!'&:$G  #WQsV_ad+WQq1uX&!a%1HHRYY&&q!'&:$GHHRYY&&q!'&:$G  #  #j!--5j!--5z:.QxHr<   c                     | j                  t        g dg dg dg            }t        j                  |j	                  d            dkD  }t        |d d |f   j                         ddgddgddgg       y )Nrs  r  r   r   )r   r   rJ   ravelr*  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  rJ   r   s     r:   test_fancy_indexing_seq_assignz1_TestFancyIndexing.test_fancy_indexing_seq_assign  s@    nnUQFQF#345j#//6288QqE?Kr<   c                    | j                  t        ddgddgg            }t               5 }|j                  t        d       |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   r2  r(   r   r   )r   r   r5  s      r:   test_fancy_indexing_2d_assignz0_TestFancyIndexing.test_fancy_indexing_2d_assign  s    nnUQFQF#345  	6CJJ.0QR"%q!fq!fn"5CAA	6 	WS\51a&1a&)9#:;	6 	6s   +BBc                 z   | j                  t        d      j                  dd            }d|dd d f<   d|d d df<   d|d<   | j                  |      }t	        j
                  g d      }t        t        ||         ||          t	        j
                  g t        	      }t        t        ||         ||          t        t        |||f         |||f          t	        j
                  g d
t        	      d d d f   }t        t        |||f         |||f          t        t        |||f         |||f          y )Nr  r  rV   r   r   rf   r   r   FFFFFr   r   r   rf   r   r  	r  r   r   r   rJ   r   r   r   r  r   rR   rQ   r  r  s        r:   test_fancy_indexing_emptyz,_TestFancyIndexing.test_fancy_indexing_empty  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`  rb  ri  ro  rt  rz  r~  r  r  r  ra   r<   r:   rZ  rZ    sE    -1{=z<4,G@I.O
L<0r<   rZ  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   )rL  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   rJ   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                 r   j                  f      }j                  t        j                  f            }t	               5 }|j                  t        d       d|| |f<   t        |      5  d|| |f<   d d d        d d d        t        |j                         |       y # 1 sw Y   ,xY w# 1 sw Y   0xY wNr  r   )
r   r  rJ   r   r   r2  r(   r  r   r   )r  r  rQ   rR   r5  r  r  r   s        r:   _test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_slice%  s    1v&ARXXq!f-.A"$  

24UV!Q$)!,  AadG  
 &aiik15      s$   )B-.B!6B-!B*	&B--B6r  rV   r  r   r  r>  rf   )r@  rP  )r	  rJ   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                 R   j                  d|       }t               5 }|j                  t        d       | 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   rk  r  r  )r   r   r2  r(   r;  r   r*  r  s      r:   r  zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.check7  s    vU3A"$ G

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

1&EFG G Gs   C5DD&r  r  s   `  r:   test_fancy_assignment_dtypesz5_TestFancyIndexingAssign.test_fancy_assignment_dtypes6  s*    		G & 	#E"((5/"	#r<   c                    | j                  d      }| j                  t        dd            }g d}d}t        |      }t               5 }|j	                  t
        d       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)NrR  r   r  r#  r  r   r   rf   r  rV   r  r_  )r   rV   r  r  rY  r  r  )r  r#  r   )r   r&   r   r   r2  r(   r  rf  r   r   r  rJ   r   r   r*  )r   rQ   rR   i0i1i2r5  r   s           r:   test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignmentE  s   NN5!NN3q8$2Y  #	/CJJ.0QR%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J4!A+KK$>K"K*A'KJ$	K'J1	,K4J>	9KK
	KK	KK"c                 d   | j                  t        d      j                  dd            }d|dd d f<   d|d d df<   d|d<   | j                  |      }t	        j
                  g d      }d	||<   t        t        |      |       t	        j
                  g t        
      }d	||<   t        t        |      |       d	|||f<   t        t        |      |       t	        j
                  g dt        
      d d d f   }d	|||f<   t        t        |      |       d	|||f<   t        t        |      |       y )Nr  r  rV   r   r   rf   r  r  *   r   r  r  r  s        r:   test_fancy_assign_emptyz0_TestFancyIndexingAssign.test_fancy_assign_emptyr  s	   LL++Ab12!A#!A##NN1HH89!WQZ#HHRs#!WQZ#!A#WQZ#HH_C048!A#WQZ#!A#WQZ#r<   N)r   r   r   r  r  r  r  r  ra   r<   r:   r  r    s    Y
"(#+/Z$r<   r  c                       e Zd Zd Zy)_TestFancyMultidimc           
      b   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}|D ],  \  }}t         j                  j                  d	       | j	                  t         j                  j                  d
d            }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          |d
z   }|dz   }t        t        |j                  ||f       t        t        |j                  ||f       t        t        |j                  ||gt        d       f       t        t        |j                  t        d       ||gf       / y )Nr   rf   r   r   r  rf   r  r  r  r   r   rf   r   r   rc   r  r  )rJ   r   r   rd   r  r-  r   r'   r   r   r  r  r  r	  )	r   setsre  r  r  r  rf  rg  rh  s	            r:   test_fancy_indexing_ndarrayz._TestFancyMultidim.test_fancy_indexing_ndarray  s   XXsQC!o&(;<XXsQC!o&)(=>XXyk"BHHqcA3_$=>XXi "((QC!qc?";<XXy),-XXy),-/  	LDAqIINN4 RYY^^Aq12Aq!AAaC&C}kkma!f%EEEE*ammeAY?*ammaY? *ammq!feDk5JK*ammeDkAq65JK%	Lr<   N)r   r   r   r  ra   r<   r:   r  r    s    Lr<   r  c                   $    e Zd Zd Zd Zd Zd Zy)_TestFancyMultidimAssignc                    t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }t         j                  j	                  dd      }t        j                  g dg dg      }t        j                  g dg d	g      }t        |      5  ||||f<   d d d        ||||f<   t        |j                         |       |dz   }|dz   }g d}t        |      5  ||||f<   d d d        ||||f<   t        |j                         |       t        |      5  d|||f<   d d d        d|||f<   t        |j                         |       t        t        |j                  ||f|       t        t        |j                  ||f|       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w
Nrc   r  r  rf   r   r  r  r  r  )rJ   r   rd   r  r-  r   r   r  r   r   r  r  r  )	r   r  r  rL  re  r  rg  rh  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                 r   j                  f      }t        |      5  t               5 }|j                  t        d       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   r2  r(   r  rJ   r   r   r   )r  r  rQ   r5  rR   r  r  r   s        r:   r  zR_TestFancyMultidimAssign.test_fancy_indexing_multidim_set.<locals>._test_set_slice  s    1v&A%a( *;*= 

24UV!Q$  RXXq!f-.AAadG%aiik15   s"   B-B!	B-!B*	&B--B6r   rf   r   r   r  r  r   rf   r  )r   r  r   )r  r   rf   )rJ   r   r  s   `   @@r:    test_fancy_indexing_multidim_setz9_TestFancyMultidimAssign.test_fancy_indexing_multidim_set  s    1	6 hhAA/01a&91a&)QFQF+;<#Y/)Y1GHJ 	"DAq Aq!	"r<   c           	      F   t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }t         j                  j	                  dd      }g dg dg}g dg d	g}||||f<   ||||f<   t        |j                         |       |D cg c]  }|D cg c]  }|dz   	 c} }}}|D 	
cg c]  }	|	D 
cg c]  }
|
dz   	 c}
 }}	}
g d}||||f<   ||||f<   t        |j                         |       d|||f<   d|||f<   t        |j                         |       t        t        |j                  ||f|       t        t        |j                  ||f|       y c c}w c c}}w c c}
w c c}
}	w r  )rJ   r   rd   r  r-  r   r   r   r  r  r  )r   r  r  rL  re  r  r  iirg  r  jjrh  r   s                r:   test_fancy_assign_listz/_TestFancyMultidimAssign.test_fancy_assign_list  sf   
		tLL1-.NN1IINN1a 	"	"!A#!A#QYY[!$/01!1%R"q&%11/01!1%R"q&%11!A#!A#QYY[!$!A#!A#QYY[!$j!--%A>j!--!EA> &1%1s0   =	FFF	F(F4FFFc                 
   t         j                  j                  d       | j                  t         j                  j	                  dd            }| j                  |      }g d}g d}|D cg c]  }|dz   	 }}|D cg c]  }|dz   	 }}g d}	t        j                  d      d d d f   }
t        t        |j                  |t        d       f|	       t        t        |j                  t        d       |f|
       y c c}w c c}w )Nrc   r  r  )r   rf   r   r   r  rf   )r  r   r   rf   r   r   )r   rf   r   r  r  r   r  )rJ   r   rd   r  r-  r   r   r  r  r  r	  )r   r  r  re  r  r  rg  r  rh  C1C2s              r:   test_fancy_assign_slicez0_TestFancyMultidimAssign.test_fancy_assign_slice  s    
		tLL1-.NN1"#$Ba$$"#$Ba$$"YYq\!T'"j!--%t1ErJj!--%+u1ErJ %$s   ,C;>D N)r   r   r   r  r  r  r  ra   r<   r:   r  r    s    ?B""?:Kr<   r  c                   ^    e Zd ZdZd Zej                  j                  d      d        Zd Z	y)_TestArithmeticz&
    Test real/complex arithmetic
    c                    t        g dg dg dg dgd      }t        g dg dg dg d	gd
      }t        g dg dg dg dgd      |_        t        |dz  j                  d      d|z         t        |j                  dz  j                  d      d|j                  z         t        |j                  dz  j                  d      d|j                  z         | j                  |      }| j                  |      }||||fS )N)g      g      @r         @r   r   )g      	@g     g      ?r   r   r   )r   r         rk  r   r   )r   r   g      @r   r   r   r   )g      ?r   r   r   r  g      @)g     ,@g      r   r   r  r   )r   g      @r   r   r   r   )g     2@      r   r   r   r   r   )g      ?r   r   r   r   g      )r       @r   r   r   g      @)r   r  r   r   r   r   )r  r   r   r   r   r      rZ   )r   r  r   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?  r@  r  )_TestArithmetic__arith_initr   r   r+   rJ   rD  ru   r   rm   ra  r  r   r?   r   r  r  r  r  r@   rQ   r  rA   rR   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?  r@  g+=)atol)r  r   rf  r   r+   rJ   rD  ru   r   rm   ra  r  r   r  rY   r   r?   r  s                r:   test_muz_TestArithmetic.test_muW  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  r=  r  r  ra   r<   r:   r  r    s5    &0 [[2)/ )/V0r<   r  c                   0    e 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       | j                  t        j                  d            }t        |j                         d       t        |j                         d       t        |j                         j                  |j                         t        j                  dt              j                  dd      }d|ddd d f<   | j                  |      }t        |j                         d       t        |j                         d       t        j                  d      t        j                  d      t        j                  d      fD ]G  }| j                  |      }t        t         |j                         t        t         |j                         I y )Nr  r   r  r  r      r   iir   rV   r   r  rf   r  r   rV   rV   r   )rJ   r   r   rZ   rg   r   r   r   r   r   ro   rY   r?   r   rp  r  r  )r   r?   r  rL  rw  s        r:   test_minmaxz_TestMinMax.test_minmaxs  s   jj"**bhh"--P 	%E		"E*221Q7Aq!A!$"%..GAq!A#&!$FAq!A#&!$#	%( NN299Q+33Aq9:QUUWa QUUW]]AGG,BQUUWb! NN288F+,QUUWa QUUWa QUUW]]AGG, IIb&..q3!A#q&	NN1QUUWa QUUWb! ((6"BHHW$5rxx7H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 |D ]  }|dd d f   }|dd d f   }	| j                   s|d dd d f   }|d dd d f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        |D ]  }|d d df   }|d d df   }	| j                   s|d d dd f   }|d d dd f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        | j                  t        j                  d            }| j	                  |      }||z   D ]x  }t        |j                  |d      j                         |j                  |             t        |j                  |d      j                         |j                  |             z | j                  t        j                  d            }| j	                  |      }ddg}
t        t!        j"                  ||
            }t        t!        j"                  ||
            }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } | j                  t        j                  d            }| j	                  |      }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } y )Nr  r  rV   r   r   r  rY  r   r  r>  r]  rW  Tr^  explicit)
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   )rV   r  r  Fr  )r  rJ   r   r   r   r   rY   r   ro   r   r  anyr  r   r   rQ  r&  r'  r  r  )r   rL  r  rL  	axes_evenaxes_oddr^  rk  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r:   test_minmax_axisz_TestMinMax.test_minmax_axis  sD   %%%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		  	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                    | 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 g d}|D ]  }|j                  |      }t        |j                         t        j                  ||             t        || j                        sJ |j                  |      }t        |j                         t        j                  ||             t        || j                        rJ  y )Nr  r  rV   r   r   r   r  rY  r   r  r:  )r   r  )r>  r   r   r   r]  )r  rJ   r   r   rp  r%  r   nanmaxr+  nanminr   r   rI   r   )	r   r  rL  X_nan_maximumX_nan_minimumri  r^  X_nan_maximaX_nan_minimas	            r:   test_nanminmaxz_TestMinMax.test_nanminmax  s   LL2..q4ELB!Q$!Q$$$&&$&&$NN1
{{=)))		!,,,
{{=)))		!,,, 	@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 ]W  }t        ||      }t        t        |d       t        t
        |d       t        t
        |d       t        t        |d	d	
       Y y )Nr#  r$  r%  )ro   rY   r   r]  r7  r8  r   r9  )r   r   r   r  r  r  )r   r   r   fnamer   s        r:   test_minmax_invalid_paramsz&_TestMinMax.test_minmax_invalid_params#  sv    Y! " s## 	;E5%(D*d3)T7)T4*d:	;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.sparser  r   r   rI   _minmax_mixinr   rJ   ro   rY   )r   r  r   r   s       r:   test_numpy_minmaxz_TestMinMax.test_numpy_minmax0  sy     	'Y! " s# eU001rvve}bffSk:rvve}bffSk: 2r<   c                 $   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                  t        j                  d            }	| j                  t        j                  d            }
ddg}t        j                  |	|
gg d|      D ]  \  }}}||j                  |   dk(  rot!        j"                  t$        d      5  |j                  ||       d d d        t!        j"                  t$        d      5  |j                  ||       d d d        | j&                  rt        j(                  d      }nt        j(                  |dk(  rdnd      }t        |j                  ||      |       t        |j                  ||      |        | j                  |      }t        |j                  dd      | j                  g d             t        |j                  dd      | j                  g d             t        j                  g d      }t        j                  g d      }|j*                  dk7  rd |d!<   | j&                  s"|j-                  d"      }|j-                  d"      }t        |j                  dd      |       t        t/        |j                  dd            |       t        j(                  d#      }| j                  |      }|j*                  dk7  r;t        |j                  d d      d       t        |j                  d d      d       y t!        j"                  t$        d      5  |j                  d d       d d d        t!        j"                  t$        d      5  |j                  d d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)$Nr   r  )r   r  rf   r   )r   r   r   r>  )r   r>  r  r  r  )r   rf   r   r   r  r   r  r  )r  r  r   )r  r  rV   )r   r  r  r]  r   r  r  TFr#  zCannot applyrd  r  r7  r  )r   r   r   r   )r   rf   rf   rf   )r   rf   r   r   r   )r   r   r   r   r   r  rf   r   r  r  )r  r  rJ   r   r   r  r   rI   r  r   argmaxargminr  r&  r'  r   r  r   r  r  r   r`  r   r   )r   r  r  D2D3D4D5r  r   D6D7	explicitsr^  r  rk  r  r  s                    r:   test_argmaxz_TestMinMax.test_argmaxB  sZ   &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  ^^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   U 	U-U:V U*	-U7	:VVN)	r   r   r   r  r  r  r  r   r  ra   r<   r:   r  r  r  s&    --^cTJ@8;;$M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  r]  r   r>  r   )r   ru   r  r   rJ   rZ   rg   r  ra  getnnzr   r*  r;   r?   r  r  )r   r   bool_datr   accepted_return_dtypesr  s         r:   test_getnnz_axisz _TestGetNnzAxis.test_getnnz_axis  s_   aVV!W  ::d#s#"$((BHH!5(,(:(:$$8<<T<2F4EF8<<>6848<<Q</Q@&a.&&(>?8<<Q</Q@&a.&&(>?8<<R<0&b/B&b/'')?@8<<R<0&b/B&b/'')?@j&q1r<   N)r   r   r   r  ra   r<   r:   r  r    s    2r<   r  c                     |r| S d }t        | j                        }| j                  j                         D ]"  \  }}|j                  d      s ||      ||<   $ t	        | j
                  dz   | j                  |      S )z
    Construct a class that either runs tests as usual (require=True),
    or each method skips if it encounters a common error.
    c                 B     t        j                          fd       }|S )Nc                      	  | i |S # t         t        t        t        t        f$ r t        j                  d      w xY w)Nr  )rg  r  r  r  r  r  r  )rN   r   fcs     r:   wrapperz6_possibly_unimplemented.<locals>.wrap.<locals>.wrapper  sF    Aq<B<'+Y
"N4 A ++&?@@As    4?)	functoolswraps)r  r  s   ` r:   wrapz%_possibly_unimplemented.<locals>.wrap  s'    __R A !A Nr<   test_NotImplemented)dictrG   r  
startswithr;  r   	__bases__)r  requirer  new_dictr   r   s         r:   _possibly_unimplementedr"    s    
 
		 %,,,,. 	,JD$w'!%d	, CLL#33MM 	r<   c	                 >   t         t        t        |       t        t        t
        t        t        |      t        t        |      t        t        |      t        t        |      t        t        |xr |      t        t        |xr |      t        t        |      t        t        |      f}	i }
|	D ]e  }|j                  D ]T  }|j                  d      s|
j!                  |      }|(t#        d|j$                   d| d|j$                         ||
|<   V g t'        d|	i       S )z
    Construct a base class, optionally converting some of the tests in
    the suite to check that the feature is not implemented.
    r  zTest class z overloads test z defined in TestBase)r  r"  r  r  r  r  r  r?  rZ  r  r  r  r  r  rG   r  getr  r   r;  )getsetslicingslicing_assignfancy_indexingfancy_assignfancy_multidim_indexingfancy_multidim_assignminmaxnnz_axisbasesnamesr  r   old_clss                 r:   sparse_test_classr2    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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d Zy)TestCSRc                     t               5 }|j                  t        d       t        |i |cd d d        S # 1 sw Y   y xY wNr  )r   r2  r(   r    r  argsrB   r5  s       r:   r   zTestCSR.spcreator  <      	.CJJ.0QRd-f-	. 	. 	.   !6?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   r/  )r   r   r   r  r   r  r  r   r`  r   r   r   rS   r4  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      @g      $@ri  g      "@rk  r  g      &@rl  g       @g      @r  rR  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   rJ   uint64r`  )r   r  r  r  r  r/  rB  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  r/  s        r:   test_constructor5zTestCSR.test_constructor52  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 rN  )r   r   r   r   rJ   rm   r?   signedintegerrQ  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   rY  r   r#  r  )r  r   r   r  )r   r   rJ   rg   r   r?   r  rZ   r   r  r  r   r   )r   r  r  ptrrN   rS   expected_dtypes          r:   test_constructor_smallcolz!TestCSR.test_constructor_smallcolC  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   rO  r   rf   r   rX  r   )r   rJ   rX   rZ   rY   r   rg   r   r   r  r?   r  r   r   )r   r  larger  rZ  rN   s         r:   test_constructor_largecolz!TestCSR.test_constructor_largecolU  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   rV   rY  r   rf   r  r  r  )r   r   r   r$  r  r   r  r   r   r  r  r  r3  r4  s         r:   test_sort_indiceszTestCSR.test_sort_indicesb  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  rc  rY  r   r  )r   r   r$  eliminate_zerosr   r`  r  r   re  s         r:   test_eliminate_zeroszTestCSR.test_eliminate_zerosl      -.01y!  $!8 Ghhj377A&388I.3;;=#++-8r<   c           	         | j                  t        j                  d      j                  dd      dz        }dD ]  }t	        t        | j                  |      d        t        ||             }t	        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                          t        t        |      |j                                       y )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  T)r   rJ   r   r   r   r  r   r   r   r   r  r  r   r   rL  r  r  s       r:   test_ufuncszTestCSR.test_ufuncsw      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  ra  rb  rc  rY  r   r  r   r  r  rf   r  r   rf   r   )r   r   r   r   r   re  s         r:   test_unsorted_arithmeticz TestCSR.test_unsorted_arithmetic      ay(y!  $!8 Gay*+y!  $!8 GcCi((*CKKMCKKM,IJr<   c                    t        j                  dgdgdgg      }t        j                  g d      }t         j                  j                  d       | j	                  t         j                  j                  dd            }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          y Nr   rf   r   r  rc   r  r  
rJ   r   r   rd   r  r-  r   r'   r   r   r   re  r  r  r  rf  s         r:   test_fancy_indexing_broadcastz%TestCSR.test_fancy_indexing_broadcast      HHqcA3_%HHY
		tLL1-.NN1!fC=++-CS!AaC&!r<   c                 B   t        j                  ddg      }t        j                  ddg      }t        j                  ddg      }t        j                  ddg      }| j                  |||f      j                         }t	        d|j
                         t        |j
                  t              sJ | j                  |||f      j                         }t	        d|j
                         |j                          t	        d|j
                         t        |j                  |       | j                  |||f      j                         }d|_        t	        d|j
                         t        |j                  |       |j                          t        |j                  |       y)z@Ensure has_sorted_indices memoizes sorted state for sort_indicesr   r   rf   TFN)rJ   r   r   r$  r   r  rI   r  r  r   r  )r   sorted_indsunsorted_indsr  r  rr  s         r:   test_has_sorted_indiceszTestCSR.test_has_sorted_indices  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                    | j                  t        j                  dg      t        j                  dg      t        j                  ddg      f      }t        d|j                         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                          t        d|j                         t        dt        |j                               | j                  |||f      j                         }d|_        t        d|j                         t        dt        |j                               |j                          t        dt        |j                               y)z=Ensure has_canonical_format memoizes state for sum_duplicatesrf   r   r   TFN)r   rJ   r   r   has_canonical_formatr$  rI   r  sum_duplicatesr   r  )r   rr  r  r  r  s        r:   test_has_canonical_formatz!TestCSR.test_has_canonical_format  sb    !rxx}bhh1v>NOPT1112((Aq6"xxA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'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   rY  r           r  )rJ   r   rZ   r   r   r  r?   rg   r   r  r  valsrN   rS   r  r  r  r  r  r@   s               r:   test_scalar_idx_dtypezTestCSR.test_scalar_idx_dtype      !288,((1BHH-xx{gv6lKgv6jIXXfBHH-bz>bz<|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX. Q1a# 	AE	r<   c                     | j                  t        j                  d      gdgfd      }| j                  |      }|j	                  dt        j
                  |j                  d         z         |d   dk(  sJ y N  r   )r  r  rY  r  rp  r   rJ   r   r   r  r  r   r  s      r:   test_setdiag_csrzTestCSR.test_setdiag_csr  i    4 1A37|LNN1			!bggaggaj))*yA~~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   r`  r  r   rN   rS   s      r:   test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zeros  sZ     	{+	{+A{{azz!}  A%%%r<   N)r   r   r   r  r   rJ   r  int_r   r   r  r=  r@  rB  rL  rR  rV  r\  r_  rf  rl  rq  rv  r|  r  r  r  r  r  ra   r<   r:   r4  r4    s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58(:0&r<   r4  c                       e Zd Zed        Zy)TestCSRMatrixc                     t               5 }|j                  t        d       t        |i |cd d d        S # 1 sw Y   y xY wr6  )r   r2  r(   r   r7  s       r:   r   zTestCSRMatrix.spcreator  <      	/CJJ.0QRt.v.	/ 	/ 	/r:  Nr   r   r   r  r   ra   r<   r:   r  r         / /r<   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d Zy)TestCSCc                     t               5 }|j                  t        d       t        |i |cd d d        S # 1 sw Y   y xY wr6  )r   r2  r(   r   r7  s       r:   r   zTestCSC.spcreator  r9  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  r.  )r   r   r   r  r   r  r  r   r`  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:   rB  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 )NrD  rE  rF  rR  r  r  r   rH  rI  rJ  rf   )r   r	   r   r   r   r   r   r`  )r   r  r  r  r  r.  s         r:   rL  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 NrO  rP  r  )r   r   )r   r   r   r   r   r  r  r  r.  s        r:   rR  zTestCSC.test_constructor5:  rS  r<   c                     g d}g d}g d}| j                  |||f      }t        |j                  d       t        t	        j
                  |j                  t        j                               y r  )r   r   r   r   rJ   rm   r?   rU  r  s        r:   rV  zTestCSC.test_constructor6B  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 )Nrh  ri  rj  rV   rf   rY  r   r  )r   r   r$  rk  r   r`  r  r   re  s         r:   rl  zTestCSC.test_eliminate_zerosK  rm  r<   c                 (   t        d      }t        g d      }g d}| j                  |||fd      }|j                         }|j	                          t        |j                  g d       t        |j                         |j                                y )Nr  ra  rb  r  rY  rd  )r   r   r   r$  r  r   r  r   )r   r  r  rZ  r3  r4  s         r:   rf  zTestCSC.test_sort_indicesV  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@ro  T)r   rJ   r   r   r   r  r   r   r   r   r  r  r   rp  s       r:   rq  zTestCSC.test_ufuncs`  rr  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  ra  rb  r  rY  r   rt  ru  )r   r   r   r   r   re  s         r:   rv  z TestCSC.test_unsorted_arithmeticl  rw  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 ry  rz  r{  s         r:   r|  z%TestCSC.test_fancy_indexing_broadcastw  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   rY  )r  r   r  r  r  )	rJ   r   rZ   r   r   r   r  r?   rg   r  s               r:   r  zTestCSC.test_scalar_idx_dtype  r  r<   c                     | j                  t        j                  d      gdgfd      }| j                  |      }|j	                  dt        j
                  |j                  d         z         |d   dk(  sJ y r  r  r  s      r:   test_setdiag_csczTestCSC.test_setdiag_csc  r  r<   N)r   r   r   r  r   rJ   r  r  r   r   r  r=  r@  rB  rL  rR  rV  rl  rf  rq  rv  r|  r  r  ra   r<   r:   r  r    sw    . . 88RWWbjj"--@K'7/,<	99
J	K"0r<   r  c                       e Zd Zed        Zy)TestCSCMatrixc                     t               5 }|j                  t        d       t        |i |cd d d        S # 1 sw Y   y xY wr6  )r   r2  r(   r   r7  s       r:   r   zTestCSCMatrix.spcreator  r  r:  Nr  ra   r<   r:   r  r    r  r<   r  c                   z    e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zd Zy)r  c                     | j                  d      }d|d<   d|d<   ||j                  z  }||j                  j                         z  }t        |j	                         |j	                                y )N)rV   r  rV   r  r  r  r   )r  rf  r   r   r   )r   rQ   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  r7  r  r  rV   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  r7  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   r,  rf   r  r   rJ  r  r  r  rR  r   r:  )	r  r   r   r   r  r   r   r   r  )r   r  r  rN   r.  rS   r/  s          r:   test_convertzTestDOK.test_convert  s   A1v& ###### 	199;q1u-uQy9 ggi3;;=1Q3/q; QAKKMQWWq!f%199;qs1u-uQy9 ggi3;;=1Q/q;r<   c                    t        t        | j                         t        g dg dg dgd      }| j                  |      }t	        |j
                  |j
                         t	        |j                         |       | j                  |      }t	        |j                         |j                                g dg dg}| j                  |t        j                        }t	        |j
                  t        j                         |j                         }t	        |j
                  t        j                         t        ||       y )Nr  r  r  r  r#  r  r   )r  r  r  r   r   r?   r   r   rJ   r   r   )r   rS   rQ   r  r  r  das          r:   	test_ctorzTestDOK.test_ctor  s    i!3!34 <|<cBq!QWWagg&QYY[!$ q!QYY[!))+.9%t2::6QWWbjj)YY[RXXrzz*2t$r<   c                     | j                  d      }d|d<   t        d|j                         vd       | j                  d      }d|d d df<   t        t        |j                               dk(  d       y )NrY  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r  r   keysr   r  s      r:   test_ticket1160zTestDOK.test_ticket1160  sl    u%# 	QVVX%'GH u%!A#AFFH"$@Ar<   N)r   r   r   r!   r   rJ   r  r   r   r  r  r  r  r  r  r  ra   r<   r:   r  r    s>    I77BJJ6K5
+;<>%*Br<   r  )r-  r.  c                       e Zd ZeZy)TestDOKMatrixN)r   r   r   r   r   ra   r<   r:   r  r        Ir<   r  c                       e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zd Zd Zd Zd	 Zy
)TestLILc                    t        dt        j                        }d|d<   d|d<   | j                  dt        j                        }d|d<   d|d<   t	        j
                         dk7  r4t        ||j                  z  ||j                  z  j                                t        ||j                         j                  z  ||j                         j                  z  j                                y )NrV   rV   rV   r  y              4@r  r   ppc64le)
r   rJ   r   r  platformmachiner   rf  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 )NrY  rf   r  r  r   )r  r   )r   r@   s     r:   test_scalar_mulzTestLIL.test_scalar_mul0  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   r  r  r   )addsubmul__i__r6  r   r   )皙?r  r  r   )	r  r  r$  r   r   r   rJ   r?   r  )r   rQ   rR   r  opr   rk  r=  s           r:   test_inplace_opszTestLIL.test_inplace_opsB  s   	956	9561q5z1q5z1q5z# &*ZZ\ 	E!B!VVXF)GFc"RL)%0v~~/1A1A1CD		E vRXXi-@ALL)	!Q$11QT7??,a0r<   c                     g dg dg}| j                  t        |            }t        |      D ]7  \  }}t        |j	                         t        ||   |j
                               9 y )Nr  r  )ndmin)r  r   r%  r   r   r   )r   row_datarR   r  r  s        r:   test_lil_iterationzTestLIL.test_lil_iterationV  sX    y)uX/l 	RFAss{{}eHQKsxx.PQ	Rr<   c                     | j                  d      }d|d<   d|d<   d|d<   d|d	<   d
|d<   |j                         }| j                  |      }t        |j                         |j                                y )Nr  rV   r  r  r  r  )r  r   r  )r   r  r  )r  r  )r  r  r   r   )r   rR   r   r  s       r:   test_lil_from_csrzTestLIL.test_lil_from_csr\  sp    x($$$$$GGIq!199;		4r<   c                     | j                  t        d      j                  dd            }| j                  |      }t	        |t        g d      ddf   j                         |t        g d      ddf          y )Nr  r  r  rf   r   )r  r   r   r  r   r   r   )r   rr  rQ   s      r:   test_fancy_indexing_lilzTestLIL.test_fancy_indexing_lilh  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 )NrR  r   r  rf   r  r   r  r  rJ  r7  r  rs  r_  r   r   r  )r   r  r   )r  r   r  r   )r   lr  s      r:   test_point_wise_multiplyz TestLIL.test_point_wise_multiplyo  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r<   c                 h    | j                  t        j                  d            }|dz  }d|dd d f<   y )NrY  rl  r   )r  rJ   r  r;  s     r:   test_lil_multiply_removalz!TestLIL.test_lil_multiply_removal  s0    rwwv/	R!Q$r<   N)r   r   r   r#   r   rJ   r  r   r   r  r  r  r  r  r  r  r  r  r  ra   r<   r:   r  r    sN    I77BJJ6KQ!?1(R
5/).r<   r  )r-  c                       e Zd ZeZy)TestLILMatrixN)r   r   r   r   r   ra   r<   r:   r  r    r  r<   r  c                       e Zd ZeZej                  ej                  ej                  gZ	d Z
d Zd Zd Zd Zej                   j#                  dd      d	        Zd
 Zd Zd Zd Zd Zd Zd Zy)TestCOOc                    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 )NrD  rE  rF  rR  r  r  r   rG  r   r   r   )r   r   r   r   r   r   rJ   rK  )r   r  r  r  r[  rB  s         r:   r=  zTestCOO.test_constructor1  s    5656CD  $Cy!1%86":--a3S[[]C   9a.Aq6Aq62B!C299 U	1~1v.bii@5#++-0r<   c                     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  rY  )r  r   r   r  )r  r  r   )r   r   r   r   )r   r  r  r  r[  r   s         r:   r@  zTestCOO.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 )NrR  )r   r   r   r  r  r  r   r   r   r[  s     r:   rB  zTestCOO.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 interpretedrd  )r   r     !   r  r  r  r  rY  )
r   r   r   r   r  r   r  r   r  r  )r   r   r[  rk  s       r:   rL  zTestCOO.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?   rJ   r   )r   r  r[  s      r:   "test_constructor_data_ij_dtypeNonez*TestCOO.test_constructor_data_ij_dtypeNone  sK    s  $!qc
!34 @yyBHHTN00000r<   FzCOO does not have a __getitem__runreasonc                      y r>   ra   r   s    r:   rt  zTestCOO.test_iterator      r<   c                     ddgg}| j                  |      j                         }t        |j                         |       y rk   )r   todiar   r   )r   r   ru  s      r:   test_todia_all_zeroszTestCOO.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 )NrR  r   rf   r   r   )r   r  r   r   r  r  r  r  s     r:   test_sum_duplicateszTestCOO.test_sum_duplicates  s      '  1Q%1Q%!A!893;;=Aa5!A-8  1Q%1Q%!A!893;;=Aa5!A-8377QC(377QC(388aS)r<   c                     | j                  g dg dg dff      }|j                         }t        |j                         |j                                y )NrH  rI  rJ  )r   r|  r   r   )r   r[  rD   s      r:   test_todok_duplicateszTestCOO.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 )NrH  rI  rJ  rf   )r   r  r   r`  r  )r   r[  r/  r.  s       r:   test_tocompressed_duplicatesz$TestCOO.test_tocompressed_duplicates  s^      )i-C!DEiikSWWq[#''*iikSWWq[#''*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 )Nrh  )r   r   r   r   r   r   r   r   ri  rc  rY  r   )	r   r   r$  rk  r   r  allr   r   )r   r  r  r  r3  r4  s         r:   rl  zTestCOO.test_eliminate_zeros  s    -.,-,-  $c
!36 BhhjQ##%&3;;=#++-8r<   c                    g dg dg dg}d}| j                  |      }|j                  |      }t        |j                  |j                  u        |j                  |d      }t        |j                  |j                  u        |j                  |d      }t        t	        j
                  |j                  |j                                y )Nr  r  r  r  Fr  T)r   r   r   r  rJ   rP   )r   rp   	new_shaper@   rA   s        r:   test_reshape_copyzTestCOO.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- rN  )-   )r  r  r   r  r   r  )r   r   r   r`  )r   mat1mat2s      r:   test_large_dimensions_reshapez%TestCOO.test_large_dimensions_reshape  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr<   N)r   r   r   r"   r   rJ   r  r   r   r  r=  r@  rB  rL  r  r  r  xfailrt  r
  r  r  r  rl  r  r  ra   r<   r:   r  r    s     I77BJJ6K1	/9>,1
 [[5)JK L1
*9
+99	Mr<   r  )r&  r'  r(  r)  r*  c                       e Zd ZeZy)TestCOOMatrixN)r   r   r   r   r   ra   r<   r:   r  r    r  r<   r  c                      e Zd ZeZej                  ej                  ej                  gZ	d Z
ej                  j                  dd      d        Z ed      d        Zej                  j#                  d	      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   r]  r   r   rf   r  rY  )r   rJ   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__r  c                      y r>   ra   r   s    r:   rt  zTestDIA.test_iterator6  r  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   rJ   r&   r   r  r?   rZ   r  rg   r   r  s     r:   test_setdiag_dtypezTestDIA.test_setdiag_dtype:  s    rvvay)QYY__bhh/			$!	QYY__bhh/rvvay)QYY__bhh/			$!	QYY__bhh/r<   zDIA stores extra zerosr  c                      y r>   ra   r   s    r:   r  zTestDIA.test_getnnz_axisF  r  r<   c                     | j                  g dgdgfd      }|j                         }t        |j                         j                         |       t        |j	                         j                         |       y )Nr  r   r:  rY  )r   r   r   r  r  )r   r  rk  s      r:   test_convert_gh14555zTestDIA.test_convert_gh14555J  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  rJ   ravel_multi_indexr  r  r   r  diffr  )r   r  	flat_indsinds_are_sorteds       r:   test_tocoo_gh10050zTestDIA.test_tocoo_gh10050Q  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   r]  r"  r   r  rY  )rJ   r   r#  rZ   r|   r$   r  r  r?   r  r  r  )r   r  r  ru  r[  r/  r.  s          r:   test_tocoo_tocsr_tocsc_gh19245z&TestDIA.test_tocoo_tocsr_tocsc_gh19245X  s    xx'..qq.9((:RXX6gf=iikww}}(((iik{{  BHH,,,iik{{  BHH,,,r<   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   rI   ro  r   r   r  )r   r  resres2s       r:   r  zTestDIA.test_mul_scalare  s    AA/0!e#q{{+++3;;=Aq6Ar7*;<zz!}$,,,4<<>QFQG+<=r<   N)r   r   r   r$   r   rJ   r  r   r   r  r=  r  r  r  rt  r   r'  r  r  r+  r1  r3  r  ra   r<   r:   r   r   '  s     I77BJJ6KU [[5)JK L Q	0  	0 [[56 7:9-	>r<   r   )r&  r'  r(  r)  r*  r-  r.  c                       e Zd ZeZy)TestDIAMatrixN)r   r   r   r   r   ra   r<   r:   r8  r8  q  r  r<   r8  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ej,                  j/                  dd      d        Zej,                  j/                  dd      d        Zd Zej,                  j/                  dd      d        Zej,                  j9                  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#  rG  r   r  )r   r   rV   r   )r   r  r  )r  r   r  rf   )r   r  rV   )r  r   r  r   r  r  rF  r   r  rY  )r   r   r   r   r   r   )r   r  r  r  rQ   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)r  r  r  )rV   r  )r   r  r,  )r  r   r  rI  r  r  r  rF  r#  rG  r=  rY  r  r  )rf   r  )r   r  r  )r   r   r   r   r   )r   r   rQ   s      r:   r@  zTestBSR.test_constructor2  s    B 	=EeA++A.668!<	= %LT''V'<DDFJT''V'<DDFJ)Ii0772CDT''*224a8T'''9AACQGT''V'<DDFJT''V'<DDFJT''V'<DDFJT''W'=EEGKT''W'=EEGKT''W'=EEGK)Ii0772CDT''V'<DDFJr<   c                     g dg dg dff}t        ddgddgg      }t        | j                  |d	      j                         |       y )
Nr  r  r  r   r   rf   r   r  rI  )r   r   r   r   )r   argrQ   s      r:   rB  zTestBSR.test_constructor3  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)rJ  r$  )rJ   r  r   r   rZ   r   r   )r   r  r  r  r  s        r:   rL  zTestBSR.test_constructor4  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   rT  rI  r  )rJ   r  r   r   r  r  r   )r   r  	data_1dimr  r  r  s         r:   rR  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   r,  rI  )rJ   r   rZ   r   r?   )r   rH   r  r  rS   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  rQ   AbsrAcsrAcsr_via_coos           r:   test_bsr_tocsrzTestBSR.test_bsr_tocsr  s   |$%Y"$ %Q#% &Q$& 'Q$& 'Q ,l;Y')!!4&"9!Izz|zz|))+T\\^Q'T\\^\%9%9%;<r<   c                    t        g dddgddgg      j                  }|j                  ddd      }t        g d      }t        g d      }| j	                  |||fd      }|j                         }|j                          t        |j                  d	       t        |j                         |j                                y )
Nrh  r   r   rf   ri  rj  )r  r  rY  r  )
r   rf  r   r   r   r$  rk  r   r`  r   re  s         r:   rl  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  rI  g?B   )r  rf   r   rk  r  )rJ   r   rd   r   r  rk  r   r`  r   r   r   r   r&  s     r:   test_eliminate_zeros_all_zeroz%TestBSR.test_eliminate_zeros_all_zero  s   
		qryy//9VL !"qvv}	QUUB166<<4 !"qvv}	QUUA166<<3199;(:; 	
QUUA166<<3199;(:;r<   c                     | j                  t        d      j                  dd      d      }t        |j                  d         j                  dd      }t	        ||z  |j                         |z         y )Nx   r  r  r  r  rI  r   r   r   r   r   r   r   r   rW  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 )	NrP  r  r  rQ  rI  r   r   r   rR  rW  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__r  c                      y r>   ra   r   s    r:   rt  zTestBSR.test_iterator  r  r<   zBSR does not have a __setitem__c                      y r>   ra   r   s    r:   r  zTestBSR.test_setdiag"  r  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  rI  r  r   r   rf   r   r  r  r  r  r  )	rJ   r   r   r   r  r   r   r  r  r  s      r:   test_resize_blockedzTestBSR.test_resize_blocked&  s   HHl""$ % NN1N/ D()199;!Q*+Q*+Q)1 	2 	
199;!Q*+Q)1 	2	199;!Q*+Q*+Q)1 	2 	
199;)5)5)7 	8 	j!((F3r<   c                      y r>   ra   r   s    r:   r
  z"TestBSR.test_setdiag_comprehensive=  r  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  rY  r  )r   r   r  )r   r   r  )
rJ   r   rZ   r   r   r  r?   rg   MemoryErrorr  )r   r  r  r  rN   rS   r  r  vals2vals3r  r  r@   s                r:   r  zTestBSR.test_scalar_idx_dtypeA  s    !288,((1BHH-xx	"gv6lKgv6jI|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.
	HH_-EHH]+E""E7F#;<"PA""E7F#;:"NA22 Q1a# 	AE	 Z( 	AA	s   'B2H, ,IIN)r   r   r   r%   r   rJ   r  r   r   r  r=  r@  rB  rL  rR  rE  rJ  rl  rN  rS  rU  r  r  r  rt  r  rY  r
  skipifIS_COLABr  ra   r<   r:   r:  r:  y  s	    I77BJJ6K'.K0MRJ(1=.	9<.-
-
 [[5)JK L [[5)JK L4. [[5)JK L [[)?@ Ar<   r:  )r&  r'  r(  r)  r*  r.  c                       e Zd ZeZy)TestBSRMatrixN)r   r   r   r   r   ra   r<   r:   rb  rb  b  r  r<   rb  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   r]  r   c              3   &   K   | ]	  }|d      ywr  ra   ).0ps     r:   	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>  s     ,QAaD,s   c              3   >   K   | ]  }|j                  d         yw)rf   N)r#  )re  r  s     r:   rg  z&_same_sum_duplicate.<locals>.<genexpr>  s     7w"7s   )
poprJ   rm   r?   r  unsignedintegerr  r#  rl   r  )r  indsrB   r  	zeros_pospospos1pos2s           r:   _same_sum_duplicaterp  n  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  }|rZ|d   j                  dz  }	t               5 }
|
j                  t        d       | 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   r2  r(   _insert_explicit_zero_arg1_for_noncanonicalr   r?   rJ   r   r  r   r   r  r  )r   r  rt  r8  rB   	constructrr  zero_pos	has_zerosr  r5  arg1NCrv  ro  s                 r:   r   z_NonCanonicalMixin.spcreator  sX    G%	a)$)&)IIK1$--/a[%%)	  !#A"$ R

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

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

aiik= RWW\&&() 	3R Rs   )6EE#z"bool(matrix) counts explicit zerosr(  c                      y r>   ra   r   s    r:   r  z_NonCanonicalMixin.test_bool  r  r<   z!getnnz-axis counts explicit zerosc                      y r>   ra   r   s    r:   r  z#_NonCanonicalMixin.test_getnnz_axis  r  r<   znnz counts explicit zerosc                      y r>   ra   r   s    r:   rb  z_NonCanonicalMixin.test_empty  r  r<   )r   r   r   r   r  r  r  r  r  rb  __classcell__)ro  s   @r:   rr  rr    s    16 #J [[AB C [[@A B [[89 :r<   rr  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   )rp  r  r  r  rs  r$  )r   rr  rt  r  r  r  startstops           r:   ry  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   ra   r   rr  r  r  s       r:   rx  z2_NonCanonicalCompressedMixin._insert_explicit_zero  s    !A#r<   N)F)r   r   r   ry  rx  ra   r<   r:   r  r    s    %r<   r  c                       e Zd Zd Zd Zej                  j                  dd      d        Zej                  j                  dd      d        Z	y	)
_NonCanonicalCSMixinc                 l      fd}t         D ]%  }dD ]  } |t        j                  |      |         ' y )Nc                 @   t        g dg dg dg dg|       }	j                  ||      }|j                  \  }}t        | |      D ]*  }t        | |      D ]  }t	        |||f   |||f           , dD ]#  }t        t        t        f|j                  |       % y )Nrs  r  r  r_  r   rs  r  )	r   r   r   r  r   r  r  r  r  )
r?   rt  r  rQ   rr  ru  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?   rt  s   `   r:   r  z$_NonCanonicalCSMixin.test_getelement  s;    	J  & 	7E"/ 7bhhuo~67	7r<   c                 d   t        j                  d      }| j                  |      }| j                  g dg      }|j                         |dd d f<   t	               5 }|j                  t        d       ||dd d f<   d d d        t        |j                         |       |j                         j                         |d d df<   t	               5 }|j                  t        d       |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   )
rJ   r&   r   r   r   r2  r(   r   r|  rf  )r   r  rQ   rR   r5  s        r:   test_setitem_sparsez(_NonCanonicalCSMixin.test_setitem_sparse  s    FF1INN1NNG9%!A#  	CJJ.0QRAacF	 	199;*""$!A#  	CJJ.0QRSSAacF	 	199;*	 		 	s    D*D&D#&D/Fz(inverse broken with non-canonical matrixr  c                      y r>   ra   r   s    r:   r~  z_NonCanonicalCSMixin.test_inv  r  r<   z&solve broken with non-canonical matrixc                      y r>   ra   r   s    r:   r  z_NonCanonicalCSMixin.test_solve  r  r<   N)
r   r   r   r  r  r  r  r  r~  r  ra   r<   r:   r  r    s`    7*+" [[5)ST U [[5)QR Sr<   r  c                       e Zd Zy)TestCSRNonCanonicalNr   r   r   ra   r<   r:   r  r        r<   r  c                       e Zd Zy)TestCSRNonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zy)TestCSCNonCanonicalNr  ra   r<   r:   r  r  
  r  r<   r  c                       e Zd Zy)TestCSCNonCanonicalMatrixNr  ra   r<   r:   r  r    r  r<   r  c                       e Zd Zd Zej
                  j                  dd      d        Zej
                  j                  dd      d        Zy)	TestBSRNonCanonicalc                 h    |j                         }d|||f<   |j                  |j                        S )Nr   rI  )r  r}  rJ  )r   rr  r  r  r@   s        r:   rx  z)TestBSRNonCanonical._insert_explicit_zero  s/    GGI!A#www--r<   Fz&diagonal broken with non-canonical BSRr  c                      y r>   ra   r   s    r:   r  z!TestBSRNonCanonical.test_diagonal  r  r<   z"expm broken with non-canonical BSRc                      y r>   ra   r   s    r:   rz  zTestBSRNonCanonical.test_expm  r  r<   N)	r   r   r   rx  r  r  r  r  rz  ra   r<   r:   r  r    s[    .
 [[5)QR S [[5)MN Or<   r  c                       e Zd Zy)TestBSRNonCanonicalMatrixNr  ra   r<   r:   r  r  !  r  r<   r  c                        e Zd ZddZd Zd Zy)TestCOONonCanonicalNc                 l    t        |j                  |j                  |j                        \  }}}|||ffS )r  )rp  r  r  r  )r   rr  rt  r  r  r  s         r:   ry  z*TestCOONonCanonical._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   )rJ   r_r  r?   r;  r  r  r  s       r:   rx  z)TestCOONonCanonical._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   rJ   r&   r  r  r   r  r.  r  r&  s     r:   test_setdiag_noncanonicalz-TestCOONonCanonical.test_setdiag_noncanonical1  sf    NN266!9%				1a&A		rwwquu~*+,r<   r>   )r   r   r   ry  rx  r  ra   r<   r:   r  r  %  s     
-r<   r  c                       e Zd Zy)TestCOONonCanonicalMatrixNr  ra   r<   r:   r  r  9  r  r<   r  c           	   #     K   | dk(  r&t         t        t        t        t        t
        t        g}n:| dk(  r&t        t        t        t        t        t        t        g}nt        d| d      dddddd	d
d	d}|D ]  }t        t!        |            D ]  }t#        ||      }|j%                  d      s!t#        |dd      r/g }|j'                  |      }t)        |      r$|t*        j,                  j/                  |      gz  }t#        |dg       }|D ]"  }	|	j0                  dv s|j3                  |	       $ t+        j4                  |||         yw)a  Yield all tests for all formats that use get_index_dtype

    This is more than testing get_index_dtype. It allows checking whether upcasting
    or downcasting the index dtypes affects test results. The approach used here
    does not try to figure out which tests might fail due to 32/64-bit issues.
    We just run them all.
    So, each test method in that uses cases_64bit reruns most of the test suite!
    r)   spmatrixzparameter sp_api=z& is not one of 'sparray' or 'spmatrix'z%expm for 64-bit indices not availablez)linsolve for 64-bit indices not availableztest implemented in base classz%test actually requires 64-bit to workztest verifies int32 indexesztest verifies int64 indexes)rz  r~  r  r  r  r\  r_  r3  r  r  Fr(  
pytestmark)r_  r  r  xslow)marksN)r:  r  r  r4  r   r  r  rb  r  r  r  r8  r  r  r  sorteddirr   r  r%  r  r  r  r  r   rL   param)
sp_apiTEST_CLASSES
SKIP_TESTSr  method_namemethodr  r6   markersr  s
             r:   cases_64bitr  >  s[     '7G
 !' 
:	%}m&& -fY.TUVV =?A!A)P%B%B*G	J  B!#c(+ 	BKS+.F&&w/6 nn[19fkk..c.:;;E!&,;# +Dyy$HHT*+ ll35AA	BBs   B*E-E;A"E2Ec            
           e Zd Zeeeeeee	e
eeg
Zd Zej                   j"                  d        Zej                   j"                  d        Zej                   j"                  d        Zy)	Test64Bitc                    t        j                  |      }|j                  dv r4|j                  j                  |k(  xr |j                  j                  |k(  S |j                  dk(  r4|j
                  j                  |k(  xr |j                  j                  |k(  S |j                  dk(  r|j                  j                  |k(  S t        d|d      )N)r.  r/  r-  r[  ru  zmatrix z has no integer indices)	rJ   r?   r   r  r  r  r  r  r  )r   r  r?   s      r:   _compare_index_dtypezTest64Bit._compare_index_dtype~  s    88,,IIOOu,K188>>U3JKXXEEKK5(Dquu{{e/CDXXIIOOu,-wqe+BCDDr<   c                 `     t        d       fd       } j                  D ]
  } ||        y )NrV   rr   c                 B    | t         j                  j                  dd            }t        j	                  |t         j
                                | t         j                  j                  dd            }t        j	                  |t         j                               y )NrV   r   r  )rJ   r   r-  r   r  rZ   rg   )mat_clsr  r   s     r:   r  z4Test64Bit.test_decorator_maxval_limit.<locals>.check  sg    		r1-.AD--a:;		r1-.AD--a:;r<   r   MAT_CLASSESr   r  r  s   `  r:   test_decorator_maxval_limitz%Test64Bit.test_decorator_maxval_limit  s:     
!b	1	< 
2	< '' 	G'N	r<   c                 `     t        d       fd       } j                  D ]
  } ||        y )NTr   c                 ,   d}d}t        d      D ]w  } | t        j                  j                  dd            }|xs  j	                  |t        j
                        }|xs  j	                  |t        j                        }|st|sw y  t        d      )NFrO  r  z#both 32 and 64 bit indices not seen)r  rJ   r   r-  r  rZ   rg   rt   )r  seen_32seen_64r  r  r   s        r:   r  z5Test64Bit.test_decorator_maxval_random.<locals>.check  s    GG3Z LBIINN1a01!KT%>%>q"((%K!KT%>%>q"((%KwL %%JKKr<   r  r  s   `  r:   test_decorator_maxval_randomz&Test64Bit.test_decorator_maxval_random  s<     
!	-
	L 
.
	L '' 	G'N	r<   c                 6   t        t        j                  d      d        }t        t        j                        d        } |t        t        t
                |t        t        t
                |t        t        t                |t        t        t               y )Nr   )rb   rw   c                     | ddgddgddgg      }t        t        |j                  d       t        t        |j                  d        |g d	g d
g      }t        t        |j                  d       t        t        |j                  d        |g d	g dg      }t        t        |j                  d       d|_        t        t        |j
                         y Nr   rf   r   r  r  r   r]  r   r  )r   r  r   rV  F)r  rt   ra  r*  r  r  r   r   r   rN   s       r:   check_limitedz3Test64Bit.test_downcast_intp.<locals>.check_limited  s     1v1v1v67A.!//B.!%%a8y)45A.!//B.!%%a8y)45A.!//B%*A".!*:*:;r<   rb   c                 @    | ddgddgddgg      }|j                  d       |j                  d        |g d	g d
g      }|j                  d       |j                  d        |g d	g dg      }|j                  d       d|_        |j                          y r  )ra  r*  r  r  r  s       r:   check_unlimitedz5Test64Bit.test_downcast_intp.<locals>.check_unlimited  s     1v1v1v67AOOO#EEqEMy)45AOOO#EEqEMy)45AOOO#%*A"r<   )	r   rJ   rg   r   r    r"   r   r   r   )r   r  r  s      r:   test_downcast_intpzTest64Bit.test_downcast_intp  sq     
!RXXq	I	< 
J	< 
!RXX	6	 
7	 	iI6	9i8j*j9
J
;r<   N)r   r   r   r   r   r   r   r   r%   r"   r   r    r$   r  r  r  r  thread_unsafer  r  r  ra   r<   r:   r  r  w  s     	J
J
9iIK
	E [[  [[ & [[*< *<r<   r  c                       e Zd Zd Zy)RunAll64Bitc                 8    t        di |d        } |||       y )Nc                      |        }t        |d      r|j                          	  t        ||              t        |d      r|j                          y y # t        |d      r|j                          w w xY w)Nsetup_methodteardown_method)r  r  r   r  )r  r  instances      r:   r  z,RunAll64Bit._check_resiliency.<locals>.check  sl    uHx0%%'/.+.08%67,,. 878%67,,. 8s   A A3ra   )r   )r   r  r  r   r  s        r:   _check_resiliencyzRunAll64Bit._check_resiliency  s*     
!	&2	&	/ 
'	/ 	c;r<   N)r   r   r   r  ra   r<   r:   r  r    s     r<   r  c                      e Zd Zej                  j                  d ed            d        Zej                  j                  d      ej                  j                  d ed            d               Z	ej                  j                  d ed            d        Z
ej                  j                  d ed            d        Zy)	Test64BitArraycls,method_namer)   c                 ,    | j                  ||d       y NrV   r  r  r   r  r  s      r:   test_resiliency_limit_10z'Test64BitArray.test_resiliency_limit_10      sKbAr<   rf   c                 ,    | j                  ||d       y NTr  r  r  s      r:   test_resiliency_randomz%Test64BitArray.test_resiliency_random       	sK=r<   c                 H    | j                  ||t        j                         y Nr  r  rJ   rZ   r  s      r:   test_resiliency_all_32z%Test64BitArray.test_resiliency_all_32      sKRXXFr<   c                 H    | j                  ||t        j                         y r  r  rJ   rg   r  s      r:   test_resiliency_all_64z%Test64BitArray.test_resiliency_all_64  r  r<   N)r   r   r   r  r  parametrizer  r  r=  r  r  r  ra   r<   r:   r  r    s    
 [[.I0FGB HB [[1[[.I0FG> H > [[.I0FGG HG [[.I0FGG HGr<   r  c                      e Zd Zej                  j                  d      ej                  j                  d ed            d               Zej                  j                  d ed            d        Z	ej                  j                  d      ej                  j                  d ed            d               Z
ej                  j                  d ed            d        Zej                  j                  d ed            d	        Zy
)Test64BitMatrixr  r  r  c                 ,    | j                  ||d       y )NT)r   r  r  s      r:   
test_no_64zTest64BitMatrix.test_no_64  s     	sKdCr<   c                 ,    | j                  ||d       y r  r  r  s      r:   r  z(Test64BitMatrix.test_resiliency_limit_10  r  r<   rf   c                 ,    | j                  ||d       y r  r  r  s      r:   r  z&Test64BitMatrix.test_resiliency_random  r  r<   c                 H    | j                  ||t        j                         y r  r  r  s      r:   r  z&Test64BitMatrix.test_resiliency_all_32  r  r<   c                 H    | j                  ||t        j                         y r  r  r  s      r:   r  z&Test64BitMatrix.test_resiliency_all_64"  r  r<   N)r   r   r   r  r  r=  r  r  r  r  r  r  r  ra   r<   r:   r  r    s    [[1[[.J0GHD I D
 [[.J0GHB IB [[1[[.J0GH> I > [[.J0GHG IG [[.J0GHG IGr<   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 broadcastrd  )r   rf   r   r  r,  rY  r#  r  )rJ   r   r   r   r   r    _broadcast_tor   r   broadcast_tor  r   r  )rN   rS   r  r  r  r  	containerres_ares_bres_cres_dres_eres_fs                r:   test_broadcast_tor  &  s   
)A
1#sQC!A
)Y'(A
1#A
1#A
)A )ZC ?	!**51!**51!**51!**51!**51!**515==?BOOAu,EF5==?BOOAu,EF5==?A.5==?BOOAu,EF5==?BOOAu,EF5==?BOOAu,EF]]:-BC 	Jy),-;;&;I	J ]]:-BC 	?yk"00v0>	? 	?#?	J 	J	? 	?s   J>K
>K	
K	r>   )NFNNF)T)	TTTTTTTTT)r   
contextlibr  r)  r  r&  sysr  r   r  numpyrJ   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   r   scipy.linalgr{   r  r|   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   scipy.sparse._baser*   scipy.sparse._sputilsr+   r,   r-   r.   r/   scipy.sparse.linalgr0   r1   r2   scipy._lib.decoratorr3   scipy._lib._utilr4   r   r`  r;   rC   	frozensetr  rT   r3  r2  r   r   r   r   r   r   r  r  r  r  r  r  r  r?  rZ  contextmanagerr  r  r  r  r  r  r  r"  r2  r4  r  r  r  r  r  r  r  r  r  r  r   r8  r:  rb  rp  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra   r<   r:   <module>r     s        
  *     , , ,  9 9 9 9 9
 (F F / / * +ckk)/
'
 %eW- (  !   > " JN?DNb$ $6"$ "$H 4 Do7 o7d?B BJc+ c+L % % %.@ @F
MK MK`Y0 Y0x B Bk$ k$\ L  LF_K _KD`0 `0F]5 ]5@	2 2:8 AE8<JN,0%'XC&! C&L    /L' /    W! Wt    /L' /    _Buu= _BDL'         mu- m`L'         GMu(-e/45J GMTL'         G>ueE/45',u> G>TL'         fu(-e/45).0 fRL'         .B0 0f#5  -7 -`	. 		 3] 		. 		 3] 	6 	 3] 	-,g -(	 3] 	
6Br_< _<H   & G[ G  G0 Gk G G:?r<   