
    Џkh\                    D	   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"m#Z# ddl$m%Z% ddl&Z'ddl(m)Z) ddl(m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< dd	l=m>Z> dd
l?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZGmHZH ddlImJZJ dej                  v ZLd|dZMd ZN eOdg      ZPd ZQ e!       ZReRj                  e#       	 	 d}dZTd ZU G d d      ZV G d d      ZW G d d      ZX G d d      ZY G d d      ZZ G d d       Z[ G d! d"      Z\ej                  j                   G d# d$             Z_ G d% d&      Z` G d' d(      Za G d) d*      Zbej                  d+        Zd G d, d-      Ze G d. d/      Zf G d0 d1      Zg G d2 d3      Zh G d4 d5      Zi G d6 d7      Zjd~d8Zk	 	 	 	 dd9Zl G d: d; el             Zmemj                           G d< d=eYem      Zoeoj                           G d> d? el             Zpepj                           G d@ dAeYep      Zqeqj                           G dB dC elddD            Zr G dE dFeYer      Zserj                          esj                           G dG dH eldI            Zt G dJ dKeYet      Zuetj                          euj                           G dL dM eldddddN            Zv G dO dPeYev      Zwevj                          ewj                           G dQ dR eldddddddS            Zx G dT dUeYex      Zyexj                          eyj                           G dV dW elddddddX            Zz G dY dZeYez      Z{ezj                          e{j                          d[ Z| G d\ d]      Z} G d^ d_e}      Z~ G d` dae~      Z G db dceem      Z G dd deeeo      Z G df dgeep      Z G dh dieeq      Z G dj dke~ez      Z G dl dmee{      Z G dn doe}ev      Z G dp dqeew      Zdr Z G ds dt      Z G du dv      Zej                  j                  ej                  j                   G dw dxe                    Zej                  j                   G dy dze             Zd{ Zy)z Test functions for sparse matrices. Each class in the "Matrix class
based tests" section become subclasses of the classes in the "Generic
tests" section. This is done by the functions in the "Tailored base
class for generic tests" section.

    N)raises)arangezerosarraydotasarrayvstackndarray	transposediagkroninf	conjugateint8)assert_equalassert_array_equalassert_array_almost_equalassert_almost_equalassert_assert_allclosesuppress_warnings)ComplexWarning)GenericAlias)
csc_matrix
csr_matrix
dok_matrix
coo_matrix
lil_matrix
dia_matrix
bsr_matrix	csc_array	csr_array	dok_array	coo_array	lil_array	dia_array	bsr_arrayeyeissparseSparseEfficiencyWarningsparrayspmatrix)_formats)supported_dtypesisscalarlikeget_index_dtypeasmatrixmatrix)spluexpminv)	decoratorzgoogle.colabc                 8    ||n| d|}t        | |v |       y )Nz not found in )msg)r   )member
collectionr8   messages       X/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/sparse/tests/test_base.py	assert_inr=   5   s'    _cVJnZN*SGFj g.    c                 b    t        | j                  |j                  k(         t        | |fi | y N)r   dtyper   )xykwargss      r<   assert_array_equal_dtyperE   :   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)rB   arraysas      r<   _underlying_arraysz3sparse_may_share_memory.<locals>._underlying_arraysD   sO     ""$ 	!A!RZZ"**45a 	! r>   TF)rL   may_share_memory)ABrQ   rP   bs        r<   sparse_may_share_memoryrV   A   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@   )r0   r   rL   iinfomaxint32r   intc)rO   maxvalcheck_contentstps       r<   new_get_index_dtypez4with_64bit_maxval_limit.<locals>.new_get_index_dtypeh   s]     @B"))288BHH+=+A+ABB"((N3bBGGm4Ir>   c                     S r@    )rO   r^   r_   fixed_dtypes      r<   ra   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypen   s	    r>     )seedc                 h    t         j                  t         j                  fj                  d         S )N   )rL   r\   int64randint)rO   r^   r_   counters      r<   ra   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypes   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   )
rL   r\   ri   r   rA   size
issubdtypeintegerr[   min)rO   r^   r_   rA   arrminvalmaxval_limits         r<   ra   z4with_64bit_maxval_limit.<locals>.new_get_index_dtypev   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)r[   AssertionErrorastyperL   intp)rr   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)Nr0   downcast_intp_index)scipysparse_bsr_coo_csc_csr_dia_dok_lil_sputils_compressed
_constructrN   getattrsetattr)funcrP   kwbackupmodulesmodnameoldfuncry   rz   ra   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#)rc   NF)rL   ri   randomRandomStater6   )	rt   r   rd   ry   assert_32bitr   rk   rz   ra   s	   ` ``  @@@r<   with_64bit_maxval_limitr   Y   s     xx| xx-	
 
	 		))''T'2	<	* "	'
 0 0* Kr>   c                 p    t        | t        j                        st        |       r| S | j	                         S r@   )rK   rL   r
   r/   toarray)rP   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 rightrc   selfmats     r<   __add__zBinopTester.__add__       $r>   c                      yr   rc   r   s     r<   __mul__zBinopTester.__mul__   r   r>   c                      yr   rc   r   s     r<   __sub__zBinopTester.__sub__   r   r>   c                      yNmatrix on the leftrc   r   s     r<   __radd__zBinopTester.__radd__       #r>   c                      yr   rc   r   s     r<   __rmul__zBinopTester.__rmul__   r   r>   c                      yr   rc   r   s     r<   __rsub__zBinopTester.__rsub__   r   r>   c                      yr   rc   r   s     r<   
__matmul__zBinopTester.__matmul__   r   r>   c                      yr   rc   r   s     r<   __rmatmul__zBinopTester.__rmatmul__   r   r>   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   rc   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   rc   r   s     r<   r   zBinopTester_with_shape.__add__   r   r>   c                      yr   rc   r   s     r<   r   zBinopTester_with_shape.__mul__   r   r>   c                      yr   rc   r   s     r<   r   zBinopTester_with_shape.__sub__   r   r>   c                      yr   rc   r   s     r<   r   zBinopTester_with_shape.__radd__   r   r>   c                      yr   rc   r   s     r<   r   zBinopTester_with_shape.__rmul__   r   r>   c                      yr   rc   r   s     r<   r   zBinopTester_with_shape.__rsub__   r   r>   c                      yr   rc   r   s     r<   r   z!BinopTester_with_shape.__matmul__   r   r>   c                      yr   rc   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   rc   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eqrc   r   others     r<   __eq__zComparisonTester.__eq__       r>   c                      y)Nnerc   r   s     r<   __ne__zComparisonTester.__ne__   r   r>   c                      y)Nltrc   r   s     r<   __lt__zComparisonTester.__lt__   r   r>   c                      y)Nlerc   r   s     r<   __le__zComparisonTester.__le__   r   r>   c                      y)Ngtrc   r   s     r<   __gt__zComparisonTester.__gt__   r   r>   c                      y)Ngerc   r   s     r<   __ge__zComparisonTester.__ge__   r   r>   N)	r   r   r   r   r   r   r   r   r   rc   r>   r<   r   r      s     r>   r   c                   N    e Zd ZdZeZeZeZ	e
ZeZeZeZ ee      Zd Zd Zd Zy)_MatrixMixinz8mixin to easily allow tests of both sparray and spmatrixc                    t        | j                  j                  d      j                         | j                  dgd d f          t        | j                  j                  d      j                         | j                  dgd d f          y N   )r   datspgetrowr   datr   s    r<   test_getrowz_MatrixMixin.test_getrow  sd    4::,,Q/779488QCF;KL4::,,R088:DHHbT1W<MNr>   c                    t        | j                  j                  d      j                         | j                  d d dgf          t        | j                  j                  d      j                         | j                  d d dgf          y r   )r   r   getcolr   r   r   s    r<   test_getcolz_MatrixMixin.test_getcol  sd    4::,,Q/779488AsF;KL4::,,R088:DHHQW<MNr>   c                    | j                  t        dd      j                  dd            }t        |j	                         j
                  t        j
                  d             t        |j	                         j                  |j                         t        |j                  d      j	                         j
                  t        j
                  d             t        |j                  d	      j	                         j
                  t        j
                  d	             |j	                         }|j	                         }t        ||u        y )
N   r\   rA   rh      float64int16float32
complex128)
	spcreatorr   reshaper   asfptyperA   rL   formatrw   r   )r   rS   rT   Cs       r<   test_asfptypez_MatrixMixin.test_asfptype  s    NN6!'2::1Q?@QZZ\''))<=QZZ\((!((3QXXg&//177)9LMQXXl+446<<bhh|>TUJJLJJLQr>   N)r   r   r   __doc__r    bsr_containerr   coo_containerr   csc_containerr   csr_containerr   dia_containerr   dok_containerr   lil_containerstaticmethodr1   asdenser   r   r   rc   r>   r<   r   r   	  sC    BMMMMMMM8$GOO
r>   r   c                      e Zd ZdZeZeZeZ	e
ZeZeZeZeZeZed        Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0e1jd                  jf                  d        Z4d Z5d Z6d Z7d  Z8d! Z9d" Z:d# Z;d$ Z<d% Z=d& Z>d' Z?d( Z@d) ZAd* ZBd+ ZCd, ZDeEd-        ZFeEd.        ZGeEd/        ZHeEd0        ZId1 ZJd2 ZKeEd3        ZLeEd4        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 ZrdZ Zsd[ Zty\)]_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   rh   )r   r   r   r   )r   rh   r   r   d)r   r   r   r   setr.   unionmath_dtypeschecked_dtypes
dat_dtypesdatsp_dtypesrw   r   rL   r   r   rK   r+   is_array_test)clsrA   s     r<   
init_classz_TestCommon.init_class8  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   )rA   r   r   s     r<   checkz$_TestCommon.test_bool.<locals>.checkQ  sL    %%e,E*dE2DNNQC5)*u--.r>   z%Cannot create a rank <= 2 DOK matrix.)rK   TestDOKpytestskipr  r   r  rA   s   `  r<   	test_boolz_TestCommon.test_boolP  s=    	/ dG$KK?@(( 	E%L	r>   c                     t        ddgg      }| j                  |      }t        d      D ]  }||z   }||z   } t        ||j	                                y )NTFrX   )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  rE   r   rL   nan)
rA   r   r   dat2datsp2datbsrdatcsrdatcscdatlilr   s
            r<   r  z"_TestCommon.test_eq.<locals>.checkl  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  rA   s   `   r<   test_eqz_TestCommon.test_eqh  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  rE   r   rL   r'  )
rA   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.  r2  r3  r6  s   `   r<   test_nez_TestCommon.test_ne  sr    !

*+			B 
 
	B8 ::$99KKRS(( 	E%L	r>   c                     | j                   j                  dvrt        j                  d       | j                   | j                   j                  k(  du sJ | j                   | j                   j                  k7  du sJ y )Nr.  r2  FT)r   r   r  r  Tr   s    r<   test_eq_ne_different_shapesz'_TestCommon.test_eq_ne_different_shapes  s`    ::$99KKRS

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

djjll*t333r>   c                      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         ?      ?)rh   r   r   r   ignoreinvalidr  r  r&  r   rw   complexr   r   r  r  rE   r   rL   ri   errstater'  rA   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.  r2  r3  r6  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rA  rG  rJ  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 7rN  r.  r2  r3  r6  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   rB  )rh   r   r   rC  r  r  r&  r   rw   rH  r   r   r  r  rE   r   rL   ri   rJ  s               r<   r  z"_TestCommon.test_le.<locals>.check<      //%(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.  r2  r3  r6  s   `   r<   test_lez_TestCommon.test_le8  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 rU  rV  rJ  s               r<   r  z"_TestCommon.test_ge.<locals>.checkv  rW  r>   r.  r2  r3  r6  s   `   r<   test_gez_TestCommon.test_ger  rY  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   coor1  r0  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)Nr_  )Nr   r   r   rC  rb  znot implemented .* formatmatchr   )	r   r   r=  rL   rf  r   r   r  NotImplementedError)r   axis_supportaxesrS   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   rd  r   r   rC  dia(1 diagonals) r/  (blocksize=1x1)  r   r2   < sparse  of dtype ''
	with  stored elements 
and shape >)r   r   r-   r  rA   re  r   reprr   r   extrar!  fmt
sparse_clsro  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   ry     r   )maxprintrX   )r  r   iF   )r   rA   r&  r  z'positional argument|unpack non-iterableri  )r   rL   r   r   r  r   strsplitr   re  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 )Nrw  rd  rx  rh   ry  rz  r/  r{  r|  r   r2   r}  r~  r  r  r  r  z(>
  Coords	Values
  (0, 0)	1
  (2, 2)	-2)r   re  r   r-   r  rA   r   r  r  s          r<   test_strz_TestCommon.test_str  s    	9jAB99> % 5',||u'<# 	
 %,,'3 $ 2 2W
uHZLEKK= Aii[ 1%
5;;- P 	 5zX%%%r>   c                    d}t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      fD ]  }| j                  ||      }||z   }d|z  }||j                         z  }||j	                         z  }||j                         z  }||||||fD ]u  }	t        |	j                         |j                         |j                         z         t        |	j                  |       t        |	j                         j                  |       w  y )	Nr  r  r\   r   r   	complex64r   r   rh   )rL   rA   r   tocsctocsrtocoor   r   )
r   r   mytyperP   rU   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   rd  r
  )r   r   absr   r   r   rS   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   rL   aroundroundr   r   )r   decimalrS   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  rC  r   r   r   rh   r   r  r
  rh   )r   r   rL   powerr   r   r  rk  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  rd  r
  )TFF)FFT)r   r   r   r   r  rk  __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   DrS   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   rh   r   r   rh   r   r   r   r   )r   r   rh   r   r   r   r  r   rh   r   r  krX   i)(   i?  r  r   r   )r  r   r   r  )rN   r   r   r   r   r   r   diagonalr   rL   r   empty)r   matsr  rowscols
sparse_matr  s          r<   test_diagonalz_TestCommon.test_diagonal2  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   rh   r   r  r  r   )      	   rC  r   )offsetr   )rL   r   r   r   r   trace)r   rS   rT   r  s       r<   
test_tracez_TestCommon.test_traceS  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  rd  r  )r   r   r  )r   F))   r   )r   r  orderr   rX   r   r   r   r   r   r   r         r  rh   r   )r   rX   r   r   r   r   )r   r   r   r  r  r  rh   r   )r   r   rt  rh   r   r   )
not_an_argr   r  Tr&  zhas no setter|n't set attributeri  )r   r   r   r   r  r  r  r   r   r  AttributeErrorrn   )r   rB   r  srC   desireds         r<   test_reshapez_TestCommon.test_reshape`  s   NNIy)YGH 	HE' H"199Qe9#<#D#D#F#$99;#6#6q#6#FHH	H NNM<IJIIf&(=>199;0 IIg199;0IIg199;0j!))X6 IIaO199;0iAqQ? IIfQIIf4I(
 	177F+~5VW ! ! ! AGqyy{G4 	j!))affY7j!))a^<! !s   /I00I9c                    fdfd}t         j                  j                  d       g d}t         j                  t         j                  fD ]  }|D ]  \  }}t        j
                  | dz   |dz
        }|D ]}  }t        j                  ||f|      }| j                  ||f|      }	 |||	|       t         j                  j                  |t        t        |      d            D ]  }
 |||	|
           y )	Nc                    t        j                  |      }|dk\  rt        | j                  d   | j                  d   |z
        }|j                  dk7  rt        |t        |            }|d | }t        j                  d|      }t        j                  |||z         }|| ||f<   y |dk  r | j                  ||        y y r%  )rL   r   rq   r   r   r   r   r=  )rP   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   rh   r  r   r   r  rn   zChanging the sparsity structuz	{msg} {r}err_msg)r   rL   r   r   choicer   rj   r   r4  r*   setdiagr   r   r   rq   r   )	rP   rU   r  rr  r7  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!	re   )r  r  r   r   r  r  r   r  r   r   r  r  )rL   r   rf   r   r   r   r   r   r  rq   r   )r   r  shapesrA   r  r  ksr  rP   rU   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   rh   r   Changing the sparsity structurer  r  r   )r   r   r   )r   rh   rh   r  rC  r   r   r   )r  rh   r   rh   r  rh   r   r   r   r   r   r   )r   r   r   r   )r   rL   r(   r   r4  r*   r  r  r  r   r  r   r   )r   r  m2rJ   r7  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   rS   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   rL   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 )
Nre   r   r   rh   r   r  r  r  r  r  )r  r  g{Gz?)densityc                    j                  |   |       }j                  ||       }t        j                  d      5  t	        |j                         |j                                t        |j                         j                  |j                         j                         t        t        j                  |j                  d                    t	        |j                  d       |j                  d              t        |j                  d       j                  |j                  d       j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d      |j                  d             t        |j                  d      j                  |j                  d      j                         t	        |j                  d	      |j                  d	             t        |j                  d	      j                  |j                  d	      j                         d d d        y # 1 sw Y   y xY w)
Nr   rD  )overrb  r   r   rC  r   r   r   )
r  r   rL   rI  r   sumr   rA   r   isscalar)rA   r  r   r   matricesr   s       r<   r  z#_TestCommon.test_sum.<locals>.check  sf   ,,x{%,8CNN3eN4E(+ W)#'')UYY[ASWWY__eiik.?.?@EII4I$89:)#''t'*<eiiTi>RSSWW$W/55uyydy7K7Q7QR)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''q'/599!9;LMSWW!W_22EII1I4E4K4KL)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''r'*:EII2I<NOSWW"W-33UYYBY5G5M5MN)#''v'*>		v	@VWSWW&W1779O9U9UVW W Ws   LM%%M.)rL   r   rf   r   randr   r~   r   r  r   r   )
r   dat_1dat_2dat_3dat_4dat_5r  rA   r  r2  s
   `        @r<   test_sumz_TestCommon.test_sum  s    
		t)""$ % 		q!$""Aq$/7795%6	W( (( 	 E3x=)  eQ 	 r>   c                 :   t        j                  d      }t        g dg dg dg      }| j                  |      }t	        t
        d      5  |j                  d       d d d        t	        t
        d      5  |j                  d	       d d d        t	        t        d
      5  |j                  d       d d d        t	        t
        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   OxY w# 1 sw Y   y xY wNr   r   r(  r)  r*  zaxis out of rangeri  r   rb  r   r   zaxis must be an integer      ?z&do.*n.t match.*shape|wrong.*dimensionsr   rc  out)	rL   r   r   r   r  r  r0  r  meanr   r@  r   r   s       r<   test_sum_invalid_paramsz#_TestCommon.test_sum_invalid_params  s    hhvY! " s#:-@A 	II1I	:-@A 	#II6I"	#9,EF 	 II3I	  :-UV 	(JJA3J'	( 	(	 		# 	#	  	 	( 	(s0   C-8C9$DD-C69DDDc                     t        g dg dg dg      | j                        fd}| j                  D ]
  } ||        y )Nr(  r)  r*  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y Nr   )r0  r   r   rA   )rA   dat_sum	datsp_sumr   r   s      r<   r  z)_TestCommon.test_sum_dtype.<locals>.check1  s?    ggEg*G			.I%gy9	8r>   r   r   r  r   r  rA   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   rc  r@  rN  r?  zoutput parameterri  )
r  r   r   r2   r0  r   rL   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 :-?@ 	&II%*I%	&:-?@ 	EII%););!CID	E 	E	& 	&	E 	E   %G,GGG%c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y Nr(  r)  r*  )r   r   rL   r0  r   r   rA   )r   r   r   rG  rH  s        r<   test_numpy_sumz_TestCommon.test_numpy_sumV  s_    Y! " s#&&+FF5M	!'95W]]IOO4r>   c                    t        g dg dg dg      }| j                  |      }t        |j                               sJ | j                  rt
        nt        j                  }t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ y Nr(  r)  r*  r   rb  r   )
r   r   r/   r0  r  r
   rL   r2   rK   rA  )r   r   r   matrix_or_arrays       r<   test_sum_mean_container_typez(_TestCommon.test_sum_mean_container_typec  s    Y! " s#EIIK(((%)%7%7'RYY%)))+_===%)))+_===EJJL)))%**!*,o>>>%**!*,o>>>r>   c                 `      j                     fd} j                  D ]
  } ||        y )Nc                    t        g dg dg dg|       }j                  ||       }t        |j                         |j                                t	        |j                         j
                  |j                         j
                         t        t        j                  |j                  d                    t        |j                  d       |j                  d              t	        |j                  d       j
                  |j                  d       j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         t        |j                  d	      |j                  d	             t	        |j                  d	      j
                  |j                  d	      j
                         t        |j                  d
      |j                  d
             t	        |j                  d
      j
                  |j                  d
      j
                         t        |j                  d      |j                  d             t	        |j                  d      j
                  |j                  d      j
                         y )Nr(  r   r  r  )r   r  r  r   rb  rc  rN  r   r   rC  r   r/  )	r   r   r   rA  r   rA   r   rL   r1  )rA   r   r   rT  r   s      r<   r  z$_TestCommon.test_mean.<locals>.checkt  sw   ""$+02C NN3eN4E%chhj%**,?))5::<+=+=>BKK


 567%dT2EJJDJ4I t,22EJJDJ4I4O4OP%a$/1C q)//1C1I1IJ%a$/1C q)//1C1I1IJ%b40%**"*2E r*00%**"*2E2K2KL%b40%**"*2E r*00%**"*2E2K2KL%ft4ejjfj6M v.44ejjfj6M6S6STr>   )r  r  )r   r  rA   rT  s   `  @r<   	test_meanz_TestCommon.test_meanr  s6    %%% 	UF (( 	E%L	r>   c                 X   | j                  t        j                  d            }t        g dg dg dg      }| j	                  |      }t        t        d      5  |j                  d       d d d        t        t        d      5  |j                  d	       d d d        t        t        d
      5  |j                  d       d d d        t        t        d      5  |j                  d|       d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   OxY w# 1 sw Y   y xY wr;  )	r  rL   r   r   r   r  r  rA  r  rB  s       r<   test_mean_invalid_paramz#_TestCommon.test_mean_invalid_param  s   ll288F+,Y! " s#:-@A 	JJAJ	:-@A 	$JJFJ#	$9,EF 	!JJCJ 	! :-UV 	(JJA3J'	( 	(	 		$ 	$	! 	!	( 	(s0   C<D3DD <DDD D)c                     t        g dg dg dg      | j                        fd}| j                  D ]
  } ||        y )Nr(  r)  r*  c                     j                  |       }j                  |       }t        ||       t        |j                  |j                         y rF  )rA  r   r   rA   )rA   dat_mean
datsp_meanr   r   s      r<   r  z*_TestCommon.test_mean_dtype.<locals>.check  sA    xxex,H%0J%h
;)9)9:r>   rI  rJ  s      @@r<   test_mean_dtypez_TestCommon.test_mean_dtype  sM    Y! " s#	; (( 	E%L	r>   c                    | j                    }t        g dg dg dg      }| j                  |      }| j                   rt        d      nt        dgg      }| j                   rt        d      nt        dgg      }|j	                  ||       |j	                  |       t        ||       | j                   rt        j                  d      nt        j                  d      }| j                   rt        j                  d      nt        t        j                  d            }|j	                  d	||
       |j	                  d	|       t        ||       t        t        d      5  |j	                  t        dg             d d d        t        t        d      5  |j	                  t        | j                   rdggnd             d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nr(  r)  r*  r   rM  rO  rP  rQ  r   rR  r?  z"output parameter.*wrong.*dimensionri  )
r  r   r   r2   rA  r   rL   r   r  r  rS  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rX  c                     t        g dg dg dg      }| j                  |      }t        j                  |      }t        j                  |      }t	        ||       t        |j                  |j                         y rZ  )r   r   rL   rA  r   r   rA   )r   r   r   ri  rj  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   r^  r   rA   )      @              ?)ru         @ru  )ru  ru  ru  &splu converted its input to CSC formatCspsolve is more efficient when sparse b is in the CSC matrix format.spsolve requires A be CSC or CSR matrix format)r   floatr   r}   linalgr4   r   r4  r*   r   r   r   )
r   MsMMexpNsNNexpr7  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  rq  rr  rz  ry  rx  r^  rs  r   )r   r   r4  r*   r   r5   r   r   r   rL   r(   r  r  )rA   r}  r7  r~  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&)r{  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 	Nrw  r  )r   r  r   rd  )r  r   r   )r         @r   r   r   )r   r   r   r   rw   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   todenserw   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   rw   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   rw   r   r  Ss      r<   test_from_sparsez_TestCommon.test_from_sparse6  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   rO  rv  rw  rt  rv  rw  rt        @)r   r  rK   r  rL   r
   r2   r   r   r   flagsc_contiguousf_contiguousr   r   rA   rR   r  r   r=  r   r  rw   )
r   chkr@  rP   dense_dot_denser  rU   check2spboolmatbools
             r<   test_todensez_TestCommon.test_todenseN  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   rO  rv  .r  r  )r   r   r   r   r   r   r  r  r  rL   r   r   rA   r   r   r   r  rw   )r   r   r  r@  rP   r  r  rU   r  r  arrbools              r<   test_toarrayz_TestCommon.test_toarrayw  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   rd  )TFr  FTc                     t        |       }t        |       }t        ||       t        ||u       d|j                  z  }||   }||    ||<   t        ||   ||   k7         |||<   y )N)r   )r   r   r   r   )	attributerP   rU   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>   r1  r0  r/  )indicesindptrdatar`  )rowcolr  ry  )offsetsr  )	r   r   r.   rw   r   rA   r   r   r   )
r   r  r  rB   D_castedr&  r  r  r  r  s
           @@r<   test_astypez_TestCommon.test_astype  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  rd  r  Fr  )r   r   hasattrr  r  	writeabler   r  r  r.   rw   r   rA   )r   r  r  rB   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 Nrh   L1@r  r  r   r   rA   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  rL   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 )Nrw  r  r   )r  r  r&  r   r   r  rA   r   r   rP   rU   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 )Nrw  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   rL   r   r   r   rA   r   r   rS   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  rL   rA   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   r0  r   r   )rA   r   r   r  sumSsumDr   s         r<   r  z$_TestCommon.test_add0.<locals>.checkG  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_add0F  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  )rh   r  r  )r   r  r   )r   r  r   y      ?       y              @y              y      @      y            @r  y      @       @y      @      y             ?y              y             @r  )r   r   r   multiplyr   )	r   rS   rT   r   Bspr   r  CspDsps	            r<   test_elementwise_multiplyz%_TestCommon.test_elementwise_multiplyU  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 ]a  }|D ]Z  }	 |j                         |z  }	 |j                  |      }t        |      rt        |j                         |       Ot        ||       \ c y # t        $ r t        t        |j                  |       Y w xY w# t        $ r Y t        $ r t        t        |j                  |       Y w xY w# t        $ r Y w xY w)Nr  r   r   r   )r  r  r  r   rh   r   )r  r   r   )r  r   rh   )r   r   r   r  r  r   r   N)r   rL   onesr=  r   r   r  r  r  r   r  r)   )r   rS   rT   r   r  Er  GHJKLr  r  EspFspHspHsppJspJsppKspr2  
spmatricesr  r  
dense_multsp_mults                              r<   #test_elementwise_multiply_broadcastz/_TestCommon.test_elementwise_multiply_broadcastj  s   1#JB4&M(O8*A3sA3- 78G,-GGFOCCA3%LQqE1Q%=/" nnQnnQnnQnnQnnQ~~ai(nnQ~~a!Dk*nnQq!Q1aAq!43S#tS$D
  	CA C!"qyy{!:J **Q-#GOO$5zBC	C  	=A =!"qJjjmG G$'(9:F'<=	= " !*ajj!< ! ! !*ajj!<
 " s<   %!H II:$II	I7#I76I7:	JJc           	         dt         j                  t         j                  dgdt         j                  dt         j                  gt         j                  dt         j                  t         j                  gg}t        t        | j                  | j                  z        |       | j                  g dg dg dgd      }dt         j                  t         j                  dgdt         j                  t        t         j                  gt         j                  d	t         j                  d
gg}t        t        | j                  |z        |       t        g dg dg      }t        g dg dg      }| j                  |      }| j                  |      }t        t        ||z        ||z         t        g dg dg      }t        g dg dg      }| j                  |      }| j                  |      }t        j                  d      5  t        t        ||z        ||z         d d d        t        d
dgdd
gg      }t        dd
gdd
gg      }| j                  |      }| j                  |      }t        j                  dd      5  t        t        j                  t        ||z              ||z         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  r  r  r
  r         ?r  g      ?r   r  r  r  r  r  )r  rh   r   r(  )r   rC  r   rD  )divide)r  rF  )
rL   r'  r   r   r   r   r   r   r   rI  )r   ro  denomrS   rT   r   r  s          r<   test_elementwise_dividez#_TestCommon.test_elementwise_divide  s=   rvvbffQ'rvva'VVAbffRVV,. 	74::

#:;XF	*Z@sKrvvbffS)s266*VVD*, 	74::#56A $^45$^45nnQnnQGC#I.!4 78$%78$%nnQnnQ[[) 	:wsSy11q59	: Aa5!A- Aa5!A- nnQnnQ[[(; 	Drxxc	(:;QUC	D 	D	: 	:	D 	Ds    J7?/K7K Kc                 t   t        g dg dg dg dg      }| j                  |      }| j                  rdD ]F  }||z  }||z  }t        |j	                         |       t        |j                  |j                         H t        t        |j                  d       t        t        |j                  d       | j                  |d dd d f         }t        |d	z  j	                         |j	                                y d
D ]a  }||z  }t        j                  j                  ||      }t        |j	                         |       t        |j                  |j                         c dD ]  }t        t        |j                  |        | j                  |d dd d f         }t        t        |j                  d	       y )Nr   r   rh   r   )r   r   r  r   )r   r  r   r   )r   r   r  r  )r   rh   皙@r   r  r   r   r   r   r   r   rh   r   )r   r	  r  )r   r   r  r   r   r   rA   r  rk  __pow__r  rL   r|  matrix_powerr  )r   rS   rT   exponentret_spret_nps         r<   test_powz_TestCommon.test_pow  sh   <|\JKNN10 9HH"6>>#3V<V\\6<<8	9 -qyy!<*aii4 q!Aw'A!Q$)199;7% 9H//8<"6>>#3V<V\\6<<8	9 . ?j!))X>? q!Aw'A)QYY2r>   c                     | j                  g dg dg dg dg      }t        g d|z  t        g d|j                                      t	        g dg      }t        ||z  ||j                         z         y )Nr   r   r   r   r   r   rh   r   rt  rh   r   r   r  )r   r   r   r   r   )r   r}  r  s      r<   test_rmatvecz_TestCommon.test_rmatvec  sY    NNGGIg>?!)a-Y		1LMYK !#'3+<=r>   c                 0   | j                  dgdgdgg      }t        t        |t        d      z               t	        |t        d      z  j                         dgdgdgg       t	        |t        dg      z  t        g d             t	        |t        dgg      z  t        dgdgdgg             t	        |t        j                  d      z  t        dgdgdgg             t	        |t        j                  d      z  t        j                  d             y )Nr   rh   r   r  r   r   r   r   r   r   )r   r   r)   r   r   r   rL   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   rh   r   rQ  r  r  r  )rL   r   r   r  r   r  r   r   )r   rS   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   rh   r   r   r   )r   r   r   r   rS   rT   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   rh   r   rQ  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   rc   r>   r<   Customr%  &  s    %+r>   r*  rh   r   r   )r   rE   r   r   r   )r   r*  r(  rS   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   rh   r   r   r   r   r   r   r   )r   r   r   r  s      r<   test_comparisons_custom_typez(_TestCommon.test_comparisons_custom_type5  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  rX   )r   r   r   r   r   )r   r}  r(  actualro  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   rh   r
  r  )	r   r   r=  operatormatmulr   r   r  r  )r   r}  rT   r  r5  s        r<   test_matmulz_TestCommon.test_matmulG  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   rh   r   )r  r   r  )r   r   r=  r   r   r   r   r2   r   rK   r
   r  rL   r  r  r   r   r   
atleast_2d)r   r}  r  r^  bad_vecsrB   s         r<   test_matvecz_TestCommon.test_matvecY  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   rh   r
  r  g333333?r   r  r  r   )r2   r   r   r   r   r  r  r  r   rf   r   r   r=  r  r  r   r  r   )r   rP   a2rU   aspbspcspr  wantr  fracrS   r  r  r  rT   s                   r<   test_matmat_sparsez_TestCommon.test_matmat_sparsex  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   rh   r   r  r  r   r  rh   )r   r   r2   r   rK   r  r
   typer   r   r   )r   rP   r=  bsrU   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   rh   r   r   )r/  r`  r0  r1  ry  rF   ra                @)r   dense)r~   r   r   r   asformatr   r   r   )r   rS   r  r   rP   rU   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   rh   r   r   )r   rh   r   r  r   r  	blocksize)r   r   r   r   r   r   )	r   rB   rC   rS   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  rm  )r   r   r   r   r   r   rA   )rA   r  r   r   rP   rU   r2  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   r[  )r   rL   r   r   r   r   r   r   r=  r  r  r  r   r   )r   r4  r5  r  r  rA   r  r2  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   rA   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  rA   r  r   r`  s        r<   r  z)_TestCommon.test_sub_dense.<locals>.check  s    //%(C%%e,E yyD U{"4s3s{"4s3 c	C50"4s3-4"4s3r>   r  r  r  s   `  r<   test_sub_densez_TestCommon.test_sub_dense  s:    	4$ %% 	E((%L	r>   c           	          t        j                  g dg dg dg      t        j                  g dg dg dg      t        j                  g dg dg dg       fd	} j                  D ]m  }t         j                  t         j                  t         j
                  fD ]9  }d
D ]2  } |t        j                  |      t        j                  |      |       4 ; o y )N)r   r   r   )r   r  r  rd  )r   r   rh   )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   rL  r~   zTTaking (maximum|minimum) with a (positive|negative) number results in a dense matrix)rL   ro   complexfloatingr   rw   rE  r  r   r4  r*   maximumminimumr   r   r   rA   )rA   dtype2btyperS   rT   r7  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(  rj  rL  r~   )rL   r   r  r   r   r   rA   )r   r  rA   rn  ro  rt  ru  rv  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  FrR  )	r   r   r&  r   	__class__r   r   r   rV   )r   rS   toselfs      r<   	test_copyz_TestCommon.test_copyR  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  rX   )r  rL   r   r   r   zipr   r   )r   rT   rS   rB   rC   s        r<   test_iteratorz_TestCommon.test_iteratorj  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  r/  r  r  r	  r  r   )r   r   rL   r  r   r   r   r   r  r  r  r   )r   r   rP   rU   r  r
  r  r  r=  r>  r?  dspespfsps                 r<    test_size_zero_matrix_arithmeticz,_TestCommon.test_size_zero_matrix_arithmeticq  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   rP   rU   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?rd  r   zdoes not support dtyperi  )rL   r   float16r  r  r   rw   r   )r   rP   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   rI   itemsrK   rL   r
   r  r   )r   r  sploadedkeyrM  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   r4  r*   )r   r7  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)rF   ra  z%Unary ops not implemented for dok/lilr  r  r        4@)r  r  r   r   r   rL   r   r   r   r   r   )r   ufuncrV  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  rc   )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  rh   r   r   r   r   r   r   r   r   rh   r   r   rh   r   rh   rh   r^  rw  )rh   r   r   rd  )r`  r1  ))r   rh   r  r  )rL   r   r   r   resizer   r   r  r   r  r  rk  
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  )rA   r&  T)r1  r0  r`  ry  rF   ra  )r   r   ry  rE   r   NON_ARRAY_BACKED_FORMATSr   rV   rA   rL   r   r   rM  )r   rS   self_formatr   other_formatrT   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)ur   r   r   r   r.   r  r'   r   r$   r   r!   r   r"   r  r&   r  r#   r  r%   r  r   r  classmethodr  r  r"  r8  r;  r>  rO  rR  rX  r\  rg  rp  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markslowr  r  r$  r&  r9  rC  rK  rW  r[  r_  rd  rf  rk  rm  ro  r  r  r5  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/  r2  r6  r:  rB  rH  rN  rX  r]  rc  rf  rw  r{  r~  r  r  r  r  r  r  r  rc   r>   r<   r  r  +  s   @"KMMMMMMMG; ;.	1#J%N4=~<|8t8tY1;
'7(&(7$?JGF/
/
GB?-=^ [[40 40lA<##! F(" E65?&P(" F67A8$ Y Y 

 

 

 

 . ..'6R#6J &H &HP 9 9		
,02<*8=t!DF3B>
;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   XxY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   y xY w)Nr  inconsistent shapesri  zdimension mismatchunsupported operand)rL   r  r   r&  r   r  r  r  r=  r   r   r  )r   rP   rU   rB   rC   s        r<   test_inplace_densez)_TestInplaceArithmetic.test_inplace_dense@	  s	   GGFONN1FFHFFH	Q	Q1a FFHFFH	Q	Q1a AAz1FG QSSAAFAq!))+. AAz1EF Qacc
AHAq!$ FFH	QSSFFHFFH:-AB 	FA	EE!##J	QSS1a  9,AB 	!GA	 	7  	 		 	s0   H6>II'I6I III%c                 B      fd} j                   D ]
  } ||        y )Nc                    j                   |    }j                  |    }t        j                  t        | d      rD|j                         }|dz  }|j                         }|dz  }t        ||j                                t        j                  t        | d      rE|j                         }|dz  }|j                         }|dz  }t        ||j                                y y N	same_kind)castingrh   r  	r  r  rL   can_castintr&  r   r   r{  rA   r   r   rP   rU   r   s        r<   r  z6_TestInplaceArithmetic.test_imul_scalar.<locals>.checks	  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_scalarr	  s&    	3& %% 	E%L	r>   c                       fd} j                   D ]8  }t        j                  |t        j                  t                    r1 ||       : y )Nc                    j                   |    }j                  |    }t        j                  t        | d      rD|j                         }|dz  }|j                         }|dz  }t        ||j                                t        j                  t        | d      rE|j                         }|dz  }|j                         }|dz  }t        ||j                                y y r  r  r  s        r<   r  z6_TestInplaceArithmetic.test_idiv_scalar.<locals>.check	  s    //%(C%%e,E{{3{;JJLQHHJQ"1aiik2{{5%=JJLT	HHJT	"1aiik2 >r>   )r  rL   r  rA   r  r  s   `  r<   test_idiv_scalarz'_TestInplaceArithmetic.test_idiv_scalar	  s>    	3$ %% 	E ;;ubhhsm4e		r>   c                    | j                  t        j                  d            }| j                  t        j                  d            }| j                  t        j                  d            }||z  }||z   }t        |j	                         |j	                                | j
                  r2||z  }||z  }t        |j	                         |j	                                ||z  }||z  }t        |j	                         |j	                                ||z  }||z
  }t        |j	                         |j	                                t        t        d      5  ||z  }d d d        y # 1 sw Y   y xY w)Nr  r  ri  )r   rL   r(   r   r   r  r  r  )r   rP   rU   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  rc   r>   r<   r  r  ?	  s    0d.2r>   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)_TestGetSetc                 \      fd}t         D ]  } |t        j                  |              y )Nc                 l   t        g dg dg dg dg|       }j                  |      }|j                  \  }}t        | |      D ]*  }t        | |      D ]  }t	        |||f   |||f           , t	        t        |d         |        dD ]#  }t        t        t        f|j                  |       % y )Nrw  r  r   r   r   rh   r   rd  r   r  r=  rr  )r  r   r\  )r  r   r  )
r   r   r   r   r   rE  r  r  r  __getitem__)	rA   r  rS   r}  r  r  r  r!  r   s	           r<   r  z*_TestGetSet.test_getelement.<locals>.check	  s    w  (-.A q!A''CAaA2q\ 1r1 1A 1Q31Q3011 afu-B Jz95q}}bIJr>   r.   rL   rA   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   rh   r   r/  rw  r  r  r   r   r  r   rC  r  )r   r  r   r  )r   r   r  r   )rh   r   r  r   ))r   r  )r   r  r  r  rs  g     ^@r  )rK  )r   r   r4  r*   rE  rL   bool_r   r   r  r  __setitem__r   r  ro   rk  r  )rA   rS   r7  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   rX   r   r  r   )r   r  )r   r   r4  r*   r   rA   rS   r7  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  rX   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   r4  r*   r   r0  )	r  r  nitemsr8   rS   r7  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rh   r   r   r  r  r   rC  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   r/  r  r  r  r   rL   r   r   r4  r*   r   r   r   rS   rT   r7  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  rc   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   rh  rx  )rL   r   rf   r   rH  r3  r   r   r   r   r   r4  r*   r3   solver   )r   r  rS   rB   rC   r  r  r7  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  rc   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   rX   r   r   r   r  )r   r   rL   r   rA   r\   r   r   r   s    r<   test_dtype_preservationz$_TestSlicing.test_dtype_preservation=
  s    T^^F"((^;AacEBHH"((ST^^F"((^;AacEBHH"((ST^^F"**^=a!eDJJBJJWT^^F"**^=a!eDJJBJJWr>   c                    t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  d|      }t        |d d dddf   j                  |       t        |dddd d f   j                  |       t        |ddddf   j                  |       t        |ddddf   j                  |        y )Nr  r   r   rh   rL   r   r\   r   r   r   r   rA   r   dtrS   s      r<   #test_dtype_preservation_empty_slicez0_TestSlicing.test_dtype_preservation_empty_sliceC
  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  rX   r(  r   r   rh   r   rh   r   r  r   r   rd  r  r   r  r   r   rC     r   r  )r  r   r   r   r  r   r   r  r  r  slice)
r   rT   rS   r0r1r2r   r  r  r  s
             r<   test_get_horiz_slicez!_TestSlicing.test_get_horiz_sliceM
  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  rX   r(  r   r   rh   r  r  rd  r  r   r  r  rC  r  r   r  )r   r   r   r  r   r   r   r  r  r  r  )
r   rT   rS   c0c1c2r   r  r  r  s
             r<   test_get_vert_slicez _TestSlicing.test_get_vert_sliceb
  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  rX   rh   r   r   r   r   r  r  rd  r  )r   r   r   r   r   r   )r   rT   rS   r  r  s        r<   test_get_slicesz_TestSlicing.test_get_slicesx
  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      rh   r  r   feature not implemented)	rL   r   r3  r   r  r  r  r   r   )r   v0r  s      r<    test_non_unit_stride_2d_indexingz-_TestSlicing.test_non_unit_stride_2d_indexing
  s    YY^^B#	9r"1R61R6>2A
 	199;1R61R6>(:;	  	9++788	9s   A$ $Bc                    | j                  t        d      j                  dd            }| j                  |      }t	        |d   |d          t	        |d   |d          t	        |d   |d          t	        |t        d      df   |d          t	        |dt        d      f   |d          t	        |t        d      t        d      f   |d          t	        |d	d d f   j                         |d	d d f          t	        |d	ddf   j                         |d	ddf          t	        |t        d	      ddf   j                         |d	ddf          t	        |d d d	f   j                         |d d d	f          t	        |d
ddf   j                         |d
ddf          t	        |dddf   j                         |dddf          t	        |d	dd
f   j                         |d	dd
f          t	        |d	dt        d
      f   j                         |d	dd
f          t	        |dd	dd	f   j                         |dd	dd	f          t	        |dd d
d f   j                         |dd d
d f          t	        |d dd df   j                         |d dd df          t	        |d	dd df   j                         |d	dd df          t	        |dd d f   j                         |dd d f          t	        |dd d f   j                         |dd d f          t	        |t        d      d d f   j                         |dd d f          t	        |dd j                         |dd        t	        |dd j                         |dd        t        t        d	      t        d      d       }t	        ||d d f   j                         |d	dd d f          t	        |d d |f   j                         |d d d	df          y )Nr  r  rX   r  r  r  r   rC  rh   r   r  r  r   r  )	r  r   r   r   r   r   r   r  r   )r   rT   rS   r  s       r<   test_slicing_2z_TestSlicing.test_slicing_2
  s   LL++Ab12NN1 	QsVQsV$QtWag&QuXah'QuRy|_QuX.Qr%)|_QuX.QuRyr*+AeH5 	Qq!tW__&!Q$0Qq!B$wZ'')1Q"W:6QuQx2~&..0!AqtG*= 	Qq!tW__&!Q$0QqsAvY&&(!AaCF)4QqsBwZ'')1QqS"W:6QqtQwZ'')1QrT1W:6QqtU1X~&..0!AbD!G*= 	QqsAaCx[((*Aac1Q3hK8Qqr12vY&&(!ABF)4Qrr2A2vY&&(!BQBF)4QqtRaRx[((*AadBQBhK8 	Qq!tW__&!Q$0Qr1uX%%'2q52QuRy!|_,,."a%9 	QqV^^%q1v.QqW__&!B0 $q'$q'$'Qq!tW__&!A#q&	2Qq!tW__&!QqS&	2r>   rh   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  rX   rh   r   r   r  r  r  r   r  rC  r   r  r  c                     |    }|    }|j                   dk(  rt        ||t        |              y |j                  dk(  r|j                  dk(  ry t	        |j                         |t        |              y Nrc   r   )r   r   r  rn   r   r   )rP   rB   rC   rS   rT   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'  )
rK   rL   r
   r  r   r   r  rn   r   r   )rP   rU   aibirB   rC   rS   rT   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   rh   r  r  r   rC  r  i)r  r   r   r   rL   s_r   r   	enumerate	itertoolsproductrN   r  )r   r-  slicesr(  r  rP   r,  r  rU   extra_slicesr  rS   rT   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  rX   r  r   r   rh   r  )Nr   rh   Nr  )Nr   r  )r   N)rX   r   r   rh   r   )rh   )Nr   rh   )r   )r   Nrh   )r   rh   N)r  r   r   r   r   r   r  )r   rT   rS   s      r<   test_None_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  rX   .).)r  .).r  ).r  zindex .5. out of rangeri  )r  .zindex .10. out of range).rX   r   rh   )r   r   .)r   .r   )r  r   r   r   r   r   r  r   r  r=  r   r   rU   rP   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  rX   )TFTFTF.zshape mismatchri  )r  r   r   r   r   r   r  r  )r   numpy_arP   ix5ix10
ix10_6Truefull_ixs          r<   test_ellipsis_fancy_boolz%_TestSlicing.test_ellipsis_fancy_boolM  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  rX   r  .rh   r   )r  r   r   r   r   r   r8  s      r<   test_ellipsis_fancy_slicingz(_TestSlicing.test_ellipsis_fancy_slicingc  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   rh   z(an index can only have a single ellipsisri  )..).r   .)r   r   r   r  r   r  r   rP   s     r<   test_multiple_ellipsis_slicingz+_TestSlicing.test_multiple_ellipsis_slicingt  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_slowr3  r6  r9  r@  rB  rE  rc   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_assign  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   r4  r*   rL   r   r   r   )	r  r  r8   rS   r7  rT   r  r  r   s	         r<   r  z9_TestSlicingAssign.test_slice_assign_2.<locals>._test_set  s    qe4u%C1v&A"$ 

24UV!Q$ !Q AAadG%aiik1cB s   BBrh   r   rX   r  r  rC  )r  r   r  s   `   @@r<   test_slice_assign_2z&_TestSlicingAssign.test_slice_assign_2  sl    1	C q]QdB(:$;aq"=NAha-/ 	DAqaO	r>   c                    | j                  d      }t               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)Nr\  r  rh   r  r  r  r   r5  rX   r  r   r   r   )	r   r   r4  r*   r   r   rL   r   r=  )r   rT   r7  rS   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)Nr\  rX   r   r   )r   r   r   )r   r  r   rd  r   r   r  r  r  r  r   r  r  r5  rh   )r   r   r   r4  r*   r   r   r   )r   rT   ro  blockr7  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)Nr\  r  r  r  r   r  r  r5  rX   r  rw  r  r  rQ  )
r   r   r4  r*   r  rL   r(   r   r   r   )r   rT   r7  ro  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  rh   r   r   r  r   r  rC  r  r   r  r  r  rX     r  d   r  rJ  r  )r  r   r   r   rh   r  )r   r   r   r  )r   r   r   r{  rL   r-  r   r   r4  r*   r.  r   r   r  r   r   r  r  r  listr  r&  )
r   rS   rT   r-  r1  r7  r  rP   r  rU   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   rh   r   r   r   r  )r   rL   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 )Nr^  r   r   r   r  rd  )r   rL   r  r   r   r   r   rS   rB   s      r<   test_assign_1d_slicez'_TestSlicingAssign.test_assign_1d_slice  sV    NN2776?+HHQK!Q$!Q$199;Iy(IJr>   N)r   r   r   rJ  rM  rO  rS  rU  r[  r^  ra  rc   r>   r<   rH  rH    s.    +"G,;&2+(Z@Kr>   rH  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rh   rg  r  r  )r   rL   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  rX   r   r   r   rh   r  )rh   r  r   r   r  r  r  r  r  rC  r   zOnly 1D or 2D arrays allowedri  r   )r  r   r   r   r   r   r   r  r   r  r  r   rL   r  )r   rT   rS   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 )Nre   r  r   r  r  r   r  )rL   r   rf   r  r3  r  rj   r   r)   r   r   r  r  r  )r   NUM_SAMPLESr}  r  r  Ir  r  SIJI_badJ_bads              r<   test_fancy_indexing_randomizedz1_TestFancyIndexing.test_fancy_indexing_randomized  s   
		tLL!,-KK1s7#IIqb1fak:IIqb1fak:NN1!fC=++-CS!AaC&!AAj!--%;j!--!E;r>   c                    d\  }}| j                  t        ||z        j                  ||            }| j                  |      }t	        j
                  |dz   t              }t	        j
                  |dz
  t              }t	        j
                  |dz   t              }t	        j
                  |dz
  t              }d}	t        j                  ||t        d       f||t        d       f      D ]Q  \  }
}t        |
t              rt        |t              r't        j                  t        |	      5  ||
|f   }d d d        S y # 1 sw Y   ^xY w)Nr  r   r   rh   z(bool index .* has shape .* instead of .*ri  )r  r   r   r   rL   r  r  r/  r0  r  rK   r  r   r  )r   r}  r  rT   rS   row_long	row_shortcol_long	col_shortrj  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 )Nre   r  r  rX   r   rh   r  r   r  r  )TFTTF)
FTTFTFFFFF)r   r  Tr  )r   r   r   )rL   r   rf   r  r   r   r   r   rj   r  r   r   r   r  r  r  r  )	r   rT   rS   rn  r  rV  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 )Nre   r  r  rX   r   rh   r  r  r   r  )r  r  )r   rX   r   )rL   r   rf   r  r   r   r   r   rj   r  r  r   r   r  r  r  r  )	r   rT   rS   rV  XspZrW  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 )Nrw  r  r   r   )r   r   rL   ravelr0  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  rh   )r   r   r  r  r  rL   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   rh   r   r  )r   r   r   r4  r*   r   r   )r   r   r7  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  rX   r   r   rh   r   r   FFFFFr   r   r   rh   r   r  	r  r   r   r   rL   r   r   r   r  r   rT   rS   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   re  ri  rk  rr  rx  r}  r  r  r  r  r  rc   r>   r<   rc  rc    sE    -1{=z<4,G@I.O
L<0r>   rc  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   )rV  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  rg  rh   rh  )r   rL   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  rL   r   r   r4  r*   r  r   r   )r  r  rS   rT   r7  r  r  r   s        r<   _test_set_slicezI_TestFancyIndexingAssign.test_fancy_indexing_set.<locals>._test_set_sliceC  s    1v&ARXXq!f-.A"$  

24UV!Q$)!,  AadG  
 &aiik15      s$   )B-.B!6B-!B*	&B--B6r  rX   r  r   r  rC  rh   )rJ  rY  )r  rL   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   rh   rv  r  r  )r   r   r4  r*   rE  r   r0  r  s      r<   r  zD_TestFancyIndexingAssign.test_fancy_assignment_dtypes.<locals>.checkU  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_dtypesT  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)Nr\  r   r  r(  r  r   r   rh   r  rX   r  rd  )r   rX   r  r  r^  r  r  )r  r(  r   )r   r(   r   r   r4  r*   r  r=  r   r   r  rL   r   r   r0  )r   rS   rT   i0i1i2r7  r   s           r<   test_sequence_assignmentz1_TestFancyIndexingAssign.test_sequence_assignmentc  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  rX   r   r   rh   r  r  *   r   r  r  r  s        r<   test_fancy_assign_emptyz0_TestFancyIndexingAssign.test_fancy_assign_empty  s	   LL++Ab12!A#!A##NN1HH89!WQZ#HHRs#!WQZ#!A#WQZ#HH_C048!A#WQZ#!A#WQZ#r>   N)r   r   r   r  r  r  r  r  rc   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   rh   r   r   r  rh   r  r  r  r   r   rh   r   r   re   r  r  )rL   r   r   rf   r  r3  r   r)   r   r   r  r  r  r  )	r   setsrn  r  r  r  ro  rp  rq  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  rc   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
Nre   r  r  rh   r   r  r  r  r  )rL   r   rf   r  r3  r   r   r  r   r   r  r  r  )	r   r  r  rV  rn  r  rp  rq  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   r4  r*   r  rL   r   r   r   )r  r  rS   r7  rT   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   rh   r   r   r  r  r   rh   r  )r   r  r   )r  r   rh   )rL   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  )rL   r   rf   r  r3  r   r   r   r  r  r  )r   r  r  rV  rn  r  r  iirp  r  jjrq  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 )Nre   r  r  )r   rh   r   r   r  rh   )r  r   r   rh   r   r   )r   rh   r   r  r  r   r  )rL   r   rf   r  r3  r   r   r  r  r  r  )r   r  r  rn  r  r  rp  r  rq  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  rc   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         rv  r   r   )r   r   g      @r   r   r   r   )g      ?r   r   r   r  g      @)g     ,@g      r   r   r  r   )r   g      @r   r   r   r   )g     2@      r   r   r   r   r   )g      ?r   r   r   r   g      )r       @r   r   r   g      @)r   r  r   r   r   r   )r  r   r   r   r   r      r\   )r   r  r   rw   r  r   )r   _TestArithmetic__A_TestArithmetic__B_TestArithmetic__Asp_TestArithmetic__Bsps        r<   __arith_initz_TestArithmetic.__arith_init1  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)NrD  rE  r  )_TestArithmetic__arith_initr   r   r.   rL   rI  rw   r   ro   rk  r  r   rA   r   r  r  r  r  rB   rS   r   rC   rT   r  D1S1s                r<   test_add_subz_TestArithmetic.test_add_subI  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)NrD  rE  g+=)atol)r  r   r=  r   r.   rL   rI  rw   r   ro   rk  r  r   r  r[   r   rA   r  s                r<   test_muz_TestArithmetic.test_muu  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  rF  r  r  rc   r>   r<   r  r  -  s5    &0 [[2)/ )/V0r>   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	_TestMinMaxc                    t         j                  t         j                  t         j                  t         j                  t         j
                  fD ]K  }t        j                  d|      j                  dd      }| j                  |      }t        |j                         d       t        |j                         d       t        |j                         j                  |       t        |j                         j                  |       |dz  }| j                  |      }t        |j                         d       t        |j                         d       |dz  }| j                  |      }t        |j                         d	       t        |j                         d       N | j                  t        j                  d
d      j                  dd            }t        |j                         d
       t        |j                         j                  |j                         t        |j                  d      d
       | }t        |j                         d       t        |j                  d      d       | j                  t        j                  d            }t        |j                         d       t        |j                         d       t        |j                         j                  |j                         t        j                  dt              j                  dd      }d|ddd d f<   | j                  |      }t        |j                         d       t        |j                         d       t        j                  d      t        j                  d      t        j                  d      fD ]G  }| j                  |      }t        t         |j                         t        t         |j                         I y )Nr  r   r  r  r      r   iir   rX   r   Texplicitr  rh   r  r   rX   rX   r   )rL   r   r   r\   ri   r   r   r   r   r   rq   r[   rA   r   r{  r  r  )r   rA   r  rV  r  s        r<   test_minmaxz_TestMinMax.test_minmax  s   jj"**bhh"--P 	%E		"E*221Q7Aq!A!$"%..GAq!A#&!$FAq!A#&!$#	%( NN299Q+33Aq9:QUUWa QUUW]]AGG,QUUDU)1-BQUUWb!QUUDU)2. NN288F+,QUUWa QUUWa QUUW]]AGG, IIb&..q3!A#q&	NN1QUUWa QUUWb! ((6"BHHW$5rxx7HI 	-Aq!A*aee,*aee,	-r>   c                    | j                    }t        j                  d      j                  dd      }d|dd d f<   d|d d df<   d|d<   d|d	<   | j	                  |      }dd
g}ddg}||z   D ]x  }t        |j                  |      j                         |j                  ||             t        |j                  |      j                         |j                  ||             z |D ]  }t        |j                  |d      j                         | j                  g d             t        j                  |j                  dk(        r| j                  g d      }n| j                  g d      }t        |j                  |d      j                         |        |D ]  }t        j                  g d      }t        j                  g d      }	| j                   s"|j                  d      }|	j                  d      }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        t        j                  dd      j                  dd      }| j	                  |      }||z   D ]x  }t        |j                  |      j                         |j                  ||             t        |j                  |      j                         |j                  ||             z t        |j                  d      |j                  d|             |D ]  }|dd d f   }|dd d f   }	| j                   s|d dd d f   }|d dd d f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        |D ]  }|d d df   }|d d df   }	| j                   s|d d dd f   }|d d dd f   }	t        |j                  |d      j                         |       t        |j                  |d      j                         |	        | j                  t        j                  d            }| j	                  |      }||z   D ]x  }t        |j                  |d      j                         |j                  |             t        |j                  |d      j                         |j                  |             z | j                  t        j                  d            }| j	                  |      }ddg}
t        t!        j"                  ||
            }t        t!        j"                  ||
            }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } | j                  t        j                  d            }| j	                  |      }|D ]?  \  }}t%        t&        |j                  ||       t%        t&        |j                  ||       A |D ]{  \  }}t        |j                  ||      j                         |j                  |             t        |j                  ||      j                         |j                  |             } y )Nr  r  rX   r   r   r  r^  r   r  rC  rb  rc  Trc  r  )
r  )   r  +   ,   -   .   /   0   r   )
r  r   r   r   r  r  r   r  r  r   )
r  r   r   r   r  r  r   r  r  r   )r  r      &   r  )r   r   r   r  r  r  3   r/  )rX   r  r  Fr  )r  rL   r   r   r   r   r[   r   rq   r   r  anyr  r   r   rZ  r/  r0  r  r  )r   rT  r  rV  	axes_evenaxes_oddrc  ro  expected_maxexpected_minexplicit_valueseven_explicit_pairsodd_explicit_pairsexs                 r<   test_minmax_axisz_TestMinMax.test_minmax_axis  sf   %%%IIbM!!!R(!Q$!Q$$$NN1G	r7y( 	D4 ((*AEEtdE,K 4 ((*AEEtdE,K		  
	ND4$/779DE vvaffk"<<(HI<<(HID48@@BHM
	N  	RD88$67L88$67L%%+33F;+33F;D48@@BLQD48@@BLQ	R IIa$$R+NN1y( 	D4 ((*AEEtdE,K 4 ((*AEEtdE,K		 	QUUU'FT)JK 	RDRU8LQT7L%% r1~ q!}D48@@BLQD48@@BLQ	R  	RDQU8LQT7L%% B~ At}D48@@BLQD48@@BLQ	R LL'*+NN1( 	VDD48@@BAEEtEDTUD48@@BAEEtEDTU	V
 LL'*+NN1-"9#4#4Y#PQ!)"3"3Ho"NO+ 	EHD"*aee$D*aee$D	E + 	THD"D26>>@!%%T%BRSD26>>@!%%T%BRS	T LL'*+NN1* 	EHD"*aee$D*aee$D	E , 	THD"D26>>@!%%T%BRSD26>>@!%%T%BRS	Tr>   c                    t        g dg dg dg      }| j                  |      }| j                  rt        nt        j
                  }| j                  rt        nt        }t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ t        |j                               sJ t        |j                  d      |      sJ t        |j                  d      |      sJ y r]  )r   r   r  r
   rL   r2   r+   r,   r/   rq   rK   r[   nanminnanmaxargminargmax)r   r   r   r^  spmatrix_or_sparrays        r<   test_minmax_container_typez&_TestMinMax.test_minmax_container_type(  s   Y! " s#%)%7%7'RYY)-););gEIIK(((%)))+-@AAA%)))+-@AAAEIIK(((%)))+-@AAA%)))+-@AAAELLN+++%,,A,.0CDDD%,,A,.0CDDDELLN+++%,,A,.0CDDD%,,A,.0CDDDELLN+++%,,A,.@@@%,,A,.@@@ELLN+++%,,A,.@@@%,,A,.@@@r>   c                 &   | j                  t        j                  d      j                  dd      t              }d|dd d f<   d|d d df<   d|d<   d	|d
<   t        j
                  |d<   t        j
                  |d<   | j                  |      }|j                         }t        j                  |      sJ |t        j                  |      k(  sJ |j                         }t        j                  |      sJ |t        j                  |      k(  sJ |j                  d      }t        j                  |      sJ |t        j                  |d      k(  sJ g d}|D ]  }|j                  |      }t        |j                         t        j                  ||             t        || j                        sJ |j                  |      }t        |j                         t        j                  ||             t        || j                        rJ  y )Nr  r  rX   r   r   r   r  r^  r   r  rD  )r   r  r/  rb  )rC  r   r   r   )r  rL   r   r   r{  r'  r   r  r1  r  r   r   rK   r   )	r   r  rV  X_nan_maximumX_nan_minimumrm  rc  X_nan_maximaX_nan_minimas	            r<   test_nanminmaxz_TestMinMax.test_nanminmaxH  s   LL2..q4ELB!Q$!Q$$$&&$&&$NN1
{{=)))		!,,,
{{=)))		!,,,f-{{=)))		!& 9999 	@D888.LL002BIIad4KLlD,>,>???888.LL002BIIad4KLlD,>,>???	@r>   c                 .   t        g dg dg dg      }| j                  |      }dD ]k  }t        ||      }t        ||      }t        t        |d       t        t
        |d       t        t        |dd	       t         |d
       |d
             m y )Nr(  r)  r*  )rq   r[   r   rb  r>  r   r?  r/  )r   r   r   r  r  r  r   )r   r   r   fnamedatfuncr   s         r<   test_minmax_invalid_paramsz&_TestMinMax.test_minmax_invalid_paramsh  s    Y! " s## 	BEc5)G5%(D*d3)T4*d:6*G,@A	Br>   c                 P   ddl m} t        g dg dg dg      }| j                  |      }t	        ||j
                        ret        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             y y )Nr   _datar(  r)  r*  )
scipy.sparser  r   r   rK   _minmax_mixinr   rL   rq   r[   )r   r  r   r   s       r<   test_numpy_minmaxz_TestMinMax.test_numpy_minmaxv  sy     	'Y! " s# eU001rvve}bffSk:rvve}bffSk: 2r>   c                 H   ddl m} t        j                  g dg dg dg dg dg      }|j	                         }t        j                  dd	gd
dgg      }t        j                  dd	gd
dgg      }t        j                  g dg dg dg      }|||||fD ]Z  }| j                  |      }| j                  |      }t        ||j                        s=t        |j                         t        j                  |             t        |j                         t        j                  |             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             t        |j                  d      t        j                  |d             ] | j                  | j                  |            }t        |j                  d      d       t        | j                  d      d       t        |j                  d      d       t        | j                  d      d       | j                  t        j                  d            }	| j                  t        j                  d            }
ddg}t        j                  |	|
gg d|      D ]  \  }}}||j                  |   dk(  rot!        j"                  t$        d      5  |j                  ||       d d d        t!        j"                  t$        d      5  |j                  ||       d d d        | j&                  rt        j(                  d      }nt        j(                  |dk(  rdnd      }t        |j                  ||      |       t        |j                  ||      |        | j                  |      }t        |j                  dd      | j                  g d             t        |j                  dd      | j                  g d             t        j                  g d      }t        j                  g d       }|j*                  d!k7  rd|d"<   | j&                  s"|j-                  d#      }|j-                  d#      }t        |j                  dd      |       t        t/        |j                  dd            |       t        j(                  d$      }| j                  |      }|j*                  dk7  r;t        |j                  d d      d       t        |j                  d d      d       y t!        j"                  t$        d      5  |j                  d d       d d d        t!        j"                  t$        d      5  |j                  d d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)%Nr   r  )r   r  rh   r   )r   r   r   rC  )r   rC  r  r  r  )r   rh   r   r   r  r   r  r  )r  r  r   )r  r  rX   )r   r  r  rb  r   Tr  rh   r  r	  Fr%  zCannot applyri  r  r/  r  )r   r   r   r   )r   rh   rh   rh   )r   rh   r   r   r   )r   r   r   r   r   r  r   r  r  )r  r  rL   r   r   r  r   rK   r  r   r  r  r  r/  r0  r   r  r   r  r  r   re  r   r   )r   r  r  D2D3D4D5r  r   D6D7	explicitsrc  r  ro  r  r  s                    r<   test_argmaxz_TestMinMax.test_argmax  s   &XX
  \\^XX1v1v&'XX1v1v&'XXy*i89b"b"% 	CAQA..#Cc5#6#67ryy|4ryy|4+RYYqq-AB+RYYqq-AB+RYYqq-AB+RYYqq-AB	C  nnT\\"-.SZZZ.2sd]]D]115SZZZ.2sd]]D]115 ^^BHHV,-^^BHHV,-5M	&..BxyQ 	KMCr|syy!3]]:^D 7JJD2J67]]:^D 7JJD2J67 7 %%!xx{H!xx$!)HHSZZTBZ?JSZZTBZ?J	K nnR SZZQZ6\8RSSZZQZ6\8RSxx0xx077b= L!!'//7L'//7LSZZQZ6EWSZZQZ>?N HHVnnQ77a<=qA=qA z@ 5

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

t
45 5O7 77 7F5 55 5s0   $W2W?XX2W<	?X		XX!N)
r   r   r   r  r  r   r  r
  r  r  rc   r>   r<   r  r    s/    /-bdTLA@@@B;$T5r>   r  c                       e Zd Zd Zy)_TestGetNnzAxisc                    t        ddgddgddgg      }|j                  t              }| j                  |      }t        j
                  t        j                  f}| j                  r|j                  n|j                  }t        |j                  d        |d              t        |j                          |              t        |j                  d       |d             t         |d      j                  |       t        |j                  d       |d             t         |d      j                  |       t        |j                  d	       |d	             t         |d	      j                  |       t        |j                  d
       |d
             t         |d
      j                  |       t        t        |d       y )Nr   rh   r   r  r+  r  rb  r   rC  r   )r   rw   r  r   rL   r\   ri   r  rf  getnnzr   r0  r=   rA   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   rc   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   )rk  r  r  r  r  r  r  )rP   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)dictrI   r  
startswithrE  r   	__bases__)r  requirer(  new_dictr   r   s         r<   _possibly_unimplementedr0    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  r0  r  r  r  r  r  rH  rc  r  r  r  r  r  rI   r,  getr  r   rE  )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_classr@    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   r4  r*   r"   r  argsrD   r7  s       r<   r   zTestCSR.spcreatorE  <      	.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   rh   r  r
  r   r1  )r   r  r   r  r   r  r  r   re  r   r   r   rU   r>  s      r<   test_constructor1zTestCSR.test_constructor1L  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   rJ  s      r<   test_constructor2zTestCSR.test_constructor2X  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   rh   r   r
  r  r  r
  )r   r  r   r  r   r  r  r   rJ  s      r<   test_constructor3zTestCSR.test_constructor3a  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rh   r   r   r   r   r   r   r   rh   r   rh   r   r   r   r   r   r   rh   rh   rh   rh   r         @g      $@rt        "@rv  r  g      &@rw         @      @r  r\  r  r  r              r   r   r   r   r   r   r   r   rh   rh   r   r   r   r   r   rh   )
r   r	   r  r   r   r   r   rL   uint64re  )r   r  r  r  r!  r1  rL  s          r<   test_constructor4zTestCSR.test_constructor4k  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   rh   r  r  )r   r  r   r   r   r  r  r  r1  s        r<   test_constructor5zTestCSR.test_constructor5  E    y!	"Y  $!89399U+r>   c                     g d}g d}g d}| j                  |||f      }t        |j                  d       t        t	        j
                  |j                  t        j                               y r`  )r  r   r   r   rL   ro   rA   signedintegerrc  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   rh   r   r   r   rh   r   r   rh   r  r   r^  r   r(  r  )r  r   r   r
  )r   r   rL   ri   r  rA   r  r\   r   r  r  r   r   )r   r  r  ptrrP   rU   expected_dtypes          r<   test_constructor_smallcolz!TestCSR.test_constructor_smallcol  s    ay1}&bhh7L1c3/v>9"$
 d.@.@"((bhhOQXX^^^4QYY__n5199;*r>   c           	      |   t        d      dz   }t        j                  t        j                        j                  dz   }t        ddd||dz   |dz   gt        j                        }t        g dt        j                        }| j                  |||f      }t        |j                  j                  t        j                  t        j                               t        |j                  j                  t        j                  t        j                               t        |j                  dt	        |      dz   f       y )	Nr   r   rX  r   rh   r   rj  r   )r   rL   rZ   r\   r[   r   ri   r  r   r  rA   r  r   r   )r   r  larger  rl  rP   s         r<   test_constructor_largecolz!TestCSR.test_constructor_largecol  s    ay1}"&&,Q1eU1WeAg6bhhGL1c3/0QXX^^RXXbhh%78QYY__bhhrxx&89177QC
O4r>   c                 :   t        d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j	                          t        |j                  g d       t        |j                         |j                                y )Nr  r  rh   r   r  r  r   r   r  rh   rX   rk  r   rh   r  r  r  )r   r   r  r&  r  r   r  r   r   r  r  r  r=  r>  s         r<   test_sort_indiceszTestCSR.test_sort_indices  sv    ay(y!  $!8 Ghhj3;;73;;=#++-8r>   c                 j   t        g d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j                          t	        |j
                  d       t	        |j                  g d       t	        |j                         |j                                y )Nr   r   r   r   rh   r   r   r   r   rh   r   r  r  r   r  r  r   r   r  ru  rk  r   r  )r   r  r&  eliminate_zerosr   re  r  r   rw  s         r<   test_eliminate_zeroszTestCSR.test_eliminate_zeros      -.01y!  $!8 Ghhj377A&388I.3;;=#++-8r>   c           	         | j                  t        j                  d      j                  dd      dz        }dD ]  }t	        t        | j                  |      d        t        ||             }t	        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                          t        t        |      |j                                       y )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  T)r  rL   r   r   r   r  r   r   r   r   r  r  r   r   rV  r  r  s       r<   test_ufuncszTestCSR.test_ufuncs      ryy}44Q:S@AJ 	JA Q/6AB"((+qyy"**5qxx3rzz|^WR^AIIK-HI	Jr>   c                 h   t        d      }t        g d      }t        g d      }| j                  |||fd      }t        d      }t        g d      }t        g d      }| j                  |||fd      }t        ||z   j	                         |j	                         |j	                         z          y )	Nr  rs  rt  ru  rk  r   r  r   r  r  rh   r  r   rh   r   )r   r   r  r   r   rw  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   rh   r   r  re   r  r  
rL   r   r   rf   r  r3  r   r)   r   r   r   rn  r  r  r  ro  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   rh   TFN)rL   r   r  r&  r   r  rK   r  r  r   r  )r   sorted_indsunsorted_indsr  r  r}  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_duplicatesrh   r   r   TFN)r  rL   r   r   has_canonical_formatr&  rK   r  sum_duplicatesr   r  )r   r}  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 )Nrh   r   r   r   rk  r           r  )rL   r   r\   r  r   r  rA   ri   r   r  r  valsrP   rU   r!  r  r
  r  r  rB   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  rk  r  rt  r  rL   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   rh   r   )r  re  r  r   rP   rU   s      r<   test_binop_explicit_zerosz!TestCSR.test_binop_explicit_zerosA  sZ     	{+	{+A{{azz!}  A%%%r>   N)r   r   r   r  r   rL   r  int_r   r   r  rK  rN  rP  r^  rd  rh  rn  rq  rx  r~  r  r  r  r  r  r  r  r  rc   r>   r<   rB  rB  D  s    . . 88RWWbjj"--@K
-44(,<+$59	9
J	K"58(:0&r>   rB  c                   "    e Zd Zed        Zd Zy)TestCSRMatrixc                     t               5 }|j                  t        d       t        |i |cd d d        S # 1 sw Y   y xY wrD  )r   r4  r*   r   rE  s       r<   r   zTestCSRMatrix.spcreatorN  <      	/CJJ.0QRt.v.	/ 	/ 	/rH  c                     t         t        j                     }t        |t              sJ |j
                  t         u sJ |j                  t        j                  fk(  sJ y r@   )r   rL   r   rK   r   
__origin____args__r   rG  s     r<   test_spmatrix_subscriptablez)TestCSRMatrix.test_spmatrix_subscriptableT  sL    BGG$&,///  J...277*,,,r>   N)r   r   r   r  r   r  rc   r>   r<   r  r  M  s    / /
-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rD  )r   r4  r*   r!   rE  s       r<   r   zTestCSC.spcreator_  rG  rH  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   rh   r   r   r
  )r   rh   r   r   )r   rh   r   rh   r  r  r0  )r   r   r   r  r   r  r  r   re  r   r   rJ  s      r<   rK  zTestCSC.test_constructor1f  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 )NrM  r
  r  rh   r  rh   )r   r   r   r   r   r   r   )r   r   r   r  r   r  r  rJ  s      r<   rN  zTestCSC.test_constructor2p  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   rh   r
  r(  )r   r   r   r  r   r  r  rJ  s      r<   rP  zTestCSC.test_constructor3x  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 )NrR  rS  rT  r\  r  r  r   rZ  r[  r\  rh   )r   r	   r   r   r   r   r   re  )r   r  r  r  r!  r0  s         r<   r^  zTestCSC.test_constructor4  s    5656CDSI  $r516":--a3S[[]C   )i-C!DEww!||r>   c                     t        g d      }t        g d      }t        g d      }| j                  |||f      }t        |j                  d       y Nra  rb  r  )r   r   )r   r   r   r   r   r  r  r  r0  s        r<   rd  zTestCSC.test_constructor5  re  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   rL   ro   rA   rg  r  s        r<   rh  zTestCSC.test_constructor6  sS      $!89399U+cii)9)9:;r>   c                 j   t        g d      }t        g d      }t        g d      }| j                  |||fd      }|j                         }|j                          t	        |j
                  d       t	        |j                  g d       t	        |j                         |j                                y )Nrz  r{  r|  rX   rh   rk  r   r  )r   r   r&  r}  r   re  r  r   rw  s         r<   r~  zTestCSC.test_eliminate_zeros  r  r>   c                 (   t        d      }t        g d      }g d}| j                  |||fd      }|j                         }|j	                          t        |j                  g d       t        |j                         |j                                y )Nr  rs  rt  r  rk  rv  )r   r   r   r&  r  r   r  r   )r   r  r  rl  r=  r>  s         r<   rx  zTestCSC.test_sort_indices  sq    ayO$  $S!1 @hhj3;;73;;=#++-8r>   c           	         | j                  t        j                  d      j                  dd      dz        }dD ]  }t	        t        | j                  |      d        t        ||             }t	        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                          t        t        |      |j                                       y )N   r  r   g      5@r  T)r   rL   r   r   r   r  r   r   r   r   r  r  r   r  s       r<   r  zTestCSC.test_ufuncs  r  r>   c                 h   t        d      }t        g d      }t        g d      }| j                  |||fd      }t        d      }t        g d      }t        g d      }| j                  |||fd      }t        ||z   j	                         |j	                         |j	                         z          y )	Nr  rs  rt  r  rk  r   r  r  )r   r   r   r   r   rw  s         r<   r  z TestCSC.test_unsorted_arithmetic  r  r>   c                    t        j                  dgdgdgg      }t        j                  g d      }t         j                  j                  d       | j	                  t         j                  j                  dd            }| j                  |      }|||f   }t        |      r|j                         }t        ||||f          y r  r  r  s         r<   r  z%TestCSC.test_fancy_indexing_broadcast  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 )
Nrh   r   r   )r  r   rk  )r  r   r  r  r  )	rL   r   r\   r   r  r   r  rA   ri   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   rL   r  r  r   r   r  rK  rN  rP  r^  rd  rh  r~  rx  r  r  r  r  r  rc   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rD  )r   r4  r*   r   rE  s       r<   r   zTestCSCMatrix.spcreator  r  rH  N)r   r   r   r  r   rc   r>   r<   r  r    s    / /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)rX   r  rX   r=  r  r  r   )r  r=  r   r   r   )r   rS   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  r/  r  r  rX   r   r  rh  )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  r/  r  r  rh  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   r5  rh   r  r   rQ  r  r
  r  r\  r   rD  )	r  r   r   r   r  r   r   r   r  )r   r  r  rP   r0  rU   r1  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   rA   r   r  rL   r   r   )r   rU   rS   r  r  r
  das          r<   	test_ctorzTestDOK.test_ctorE  s    i!3!34 <|<cBq!QWWagg&QYY[!$ q!QYY[!))+.9%t2::6QWWbjj)YY[RXXrzz*2t$r>   c                     | j                  d      }d|d<   t        d|j                         vd       | j                  d      }d|d d df<   t        t        |j                               dk(  d       y )Nr^  r   r  zUnexpected entry (0,0) in keyszUnexpected entries in keys)r  r   keysr   r  s      r<   test_ticket1160zTestDOK.test_ticket1160Z  sl    u%# 	QVVX%'GH u%!A#AFFH"$@Ar>   N)r   r   r   r#   r   rL   r  r   r   r  r  r  r  r  r  r  rc   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   rc   r>   r<   r  r  h      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rX   rX   rX   r=  y              4@r  r   ppc64le)
r   rL   r   r  platformmachiner   r=  r   r   r  s      r<   test_dotzTestLIL.test_dott  s    (BMM*$$xr}}=$$ *q133wQSS(9(9(;<1q{{}.Q[[]__1D0M0M0OPr>   c                     | j                  d      }d|d<   |dz  }t        |d   d       |dz  }t        |d   d       y )Nr^  rh   r  r  r   )r  r   )r   rB   s     r<   test_scalar_mulzTestLIL.test_scalar_mul  sI    v&$aCQtWa aCQtWa r>   c                     | j                  d      }d|d<   d|d<   t        |dz  j                         |j                         dz         t        |dz  j                         |j                         dz         y r  r  r  s     r<   test_truediv_scalarzTestLIL.test_truediv_scalar  sc    NN6"$$AF++-qyy{R/?@AE??,aiikAo>r>   c                 2   | j                  g dg dg      }| j                  g dg dg      }|||z   f|||z
  fd|dz  fd}|j                         D ]V  \  }\  }}|j                         } t        |d| d      |       t	        |j                         |j                                X | j                  dt        j                  d	      
      }| j                  g d      }|dd d fxx   |z  cc<   t	        |dd d f   j                         |       y )Nr   rh   r   r  r  r   )addsubmul__i__r<  r   r   )皙?r  r  r   )	r  r  r&  r   r   r   rL   rA   r  )r   rS   rT   r  opr   ro  rG  s           r<   test_inplace_opszTestLIL.test_inplace_ops  s   	956	9561q5z1q5z1q5z# &*ZZ\ 	E!B!VVXF)GFc"RL)%0v~~/1A1A1CD		E vRXXi-@ALL)	!Q$11QT7??,a0r>   c                     g dg dg}| j                  t        |            }t        |      D ]7  \  }}t        |j	                         t        ||   |j
                               9 y )Nr  r  )ndmin)r  r   r.  r   r   r   )r   row_datarT   r  r  s        r<   test_lil_iterationzTestLIL.test_lil_iteration  sX    y)uX/l 	RFAss{{}eHQKsxx.PQ	Rr>   c                     | j                  d      }d|d<   d|d<   d|d<   d|d	<   d
|d<   |j                         }| j                  |      }t        |j                         |j                                y )Nr  rX   r=  r  r  r  )r  r   r  )r   r  r  )r  r  )r  r  r   r   )r   rT   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  rh   r   )r  r   r   r  r   r   r   )r   r}  rS   s      r<   test_fancy_indexing_lilzTestLIL.test_fancy_indexing_lil  sm    LL++Aq12q!QuY'1,-557uY'1,-	/r>   c                    | j                  d      }d|d<   d|d<   d|d<   d|d	<   | j                  d      }d|d<   d|d
<   d|d<   d|d	<   d|d<   t        |j                  |      j                         |j                  |      j                                t        |j                  |      j                         g dg dg dg dg       y )Nr\  r   r  rh   r  r   r  r  rQ  r/  r  rw  rd  r   r   r  )r   r  r   )r  r   r  r   )r   lr  s      r<   test_point_wise_multiplyz TestLIL.test_point_wise_multiply  s    v&$$$$v&$$$$$1::a=002::a=002	4 	1::a=002%%%&(	)r>   c                 h    | j                  t        j                  d            }|dz  }d|dd d f<   y )Nr^  rw  r   )r  rL   r  rD  s     r<   test_lil_multiply_removalz!TestLIL.test_lil_multiply_removal  s0    rwwv/	R!Q$r>   N)r   r   r   r%   r   rL   r  r   r   r  r  r  r  r  r  r  r  r  r	  rc   r>   r<   r  r  p  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   rc   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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 )NrR  rS  rT  r\  r  r  r   rY  r   r   r   )r   r   r   r   r   r   rL   r]  )r   r  r  r  r`  rL  s         r<   rK  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   rh   rh   rh   rh   r   r   rh   rh   )
r   rh   r   rh   r   r   r   r   r   rh   )
rh   r  r  r  r  r   r   rh   r   r  r^  )r  r   r   r  )r  r  r   )r   r   r   r   )r   r  r  r  r`  r   s         r<   rN  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 )Nr\  )r   r   r   r  r  r  r   r   r   r`  s     r<   rP  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 interpretedri  )r   r     !   r
  r  r  r  rk  )
r   r   r   r   r  r   r  r   r  r  )r   r   r`  ro  s       r<   r^  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   rA   rL   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@   rc   r   s    r<   r~  zTestCOO.test_iterator,      r>   c                     ddgg}| j                  |      j                         }t        |j                         |       y rm   )r   todiar   r   )r   r   ry  s      r<   test_todia_all_zeroszTestCOO.test_todia_all_zeros0  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 )Nr\  r   rh   r   r   )r   r  r   r   r  r  r  r  s     r<   test_sum_duplicateszTestCOO.test_sum_duplicates5  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 )NrZ  r[  r\  )r   r  r   r   )r   r`  rF   s      r<   test_todok_duplicateszTestCOO.test_todok_duplicatesB  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 )NrZ  r[  r\  rh   )r   r  r   re  r  )r   r`  r1  r0  s       r<   test_tocompressed_duplicatesz$TestCOO.test_tocompressed_duplicatesG  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 )Nrz  )r   r   r   r   r   r   r   r   r{  ru  rk  r   )	r   r   r&  r}  r   r  allr   r   )r   r  r  r  r=  r>  s         r<   r~  zTestCOO.test_eliminate_zerosN  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  rL   rR   )r   rr   	new_shaperB   rC   s        r<   test_reshape_copyzTestCOO.test_reshape_copyX  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- rW  )-   )r-  r,  r   r  r   r  )r   r   r   re  )r   mat1mat2s      r<   test_large_dimensions_reshapez%TestCOO.test_large_dimensions_reshapef  s     !!A3'TF(;"<oN!!A3$'(;"<oN 	oS9TAFF!KLoS9TAFF!KLr>   c                    t         t        j                  t        t           f   }t        |t              sJ |j                  t         u sJ |j                  t        j                  t        t           fk(  sJ t         t        j                     }t        |t              sJ |j                  t         u sJ |j                  t        j                  fk(  sJ y r@   )	r$   rL   r   r  r  rK   r   r  r  r  s     r<   test_sparray_subscriptablez"TestCOO.test_sparray_subscriptableq  s    277E#J./&,///  I---277E#J"7777277#&,///  I---277*,,,r>   N)r   r   r   r$   r   rL   r  r   r   r  rK  rN  rP  r^  r  r  r  xfailr~  r  r!  r#  r%  r~  r*  r0  r2  rc   r>   r<   r  r    s     I77BJJ6K1	/9>,1
 [[5)JK L1
*9
+99	M	-r>   r  )r4  r5  r6  r7  r8  c                       e Zd ZeZy)TestCOOMatrixN)r   r   r   r   r   rc   r>   r<   r5  r5  }  r  r>   r5  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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   rh   r   r  )r   rh   r   r   )r   r   r   r  r  r   r   rb  r   r   rh   r  rk  )r   rL   repeatr   r  r   )r   r  r  r  s       r<   rK  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@   rc   r   s    r<   r~  zTestDIA.test_iterator  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   rP  rh   r  r  )	r  rL   r(   r   r  rA   r\   r  ri   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@   rc   r   s    r<   r   zTestDIA.test_getnnz_axis  r  r>   c                     | j                  g dgdgfd      }|j                         }t        |j                         j                         |       t        |j	                         j                         |       y )Nr  r   rD  rk  )r  r   r   r  r  )r   r  ro  s      r<   test_convert_gh14555zTestDIA.test_convert_gh14555  s]    bT2&A99;1779,,.91779,,.9r>   c                 2   | j                  ddgddgg      j                         }t        j                  |j                  |j
                  f|j                        }t        j                  t        j                  |      dkD        }|j                  |k(  sJ y )Nr   rh   r   r  r   )
r  r  rL   ravel_multi_indexr  r  r   r'  diffr  )r   r  	flat_indsinds_are_sorteds       r<   test_tocoo_gh10050zTestDIA.test_tocoo_gh10050  sz    AA/0668((!%%A	&&!3a!78%%888r>   c                 ,   t        j                  g dg      j                  dd      }t        j                  g dt         j                        }t	        j
                  ||fd      }|j                         }|j                  j                  t         j                  k(  sJ |j                         }|j                  j                  t         j                  k(  sJ |j                         }|j                  j                  t         j                  k(  sJ y )	Nr  r   r   rb  r9  r   r  rk  )rL   r   r:  r\   r~   r&   r  r  rA   r  r  r  )r   r  r  ry  r`  r1  r0  s          r<   test_tocoo_tocsr_tocsc_gh19245z&TestDIA.test_tocoo_tocsr_tocsc_gh19245  s    xx'..qq.9((:RXX6gf=iikww}}(((iik{{  BHH,,,iik{{  BHH,,,r>   c                 :   t        ddg      }|t        dgd      z   }t        |      }t        |      }||z   }t        |t              sJ t        |j	                         ||z          ||z   }t        |t              sJ t        |j	                         ||z          y )Nr   rh   r   )r   r   rK   r   r   r   rS   rT   r   r  r  s         r<   test_add_sparsezTestDIA.test_add_sparse  s    !QLaS!mmCi#z***3;;=!a%0Ci#z***3;;=!a%0r>   c                    t        ddg      }|t        dgd      z   }t        |      }t        |      }||z
  }t        |t              sJ t        |j	                         ||z
         ||z
  }t        |t              sJ t        |j	                         ||z
         |j                  d      }t        ||z
  j	                         ||z
         t        ||z
  j	                         ||z
         y )Nr   rh   r   r1  )r   r   rK   r   r   rM  rL  s         r<   test_sub_sparsezTestDIA.test_sub_sparse  s    !QLaS!mmCi#z***3;;=!a%0Ci#z***3;;=!a%0ll5!C#I..0!a%8C#I..0!a%8r>   c                 >   | j                  ddgddgg      }|dz  }t        ||j                        sJ t        |j	                         ddgddgg       |j                  d      }t        ||j                        sJ t        |j	                         ddgddgg       y )Nr   rh   r   r  r   r   r  )r  rK   ry  r   r   r  )r   r  resres2s       r<   r  zTestDIA.test_mul_scalar  s    AA/0!e#q{{+++3;;=Aq6Ar7*;<zz!}$,,,4<<>QFQG+<=r>   c                    t        g dg dg      }t        ddgddgddgg      }t        |      }t        |      }d	|j                  |j                  d
k(  <   d	|j                  |j                  d
k(  <   t        |j	                         |       t        |j	                         |       ||z  }||z  }t        |t              sJ t        |j	                         |       t        |j                  g d       t        |j                  t        |      j                         ||z  }||z  }t        |t              sJ t        |j	                         |       t        |j                  g d       t        |j                  t        |      j                         t        g dg dgddgfd      }t        g dg dgd	dgfd      }||z  }t        |j                  t        dd
g             t        |j                  g dg dg       ||z  }t        |j                  t        dd
g             t        |j                  g dg dg       y )Nr  r  r  r     r  r  r  r   r   r  )rC  r   r   r   rh   )ru  rv  rw  )rt  r  rX  r   rC  r  )rU  r  rW  )ru  ru  rV  rh   r  )      8@g     A@ru  )rU        ,@      ;@)rU  ru  ru  )rW  rU  rV  )r   r   r  r   r   rK   r  )r   rS   rT   r   r  r   r  s          r<   test_matmul_diazTestDIA.test_matmul_dia  s    9 B888  mm"$Q"$Q3;;=!,3;;=!,ECi#z***3;;=!,3;;
3388Z]%7%78ECi#z***3;;=!,3;;(9:388Z]%7%78 <6B@&I<6Q@&ICi3;;r1g7388n&4&6 	7 Ci3;;r1g7388m&4&6 	7r>   N)r   r   r   r&   r   rL   r  r   r   r  rK  r  r  r3  r~  r   r>  r  r   rB  rH  rJ  rM  rO  r  rX  rc   r>   r<   r7  r7    s     I77BJJ6KU [[5)JK L Q	0  	0 [[56 7:9-19&	>*7r>   r7  )r4  r5  r6  r7  r8  r;  r<  c                       e Zd ZeZy)TestDIAMatrixN)r   r   r   r   r   rc   r>   r<   rZ  rZ    r  r>   rZ  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   rh   rh   r  )r   rh   rh   r   )r  rh   r   r(  rQ  r   r  )r   r   rX   r   )r   r  r  )r  r   r  rh   )r   r  rX   )r  r   r  r   r  r  rP  r   r  rk  )r   r   r   r   r   r   )r   r  r  r  rS   r   s         r<   rK  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  )rX   r  )r   r  r5  )r  r   r  rS  r  r  r  rP  r(  rQ  r_  rk  r  r  )rh   r  )r   r  r  )r   r   r   r   r   )r   r   rS   s      r<   rN  zTestBSR.test_constructor2C  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   rh   r   r  rS  )r   r   r   r   )r   argrS   s      r<   rP  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)rT  r&  )rL   r  r   r   r\   r   r   )r   r  r  r  r  s        r<   r^  zTestBSR.test_constructor4a  so     ww1ay01a&1))ARXX.D'62q!f5Qr>   c                    d}t        j                  |      }t        j                  |||f      }t        j                  d|g      }t        j                  |      }t	        t
              5  | j                  |||f       d d d        t	        t
              5  | j                  |||fd       d d d        t	        t
              5  | j                  |||fd       d d d        y # 1 sw Y   fxY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nr  r   r]  rS  r  )rL   r  r   r   r  r  r   )r   r  	data_1dimr  r  r  s         r<   rd  zTestBSR.test_constructor5j  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   rh   r   r5  rS  )rL   r   r\   r   rA   )r   rJ   r  r  rU   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  rS   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 )
Nrz  r   r   rh   r{  r|  )r  r  rk  r  )
r   r=  r   r   r   r&  r}  r   re  r   rw  s         r<   r~  zTestBSR.test_eliminate_zeros  s    ,!uaUm<>>||Bq#01y!  $!8 Ghhj377C(3;;=#++-8r>   c                 j   t         j                  j                  d       | j                  t         j                  j                  d      d      }d|j                  |j                  dk  <   |j                          t        |j                  d       t        |j                  j                  d       d|j                  |j                  dk  <   |j                          t        |j                  d       t        |j                  j                  d	       t        |j                         t        j                  d             |j                          t        |j                  d       t        |j                  j                  d	       t        |j                         t        j                  d             y )
Nr   )r  r  r  rS  g?B   )r  rh   r   rv  r  )rL   r   rf   r   r  r}  r   re  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  rS  r   r   r   r   r   r   r   r   r`  s      r<   test_bsr_matveczTestBSR.test_bsr_matvec  s_    vg66s3?5Q1771:&&r!,QUAIIK!O,r>   c                     | j                  t        d      j                  dd      d      }t        |j                  d   dz        j                  dd      }t	        ||z  |j                         |z         y )	Nrr  r  r  rs  rS  r   r   r   rt  r`  s      r<   test_bsr_matvecszTestBSR.test_bsr_matvecs  sc    vg66s3?5Q1771:a< ((A.QUAIIK!O,r>   FzBSR does not have a __getitem__r  c                      y r@   rc   r   s    r<   r~  zTestBSR.test_iterator  r  r>   zBSR does not have a __setitem__c                      y r@   rc   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  rS  r  r   r   rh   r   r  r  r  r  r  )	rL   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@   rc   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)
Nrh   r   r   r  r  rk  r  )r   r   r  )r   r   r  )
rL   r   r\   r   r   r  rA   ri   MemoryErrorr  )r   r  r  r  rP   rU   r  r
  vals2vals3r  r  rB   s                r<   r  zTestBSR.test_scalar_idx_dtype  s    !288,((1BHH-xx	"gv6lKgv6jI|,z*QXX^^RXX.QXX^^RXX.QXX^^RXX.QXX^^RXX.
	HH_-EHH]+E""E7F#;<"PA""E7F#;:"NA22 Q1a# 	AE	 Z( 	AA	s   'B2H, ,IIN)r   r   r   r'   r   rL   r  r   r   r  rK  rN  rP  r^  rd  rg  rl  r~  rp  ru  rw  r  r  r3  r~  r  r{  r  skipifIS_COLABr  rc   r>   r<   r\  r\  %  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\  )r4  r5  r6  r7  r8  r<  c                       e Zd ZeZy)TestBSRMatrixN)r   r   r   r    r   rc   r>   r<   r  r    r  r>   r  c                 j   |j                  dd      }t        j                  | j                  t        j                        s.t        j                  | j                  t        j
                        r|| f|z   S | f|z   |fz   S | dk(  j                         }| j                  dd      } | dddxx   dz  cc<   d| ddd<   |d   j                  dkD  r=t        d |D              }d|d   z  f|dd z   }d|d   z  dz   f|dd z   }d| |<   d| |<   t        d |D              }|| f|z   S | f|z   |dz  fz   S )	z-Duplicates entries to produce the same matrixr  Nr   rh   rb  r   c              3   &   K   | ]	  }|d      ywr  rc   ).0ps     r<   	<genexpr>z&_same_sum_duplicate.<locals>.<genexpr>-  s     ,QAaD,s   c              3   >   K   | ]  }|j                  d         yw)rh   N)r:  )r  r  s     r<   r  z&_same_sum_duplicate.<locals>.<genexpr>3  s     7w"7s   )
poprL   ro   rA   r  unsignedintegerr  r:  rn   r  )r  indsrD   r  	zeros_pospospos1pos2s           r<   _same_sum_duplicater    sP   ZZ$'F	}}TZZ*	}}TZZ!3!34>7T>!7T>VI--##%I ;;qq;!D1INIDAJ |1,),,#a&{SW$#a&
}s12w&T
T
7$77D~w~w~!--r>   c                        e Zd Zdd fd
Zej
                  j                  d      d        Zej
                  j                  d      d        Zej
                  j                  d	      d
        Z	 xZ
S )_NonCanonicalMixinFsorted_indicesc                   t         |   } ||g|i |}|j                         dk(  j                         }|d   j                  dkD  }|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   rh   r  r   Nr   gh㈵>gHz>)rtol)superr   r   r  rn   r   r4  r*   _insert_explicit_zero_arg1_for_noncanonicalr   rA   rL   r   r  r   r   r  r  )r   r  r  rF  rD   	constructr}  zero_pos	has_zerosr  r7  arg1NCr  ry  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@   rc   r   s    r<   r  z_NonCanonicalMixin.test_boola  r  r>   z!getnnz-axis counts explicit zerosc                      y r@   rc   r   s    r<   r   z#_NonCanonicalMixin.test_getnnz_axise  r  r>   znnz counts explicit zerosc                      y r@   rc   r   s    r<   rg  z_NonCanonicalMixin.test_emptyi  r  r>   )r   r   r   r   r  r  r  r  r   rg  __classcell__)ry  s   @r<   r  r  ;  s    16 #J [[AB C [[@A B [[89 :r>   r  c                       e Zd ZddZd Zy)_NonCanonicalCompressedMixinc                    t        |j                  |j                  |j                        \  }}}|sOt	        ||dd       D ]=  \  }}||| ddd   j                         ||| ||| ddd   j                         ||| ? |||fS )5Return non-canonical constructor arg1 equivalent to M)r  r   Nr   )r  r  r  r  r}  r&  )r   r}  r  r  r  r  startstops           r<   r  z3_NonCanonicalCompressedMixin._arg1_for_noncanonicalo  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 rm   rc   r   r}  r  r  s       r<   r  z2_NonCanonicalCompressedMixin._insert_explicit_zeroy  s    !A#r>   N)F)r   r   r   r  r  rc   r>   r<   r  r  n  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 )Nrw  r  r  rd  r   r  r  )	r   r   r   r   r   r  r  r  r  )
rA   r  r  rS   r}  r  r  r  r!  r   s
            r<   r  z3_NonCanonicalCSMixin.test_getelement.<locals>.check  s    w  (-.A q@A''CAaA2q\ 1r1 1A 1Q31Q3011 C Jz95q}}bIJr>   )FTr  )r   r  rA   r  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  rh   )
rL   r(   r   r   r   r4  r*   r   r  r=  )r   r  rS   rT   r7  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@   rc   r   s    r<   r  z_NonCanonicalCSMixin.test_inv  r  r>   z&solve broken with non-canonical matrixc                      y r@   rc   r   s    r<   r  z_NonCanonicalCSMixin.test_solve  r  r>   N)
r   r   r   r  r  r  r  r3  r  r  rc   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   rc   r>   r<   r  r        r>   r  c                       e Zd Zy)TestCSRNonCanonicalMatrixNr  rc   r>   r<   r  r    r  r>   r  c                       e Zd Zy)TestCSCNonCanonicalNr  rc   r>   r<   r  r    r  r>   r  c                       e Zd Zy)TestCSCNonCanonicalMatrixNr  rc   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   rS  )r  r  rT  )r   r}  r  r  rB   s        r<   r  z)TestBSRNonCanonical._insert_explicit_zero  s/    GGI!A#www--r>   Fz&diagonal broken with non-canonical BSRr  c                      y r@   rc   r   s    r<   r  z!TestBSRNonCanonical.test_diagonal  r  r>   z"expm broken with non-canonical BSRc                      y r@   rc   r   s    r<   r  zTestBSRNonCanonical.test_expm  r  r>   N)	r   r   r   r  r  r  r3  r  r  rc   r>   r<   r  r    s[    .
 [[5)QR S [[5)MN Or>   r  c                       e Zd Zy)TestBSRNonCanonicalMatrixNr  rc   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  )r  r  r  r  )r   r}  r  r  r  r  s         r<   r  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 rm   )rL   r_r  rA   rE  r  r  r  s       r<   r  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   rh   r   r  r   )	r   rL   r(   r  r  r   r'  rE  r  r=  s     r<   test_setdiag_noncanonicalz-TestCOONonCanonical.test_setdiag_noncanonical  sf    NN266!9%				1a&A		rwwquu~*+,r>   r@   )r   r   r   r  r  r  rc   r>   r<   r  r    s     
-r>   r  c                       e Zd Zy)TestCOONonCanonicalMatrixNr  rc   r>   r<   r  r    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+   r,   zparameter sp_api=z& is not one of 'sparray' or 'spmatrix'z%expm for 64-bit indices not availablez)linsolve for 64-bit indices not availableztest implemented in base classz%test actually requires 64-bit to workztest verifies int32 indexesztest verifies int64 indexes)r  r  r  r  r0  rn  rq  rJ  r)  r  Fr?  
pytestmark)r  r  r3  xslow)marksN)r\  r  r  rB  r7  r  r  r  r5  r  r  rZ  r  r  r  sorteddirr   r,  r3  r  r  r  r  r   rN   param)
sp_apiTEST_CLASSES
SKIP_TESTSr  method_namemethodr  r8   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)r0  r1  r/  r`  ry  zmatrix z has no integer indices)	rL   rA   r   r  r  r  r  r  r  )r   r  rA   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 )NrX   rt   c                 B    | t         j                  j                  dd            }t        j	                  |t         j
                                | t         j                  j                  dd            }t        j	                  |t         j                               y )NrX   r   r  )rL   r   r3  r   r  r\   ri   )mat_clsr  r   s     r<   r  z4Test64Bit.test_decorator_maxval_limit.<locals>.check9  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_limit5  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      )NFrX  r  z#both 32 and 64 bit indices not seen)r   rL   r   r3  r  r\   ri   rv   )r  seen_32seen_64r  r  r   s        r<   r  z5Test64Bit.test_decorator_maxval_random.<locals>.checkG  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_randomC  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   )rd   ry   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   rh   r   r  r  r   rb  r   r  )r   r  r   rb  F)r  rv   rf  r0  r  r  r   r  r   rP   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>   rd   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  )rf  r0  r  r  r  s       r<   check_unlimitedz5Test64Bit.test_downcast_intp.<locals>.check_unlimitedo  s     1v1v1v67AOOO#EEqEMy)45AOOO#EEqEMy)45AOOO#%*A"r>   )	r   rL   ri   r!   r"   r$   r   r   r   )r   r  r  s      r<   test_downcast_intpzTest64Bit.test_downcast_intpW  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  rc   r>   r<   r  r  #  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rc   )r   )r   r  r  r   r  s        r<   _check_resiliencyzRunAll64Bit._check_resiliency  s*     
!	&2	&	/ 
'	/ 	c;r>   N)r   r   r   r   rc   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 NrX   r  r   r   r  r  s      r<   test_resiliency_limit_10z'Test64BitArray.test_resiliency_limit_10      sKbAr>   rh   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   rL   r\   r  s      r<   test_resiliency_all_32z%Test64BitArray.test_resiliency_all_32      sKRXXFr>   c                 H    | j                  ||t        j                         y r  r   rL   ri   r  s      r<   test_resiliency_all_64z%Test64BitArray.test_resiliency_all_64  r  r>   N)r   r   r   r  r  parametrizer  r  rF  r  r  r  rc   r>   r<   r  r    s    
 [[.I0FGB HB [[1[[.I0FG> H > [[.I0FGG HG [[.I0FGG HGr>   r  c                      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>   rh   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  rF  r  r  r  r  r  r  r  rc   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   rh   r  r  r  r  r  r  r  r  zcannot be broadcastri  )r   rh   r   r  r5  rk  r(  r  )rL   r   r   r!   r   r"   _broadcast_tor   r   broadcast_tor  r   r  )rP   rU   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&  r4  r  r/  sysr  r   r  numpyrL   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   numpy.testingr   r   r   r   r   r   r   numpy.exceptionsr   typesr   scipy.linalgr}   r  r~   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   scipy.sparse._baser-   scipy.sparse._sputilsr.   r/   r0   r1   r2   scipy.sparse.linalgr3   r4   r5   scipy._lib.decoratorr6   r   r  r=   rE   	frozensetr  rV   r5  r4  r   r   r   r   r   r   r  r  r  r  r  r  r  rH  rc  contextmanagerr  r  r  r  r  r  r  r0  r@  rB  r  r  r  r  r  r  r  r  r  r5  r7  rZ  r\  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  rc   r>   r<   <module>r7     s        
  *     , , , ,   C C C C C C
 (F F / / *ckk)/
'
 %eW- (  !   > " JN?DNb$ $6"$ "$H 4 DQ 7 Q 7h@| |~c+ c+L % % %.@ @F
MK MK`Y0 Y0x B Bk$ k$\ L  LF_K _KD`0 `0FL5 L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'         R-u(-e/45J R-jL'         U7ueE/45',u> U7p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>   