
    doi                        S r SSKrSSKJr  SSKJrJrJrJr  SSK	r	SSK	J
r  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSK J!r"  / S	Qr#S S
 jr$S S jr% " S S5      r&S r'\	RP                  RS                  S\RT                  \RV                  /5      S 5       r,\	RP                  RS                  S\RT                  \RV                  /5      S 5       r-S r.S r/\	RP                  RS                  S\#5      S 5       r0S r1S r2S r3S r4S r5\	RP                  RS                  S\#5      S 5       r6S r7S r8\	RP                  RS                  S\#5      S 5       r9S r:g)!z)test sparse matrix construction functions    N)array)assert_equalassert_assert_array_equalassert_array_almost_equal_nulp)raises)check_free_memory)
csr_matrix
coo_matrix	csr_array	coo_array	csc_array	bsr_array	dia_array	dok_array	lil_array
csc_matrix
bsr_matrix
dia_matrix
lil_matrixsparrayspmatrix
_construct)rand)csrcsccoobsrdialildokc           	          [         R                  R                  U5      nUR                  n[        R                  " XX#XEU5      $ N)nprandomdefault_rngstandard_normal	construct)mndensityformatdtyperngdata_rvss          ]/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/sparse/tests/test_construct.py_sprandnr1      s8    
))


$C""HA'5xHH    c           	          [         R                  R                  U5      nUR                  n[        R
                  " X4X#UXVS9$ )N)r+   r,   r-   r.   data_sampler)r$   r%   r&   r'   r(   random_array)r)   r*   r+   r,   r-   r.   r4   s          r0   _sprandn_arrayr6   !   sB    
))


$C&&L!!1&'PU&)F Fr2   c            
          \ rS rSr\R
                  R                  S\\\	\
\\\/5      S 5       r\R
                  R                  S\\\\\\/5      S 5       rS rS rS rS rS	 rS
 rS rS rS r\R
                  R                  S\R@                  \RB                  /5      S 5       r"\R
                  R                  S\RF                  \RB                  /5      S 5       r$\R
                  R                  S\RF                  \RB                  /5      S 5       r%S r&\R
                  R                  SSS/SS//SS4SS/SS//SS4SS/SS///SS4/5      S 5       r'S r(S r)S r*S r+S r,\R
                  R                  S \\	/5      S! 5       r-S" r.S# r/S$ r0\R
                  R                  S \\	/5      S% 5       r1S& r2\R
                  R                  S'\Rf                  \Rh                  45      S( 5       r5S) r6S* r7\R
                  Rp                  \R
                  Rs                  S+5      S, 5       5       r:S- r;S. r<S/ r=S0 r>S1 r?S2 r@S3 rA\R
                  R                  S4SS5\BR                  R                  S55      /5      S6 5       rE\R
                  R                  S4SS5\BR                  R                  S55      /5      S7 5       rFS8 rGS9 rHS: rIS; rJS<rKg)=TestConstructUtils)   clsc                 z    [         R                  " [        SS9   U" S5        S S S 5        g ! , (       d  f       g = f)NzEscipy sparse array classes do not support instantiation from a scalarmatchr   )pytestr   
ValueErrorselfr:   s     r0    test_singleton_array_constructor3TestConstructUtils.test_singleton_array_constructor+   s1    
 ]].
 F
 
 
s   	,
:c                 4    U" S5      R                   S:X  d   eg)a  
This test is for backwards compatibility post scipy 1.13.
The behavior observed here is what is to be expected
with the older matrix classes. This test comes with the
exception of dok_matrix, which was not working pre scipy1.12
(unlike the rest of these).
r      rF   Nshaper@   s     r0   !test_singleton_matrix_constructor4TestConstructUtils.test_singleton_matrix_constructor9   s     1v||v%%%r2   c                 p   [        / SQ/5      n[        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      n/ nUR                  USSSS//45        UR                  US/SSS//45        UR                  US/SSS/S//45        UR                  US/SSSS//45        UR                  US/SSSS//45        UR                  US/SSSS//45        UR                  US/SSSS/SS//45        UR                  US/SSSS/SS//45        UR                  US/SSSS/SS//45        UR                  US/SS	/ S
Q/ SQ/ SQ/45        UR                  US/SS	/ SQ/ SQ/ SQ/45        UR                  US/SS/ SQ/ SQ/ SQ/45        UR                  USS/SS/ SQ/ SQ/ SQ/45        UR                  USS/SS	/ SQ/ SQ/ SQ/45        UR                  USS/SS/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/45        UR                  U/ S QSS/ S!Q/ S"Q/ S#Q/ S$Q/ S%Q/ SQ/45        UR                  U/ S&QSS/ S'Q/ S(Q/ S)Q/ S*Q/ S+Q/ S,Q/45        UR                  U/ S-Q[        US   5      [        US   5      / S.Q/ S/Q/ S0Q/ S1Q/ SQ/45        U H  u  pVpxn	[        US   5      U:X  a3  Xx:X  a.  [        [        R
                  " XV5      R                  5       U	5        [        [        R
                  " XVXx5      R                  5       U	5        [        [        R
                  " XVXx45      R                  5       U	5        M     g )2NrF               )         	   
   )               r   rF   rM   rN   rO   rF   r   r   r   r   rM   r   r   r   r   rN   r   )r   r   r   rO   rP   r   r   rN   r   r   )r   r   r   rO   r   )r   r   r   r   rP   )rF   r   rS   r   rM   r   r   r   rN   rQ   r   r   r   rF   rR   r   r   r   rM   rS   r   rQ   )r   r   rN   r   r   r   )r   r   r   rO   r   r   )r   r   r   r   rP   r   )rQ   r   r   r   r   r   r   rR   r   r   r   r   r   r   rS   r   r   r   r[   r   rF   )rQ   rW   r   r   r   r   )rF   rR   rX   r   r   r   )r   rM   rS   rY   r   r   )r   r   rN   rT   rZ   r   )r   r   r   rO   rU   r   rM   r[   )r   r   rS   r   r   )rV   r   r   rT   r   )r   rW   r   r   rU   r   r   rX   r   r   rF   r   r   rY   r   r   rM   r   r   rZ   )r[   rF   rM   )r   rR   rX   r   r   )rF   r   rS   rY   r   )r   rM   r   rT   rZ   )r   r   rN   r   rU   )r   appendlenr   r(   spdiagstoarray)
rA   diags1diags2diags3casesdor)   r*   results
             r0   test_spdiagsTestConstructUtils.test_spdiagsG   sk   ()(* +()+ , faAu-.fqc1a1#/0fqc1a1#qc34fqc1a1Q%12fqc1a1Q%12fbT1a1Q%12fqc1a1Q%178fbT1a1Q%178fqc1a1Q%178fqc1a)Ii)HIJfqc1a)Ii)HIJfqc1a+k+)NOPfqeQGGG+DEFfr!faYy,KLMfqfa].;.;.;.;.;-= > 	? 	fh1/A0B0B0B0B0B/D E 	F 	fiA1A1@1@1@1@0B C 	D 	fj#fQi.#fQi.''''&	() 	* #(A!1Q4yA~!&Y..q4<<>G**16>>@&I**1!8@@BFK	 #(r2   c                    [        / SQ5      n[        / SQ5      n[        / SQ5      n/ nUR                  US S SSS//45        UR                  US S /S/SS//45        UR                  US S /S/SS/S//45        UR                  US S /S/SSS//45        UR                  US S /S/SSS//45        UR                  US S	 /S/S
SS/SS	//45        UR                  US S /S/S
SS/SS//45        UR                  US S /S/S/ SQ/ SQ/ SQ/45        UR                  US S /S/S/ SQ/ SQ/ SQ/45        UR                  US S /S/S/ SQ/ SQ/ SQ/45        UR                  US S	 /S/S/ SQ/ SQ/ SQ/45        UR                  US S /S/S/ SQ/ SQ/ SQ/45        UR                  US S /S/S/ SQ/ SQ/ SQ/45        UR                  US S /S	/S/ SQ/ SQ/ SQ/45        UR                  US S	 /S/S/ S Q/ S!Q/ SQ/45        UR                  US S /S"/S/ S#Q/ SQ/ SQ/45        UR                  US S /S$/S%/ S&Q/ S&Q/ S&Q/ S&Q/ S'Q/45        UR                  US S	 /S(/S%/ S&Q/ S&Q/ S&Q/ S'Q/ S)Q/45        UR                  US S /S/S%/ S&Q/ S&Q/ S'Q/ S)Q/ S*Q/45        UR                  US S /S/S%/ S&Q/ S'Q/ S)Q/ S*Q/ S&Q/45        UR                  US S /S/S%/ S'Q/ S)Q/ S*Q/ S&Q/ S&Q/45        UR                  US S	 /S/S%/ S+Q/ S,Q/ S&Q/ S&Q/ S&Q/45        UR                  US S /S	/S%/ S-Q/ S&Q/ S&Q/ S&Q/ S&Q/45        UR                  US S US S /SS	/S./ S/Q/ S)Q/ S*Q/45        UR                  US S	 US S /SS/S/ S0Q/ S1Q/ S2Q/45        UR                  US S" US S /S	S(/S3/ S4Q/ S5Q/ S6Q/ S7Q/ S8Q/ S9Q/45        UR                  US S" X#S S" // S:QS;/ S<Q/ S=Q/ S>Q/ S?Q/ S@Q/45        UR                  US S	 US S U// SAQSB/ SCQ/ SDQ/ SEQ/ SFQ/ SGQ/ SHQ/45        UR                  U/S/SS//45        UR                  US S U/SS	/S./ S/Q/ S)Q/ S*Q/45        UR                  [        R                   " / SIQ/ SJQ/5      SS/S./ S'Q/ SKQ/ SLQ/45        UR                  / SMQ/ SNQS./ SOQ/ SPQ/ SQQ/45        U H  u  pVpxU< SRU< SRU< SRU< 3n	[        [        R
                  " XVUSS9R                  5       XST9  US   US   :X  d  MP  [        US   SU5      (       d  Mf  [        US   5      [        U5      ::  d  M  [        [        R
                  " XVSV9R                  5       XST9  M     g )WN      ?       @      @      @      @      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@rF   r   rE   rM   rF   rF   rM   rM   rM   rM   r[   rN   )rN   rO   r\   r]   r^   )r   rF   r   r   )r   r   rM   r   )r   r   r   rN   rN   rP   )r   r   r   r   r   )rF   r   r   r   r   )r   rM   r   r   r   r_   )r   rF   r   r   r   )r   r   rM   r   r   )r   r   r   rN   r   )r   r   rF   r   r   )r   r   r   rM   r   )r   r   r   r   rN   )r   r   r   rF   r   )r   r   r   r   rM   rO   )r   r   r   r   rF   rj   )rP   rN   r   r   r   rF   r   r   re   r`   ra   r   rF   r   )r   r   rM   r   r   rF   rN   rN   )rF   r   rQ   rb   rc   rd   )rQ   rQ   )r   r   rF   r   r   r   )r   r   r   rM   r   r   )r   r   r   r   rN   r   )rQ   r   r   r   r   rO   rf   rg   rh   rP   rP   )rQ   rV   r   r   r   )rF   rR   rW   r   r   )r   rM   rS   rX   r   )r   r   rN   rT   rY   )r   r   r   rO   rU   ri   rQ   rP   )r   r   rQ   r   r   )rV   r   r   rR   r   )r   rW   r   r   rS   rk   rl   rm   )r}   r~   r   )r   r   r   )rO   rM   r   )r   rP   rN   )r}   g       r}   )rF   r   r[   )r   rF   r   )rF   r   rF   )r   rF   r    offsetsrH   )err_msg__len__r   )
r   rn   r$   r   r(   diagsrq   hasattrro   max)
rA   abcru   rv   rw   rH   rx   r   s
             r0   
test_diagsTestConstructUtils.test_diags   s    +,,-01aeQ!./q!ugsFaSE23q!ugsFaS!I67q!ugsFaUG45q!ugsFaUG45q!ugsFaUAa5M:;q!ugrdFaUAa5M:;q!ugsFYy,KLMq!ugsFYy,KLMq!ugtVk+k-RSTq!ugtVk+k-RSTq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugsFWWWWW,UVWq!ugsFWWWWW,UVWq!ugsFWWWWW,UVWq!uQrUmaUFWWW4MNOq!uQrUmbVVi	)5TUVq!uQrUmaVVm5B5B5B5B5B6D E 	F 	q!uQ!uox/<K<K<K<K	:M N 	O
 	q!uQrU1oy&?:J:I:I:I:I;K L 	M 	qcA3!./q!uQi!AIy0QRSHHo78rF	9-	
 	 	nh9C9C9E F 	G $)A%Qqe1UIQvj9GUCKKM2 aE!H$AaD),,!IU+Y__Q:BBD#6 $)r2   c                     [        / SQ5      n[        [        R                  " U5      R	                  5       [
        R                  " U5      5        g )Nr|   )r   r   r(   r   rq   r$   diagrA   r   s     r0   test_diags_default%TestConstructUtils.test_diags_default   s1    +,Y__Q'//12771:>r2   c                 d    [        / SQ/ SQ/5      n[        [        [        R                  U5        g )NrL   )rM   rN   rO   rP   rQ   )r   assert_raisesr?   r(   r   r   s     r0   test_diags_default_bad)TestConstructUtils.test_diags_default_bad   s!    ?O45j)//15r2   c           	      R   [        / SQ5      n[        / SQ5      n[        / SQ5      n/ nUR                  US S /SS45        UR                  US S X#S S // SQS	45        UR                  US S
 X2S S // SQS45        UR                  US S
 X2S S // SQS 45        UR                  / / SQS 45        UR                  S/S/S45        UR                  U/SS 45        U H$  u  pVn[        [        [        R
                  XVUS9  M&     [        [        [        R
                  S //S/S9  g )Nr|   r   r   r   rE   rO   rN   rh   r   rM   ri   r   r}   rO   rO   r   r   )r   rn   r   r?   r(   r   	TypeError)rA   r   r   r   ru   rv   rw   rH   s           r0   test_diags_bad!TestConstructUtils.test_diags_bad   s$   +,,-01q!ugq&)*q!uQ!uox89q!uQ!uoy&9:q!uQ!uoy$78b)T*+sebT6*+qc1d^$ KA%*iooq5Q ! 	iD6(QCHr2   c                     [         R                  R                  S5      nS GHM  nSUS-  -   UR                  SS5      -   n[         R                  " U* S-   US-
  5      nUR                  U5        US U nU Vs/ s H  oQR                  U[        U5      -
  5      PM!     nn[        R                  " XdS9n[        [        Xd5       VV	s/ s H  u  p[         R                  " X5      PM     sn	n5      n
[        UR                  5       U
5        [        U5      S:X  d  M  [        R                  " US   US   S9n[         R                  " US   US   5      n
[        UR                  5       U
5        GMP     g s  snf s  sn	nf )Ni  )rF   rM   rN   rO   rP   rU   rF   rM   r   rU   r   )r$   r%   RandomStaterandintarangeshuffler   absr(   r   sumzipr   r   rq   ro   )rA   r.   n_diagsr*   r   q	diagonalsmatxj	dense_mats              r0   test_diags_vs_diag%TestConstructUtils.test_diags_vs_diag   s4    ii##D)*GGQJQ!33Aii1ac*GKK hw'G7>?w!!c!f*-wI?//)=Cs97NO7NtqRWWQ]7NOPI*3;;=)D7|q ooilGAJGGGIaL'!*=	.s{{}iH# + @ Ps   9&E5"E:c                     [         R                  " S/S/S[        S9n[        UR                  [        5        [        UR                  5       SS/SS//5        g )Ng@r   r   r   rH   r-   rM   )r(   r   intr   r-   rq   rA   r   s     r0   test_diags_dtype#TestConstructUtils.test_diags_dtype  sE    OOSEA3fCHQWWc"QYY[Aq6Aq6"23r2   c           	          / SQn[        SS5       HR  n[        [        R                  " XS9R	                  5       [        R                  " U/U/S9R	                  5       5        MT     g )N)        r}   r~   r   r   r   rQ   r   )ranger   r(   r   rq   )rA   rv   ks      r0   test_diags_one_diagonal*TestConstructUtils.test_diags_one_diagonal  sO    %r1A6>>@"!qc:BBDF r2   c                 \    [         R                  " / 5      n[        UR                  S5        g )Nr   r   )r(   r   r   rH   r   s     r0   test_diags_empty#TestConstructUtils.test_diags_empty  s    OOBQWWf%r2   identityc                    [        U" S5      R                  5       S//5        [        U" S5      R                  5       SS/SS//5        U" SSSS9n[        UR                  [        R                  " S5      5        [        UR                  S5        [
         HC  nU" SUS9n[        UR                  U5        [        UR                  5       / S	Q/ S
Q/ SQ/5        ME     g NrF   rM   r   rN   int8r   )r-   r,   r,   r   r   r   r   rq   r-   r$   r,   sparse_formats)rA   r   Ifmts       r0   test_identity TestConstructUtils.test_identity  s    Xa[((*aSE2Xa[((*aUAa5M:QfU3QWWbhhv./QXXu%!C3'A3'www&?@ "r2   eyec                 x   [        U" SS5      R                  5       S//5        [        U" SS5      R                  5       / SQ/ SQ/5        [        U" SS5      R                  5       SS/SS/SS//5        [        U" SS5      R                  5       / SQ/ SQ/ SQ/5        [        U" SSSS	9R                  [        R                  " S5      5        S
 H  nS
 H  n[	        SS5       H  nUS:  a  XC:  d  US:  a:  [        U5      U:  a+  [        R                  " [        SS9   U" X#US9  S S S 5        MN  [        U" X#US9R                  5       [        R                  " X#US95        X#:X  d  M  [        U" X$S9R                  5       [        R                  " X#US95        M     M     M     g ! , (       d  f       M  = f)NrF   rM   rN   r   r   r   r   int16r-   r   r   rQ   zOffset.*out of boundsr<   r   )
r   rq   r-   r$   r   r   r>   r   r?   r   )rA   r   r)   r*   r   s        r0   test_eyeTestConstructUtils.test_eye   su   S1X%%'1#/S1X%%'''):;S1X%%'1Q%1qe)<=S1X%%'''')BCS17+11288G3DEAr!A A!%QUs1vz#]]&.E  N  %N224FF11- 6( #A 3 3 5 "qq 1) %   s   !F*	*
F9c                    [        U" S5      R                  5       S//5        [        U" S5      R                  5       SS/SS//5        U" SSSS9n[        UR                  [        R                  " S5      5        [        UR                  S5        [
         HC  nU" SUS9n[        UR                  U5        [        UR                  5       / S	Q/ S
Q/ SQ/5        ME     g r   r   )rA   r   r   r   s       r0   test_eye_oneTestConstructUtils.test_eye_oneD  s    SV^^%u-SV^^%1qe}5.QWWbhhv./QXXu%!CAc"A3'www&?@ "r2   c                     [        [        R                  " S5      [        5      (       d   e[        [        R                  " S5      [        5      (       a   eg )NrN   )
isinstancer(   	eye_arrayr   r   rA   s    r0   test_eye_array_vs_matrix+TestConstructUtils.test_eye_array_vs_matrixR  s?    )--a0'::::immA.88888r2   zarr,kw_format,out_formatr   rF   Nr   r   c                     [        U5      n[        R                  " XDUS9R                  U:X  d   e[        R                  " XAUS9R                  U:X  d   e[        R                  " XUS9R                  U:X  d   eg )Nr   )r   r(   kronr,   )rA   arr	kw_format
out_formatsparrs        r0   test_kron_output_format*TestConstructUtils.test_kron_output_formatV  sj     #~~e9=DD
RRR~~e;BBjPPP~~c;BBjPPPr2   c           	      r   / nUR                  [        S//5      5        UR                  [        S//5      5        UR                  [        S//5      5        UR                  [        S//5      5        UR                  [        S/S//5      5        UR                  [        SS//5      5        UR                  [        SS/SS//5      5        UR                  [        SS/SS//5      5        UR                  [        / S	Q/ S
Q/5      5        UR                  [        SS/SS/SS//5      5        UR                  [        / SQ/ SQ/ SQ/5      5        UR                  [        / SQ/5      5        UR                  [        / SQ/ SQ/5      5        U H  n[        U5      nU H  n[        U5      n[        R                  " X$5      n[
        SS  H_  n[        R                  " X5US9n[        UR                  U5        [        UR                  5       U5        [        U[        5      (       a  M_   e   M     M     UR                  [        / SQ5      5        UR                  [        / SQ/ SQ//5      5        UR                  [        SS//SS//SS//SS///5      5        U Hg  n[        U5      nU HS  n[        U5      n[        R                  " X$5      n[        R                  " X5SS9n[        UR                  5       U5        MU     Mi     [        / SQ/ SQ/5      n[        / SQ/ SQ/ SQ/5      n[        U5      n[        U5      n[        R                  " X$5      n[
         H_  n[        R                  " X5US9n[        UR                  U5        [        UR                  5       U5        [        U[        5      (       a  M_   e   [        R                  " [        U5      [        U5      WS9n[        UR                  U5        [        UR                  5       U5        [        U[        5      (       d   eg )Nr   r[   rO   rU   rF   rM   rN   rP   r   rM   irS   r   rY   rQ   )rP   rO   rO   r   )rQ   r   rS   )r   rF   r   rM   r   rP   rS   )      ?g      ?r   g      
@)r   g      @r   r   r   )r   rF   rM   r   r   )rn   r   r   r$   r   r   r(   r   r,   r   rq   r   r   r   r
   r   )	rA   ru   r   car   cbexpectedr   rx   s	            r0   	test_kronTestConstructUtils.test_krona  sV   UQC5\"URD6]#UQC5\"URD6]#UQC!:&'UQF8_%UQFQF+,-UQFQF+,-UJ
345UQFQFQF345UIy)<=>U1234U1>BCD A1Bq\771=)!A.C&^^B3?F 4&v~~'7B%fg6666	 /   	U9%&UY	2345UaVH1vh!QAq6(CDEA1Bq\771="u="6>>#3X>	   (.9:9i34q\q\771=!C^^B37F,v~~/:fg....	 " 
1z!}SIV]]C(6>>+X6&(++++r2   c                    [         R                  " [        SS9   [        R                  " S/S//SS///5        S S S 5        [         R                  " [        SS9   [        R                  " SS///S/S//5        S S S 5        [        R                  " [        SS///5      S/S///5        [        R                  " SS///[        S/S///5      5        [        R                  " S/S/// SQ5        [        R                  " SS/S/S//5        [        R                  " S/S//[        / SQ5      5        [        R                  " [        SS/5      S/S//5        g ! , (       d  f       GN)= f! , (       d  f       N= f)Nzexpected 2D array or matrixr<   r   rF   r   )r>   r   r   r(   r   r   r   s    r0   test_kron_ndim_exceptions,TestConstructUtils.test_kron_ndim_exceptions  s1   ]]9,IJNNQC!:!Qz2 K]]9,IJNNaVH:aSz2 K 	yAq6(,aSzl;!Qz9sQCj\#:; 	aSz9-1vaSz*aSz9Y#78y!Q(A3*5 KJJJs    E E.
E+.
E<c                     Sn[         R                  " S/SU4US-
  S S9n[         R                  " S/US4SU-
  S S9n[         R                  " X"5        [         R                  " X35        g )Ni   rF   )rH   r   r-   )r(   diags_arrayr   )rA   r*   r   r   s       r0   test_kron_large"TestConstructUtils.test_kron_large  s_    !!1#aVQqSM!!1#aVQqSMqqr2   c           
         / nUR                  [        S//5      5        UR                  [        S//5      5        UR                  [        S//5      5        UR                  [        S//5      5        UR                  [        SS/SS//5      5        UR                  [        SS/SS//5      5        UR                  [        / S	Q/ S
Q/ SQ/5      5        UR                  [        / SQ/ SQ/ SQ/5      5        U H  nU H  n[        R                  " [	        U5      [	        U5      5      R                  5       n[        R                  " [        R                  " UR                  S   5      U5      [        R                  " U[        R                  " UR                  S   5      5      -   n[        XE5        M     M     [        R                  " [        W5      [        W5      5      R                  5       n[        UW5        g )Nr   r[   rO   rU   rF   rM   rN   rP   r   r   )r   rN   r   r   )r   rP   r[   )rO   r   rS   )rn   r   r(   kronsumr   rq   r$   r   r   rH   r   r
   )rA   ru   r   r   rx   r   s         r0   test_kronsumTestConstructUtils.test_kronsum  sv   UQC5\"URD6]#UQC5\"URD6]#UQqE1Q%=)*UQqE1Q%=)*UHXg678UGHX678 A"**9Q<1FNNPGGBFF1771:$6: gga
);<="64	   "":a=*Q-@HHJ68,r2   c                    [         R                  " [        SS9   [        R                  " S/S//[        SS/5      5        S S S 5        [         R                  " [        SS9   [        R                  " [        SS/5      S/S//5        S S S 5        [        R                  " SS/SS//S/5        g ! , (       d  f       Nu= f! , (       d  f       N>= f)Nzrequires 2D inputr<   r   rF   rM   )r>   r   r?   r(   r  r   r   s    r0   test_kronsum_ndim_exceptions/TestConstructUtils.test_kronsum_ndim_exceptions  s    ]]:-@AsQCj)QF*;< B]]:-@AiA/1#s< B 	Aq6Aq6*QC0 BAAAs   'B0"'C0
B>
Ccoo_clsc                    U" SS/SS//5      nU" SS//5      n[        SS/SS/SS//5      n[        [        R                  " X#/5      R	                  5       U5        [        [        R                  " X#/[
        R                  S9R                  [
        R                  5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        R                  " UR                  5       UR                  5       /S[
        R                  S	9n[        UR                  [
        R                  5        [        UR                  R                  [
        R                  5        [        UR                  R                  [
        R                  5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        R                  " UR                  5       UR                  5       /S
[
        R                  S	9n[        UR                  [
        R                  5        [        UR                  R                  [
        R                  5        [        UR                  R                  [
        R                  5        g )NrF   rM   rN   rO   rP   rQ   r   r   )r,   r-   r   )r   r   r(   vstackrq   r$   float32r-   todoktocsrindicesint32indptrtocsc)rA   r	  ABr   rx   s         r0   test_vstackTestConstructUtils.test_vstack  s
   aUAa5M"aUG1a&a&a&" # 	Y%%qf-557BY%%qfBJJ?EEZZ	! 	Y%%qwwy!'')&<=EEGRY%%qwwy!'')&<=EEG	!!1779aggi"8).bjjBV\\2::.V^^))2884V]](("((3Y%%qwwy!'')&<=EEG	!!1779aggi"8).bjjBV\\2::.V^^))2884V]](("((3r2   c                 .   [        / SQ/ SQ/ SQ/5      nUR                  R                  [        R                  5      Ul        UR
                  R                  [        R                  5      Ul        [        R                  " X/5      R                  R                  [        R                  :X  d   e[        R                  " X/5      R                  R                  [        R                  :X  d   e[        / SQ/ SQ/ SQ/5      nUR                  R                  [        R                  5      Ul        UR
                  R                  [        R                  5      Ul        [        R                  " X/5      R                  R                  [        R                  :X  d   e[        R                  " X/5      R                  R                  [        R                  :X  d   e[        / SQ/ SQ/ SQ/5      n[        S UR                   5       5      Ul        [        R                  " X/5      R                  S   R                  [        R                  :X  d   e[        R                  " X/5      R                  S   R                  [        R                  :X  d   eg )Nr   r   c              3   ^   #    U  H#  oR                  [        R                  5      v   M%     g 7fr#   astyper$   int64.0cos     r0   	<genexpr>ITestConstructUtils.test_vstack_maintain64bit_idx_dtype.<locals>.<genexpr>       @x288,,x   +-r   )r   r  r  r$   r  r  r(   r  r-   hstackr   r   tuplecoordsrA   Xs     r0   #test_vstack_maintain64bit_idx_dtype6TestConstructUtils.test_vstack_maintain64bit_idx_dtype  s   y)Y7888??288,II$$RXX.	'..44@@@'..44@@@y)Y7888??288,II$$RXX.	'..44@@@'..44@@@y)Y78@qxx@@'..q177288CCC'..q177288CCCr2   c                    SS/SS//nSS//n[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   eg NrF   rM   rN   rO   rP   rQ   )r   r(   r  r   r   r   r   rA   r  r  s      r0   test_vstack_matrix_or_array.TestConstructUtils.test_vstack_matrix_or_array  s    UAa5MUG)**IaL)A,+GH'RRRR)**IaL*Q-+HI7SSSS)**JqM9Q<+HI7SSSS)**JqM:a=+IJHUUUUr2   c                    [        / SQ/ SQ/5      n[        / SQ5      n[        / SQ5      n[        R                  " U[        R
                  " / SQ5      /5      R                  S:X  d   e[        R                  " U[        R
                  " S//5      /5      R                  S:X  d   e[        R                  " X"/5      R                  S:X  d   e[        R                  " X"/5      R                  S:X  d   e[        R                  " X/5      R                  S	:X  d   e[        R                  " X"/5      R                  S:X  d   e[        R                  " X#/5      R                  S:X  d   e[        R                  " X/5      R                  S:X  d   e[        R                  " X#/5      R                  S:X  d   e[        R                  " [        S
S9   [        R                  " U[        R
                  " SS/5      /5        S S S 5        [        R                  " [        SS9   [        R                  " U[        R
                  " SS/5      /5        S S S 5        g ! , (       d  f       N_= f! , (       d  f       g = f)Nr   r   r   r   r   )rF   rO   )rF   rQ   )rM   rN   )rM   rQ   zincompatible row dimensionsr<   zincompatible column dimensions)r   r   r(   r  r$   r   rH   r#  r>   r   r?   )rA   r   arr1darr1dcoos       r0   test_vstack_1d_with_2d)TestConstructUtils.test_vstack_1d_with_2d  s   I./)$Y'bhhy&9 :;AAVKKK1# 89??6III/55???/55??? 
+11V;;;/55??? 1288FBBB066&@@@ 1288FBBB]]:-JKc288QF#345 L]]:-MNc288QF#345 ON LKNNs   /I"/I+
I(+
I9c                    U" SS/SS//5      nU" S/S//5      n[        / SQ/ SQ/5      n[        [        R                  " X#/5      R	                  5       U5        [        [        R                  " X#/[
        R                  S	9R                  [
        R                  5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        [        R                  " UR                  5       UR                  5       /[
        R                  S	9R                  [
        R                  5        [        [        R                  " UR                  5       UR                  5       /5      R	                  5       U5        [        [        R                  " UR                  5       UR                  5       /[
        R                  S	9R                  [
        R                  5        g )
NrF   rM   rN   rO   rP   rQ   rF   rM   rP   rN   rO   rQ   r   )r   r   r(   r#  rq   r$   r  r-   r  r  r  )rA   r	  r  r  r   s        r0   test_hstackTestConstructUtils.test_hstack'  s   aUAa5M"aS!I)#% &Y%%qf-557BY%%qfBJJ?EEZZ	! 	Y%%qwwy!'')&<=EEGRY%%qwwy!'')&<=EEG	Y%%qwwy!'')&<,.JJ88=ZZ	! 	Y%%qwwy!'')&<=EEG	Y%%qwwy!'')&<,.JJ88=ZZ	!r2   c                    SS/SS//nS/S//n[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   e[        [        R                  " [        U5      [        U5      /5      [        5      (       d   eg r+  )r   r(   r#  r   r   r   r   r,  s      r0   test_hstack_matrix_or_array.TestConstructUtils.test_hstack_matrix_or_array?  s    UAa5MS!I)**IaL)A,+GH'RRRR)**IaL*Q-+HI7SSSS)**JqM9Q<+HI7SSSS)**JqM:a=+IJHUUUUr2   block_arrayc                    [        SS/SS//5      n[        S/S//5      n[        S//5      n[        S5      n[        / S	Q/ S
Q/ SQ/5      n[        U" X#/S U//5      R                  5       U5        [	        S[
        R                  S9n[        U" UR                  5       UR                  5       /XtR                  5       //5      R                  5       U5        [        U" UR                  5       UR                  5       /UR                  5       UR                  5       //5      R                  5       U5        [        / SQ/ SQ/ SQ/5      n[        U" US /S U//5      R                  5       U5        [        U" UR                  5       UR                  R                  5       /XtR                  5       //5      R                  5       U5        [        U" UR                  5       UR                  R                  5       /UR                  5       UR                  5       //5      R                  5       U5        [	        S[
        R                  S9n[        SS/SS/SS//5      n[        U" S U/US //5      R                  5       U5        [        U" UR                  R                  5       UR                  5       /UR                  5       U//5      R                  5       U5        [        U" UR                  R                  5       UR                  5       /UR                  5       UR                  5       //5      R                  5       U5        [
        R                  " S5      n[        U" S S //5      R                  5       U5        [        U" S U/US //5      R                  5       U5        [        S//5      n[        U" S U/US //5      R                  5       U5        [        [        5       n	U" U/U//5        S S S 5        W	R                  S5        [        [        5       n	U" UR                  5       /UR                  5       //5        S S S 5        U	R                  S5        [        [        5       n	U" UR                  5       /UR                  5       //5        S S S 5        U	R                  S5        [        [        5       n	U" X$//5        S S S 5        U	R                  S5        [        [        5       n	U" UR                  5       UR                  5       //5        S S S 5        U	R                  S5        [        [        5       n	U" UR                  5       UR                  5       //5        S S S 5        U	R                  S5        g ! , (       d  f       GN= f! , (       d  f       GNW= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nx= f)NrF   rM   rN   rO   rP   rQ   rR   r   r5  r6  )r   r   rR   r   r   )rF   rM   r   )rN   rO   r   rE   r   z.Got blocks\[1,0\]\.shape\[1\] == 1, expected 2z"incompatible dimensions for axis 1z4Mismatching dimensions along axis 1: ({1, 2}|{2, 1})z.Got blocks\[0,1\]\.shape\[0\] == 1, expected 2z4Mismatching dimensions along axis 0: ({1, 2}|{2, 1})z"incompatible dimensions for axis 0)r   r   r   rq   r   r$   r  r  r  Temptyr   r?   r=   )
rA   r<  r  r  CDr   EZexcinfos
             r0   test_block_creation&TestConstructUtils.test_block_creationG  s    1v1v&'sA3i sef)##% & 	[1&4)!45==?JfBHH-[1779aggi"8#$ggi."2 33:79	 	[1779aggi"8#$779aggi"8": ;;B79	 )##% & 	[1d)dAY!78@@BHM[1779acciik":#$ggi."2 33:79	 	[1779acciik":#$779aggi"8": ;;B79	 fBHH-1a&a&a&" # 	[4)aY!78@@BHM[13399;	":#$779a."2 33:79	 	[13399;	":#$779aggi"8": ;;B79	 88F#[4,088:HE[4)aY!78@@B	 1#<[4)aY!78@@B	 :&'!qc
# 'GH:&'!'')qwwyk23 ';<:&'!'')qwwyk23 'MN:&'!! 'GH:&'!'')QWWY/01 'MN:&'!'')QWWY/01 ';<- '& '& '& '& '& '&sH   'V)V-)V'>V91(W
(W
V
V$'
V69
W

W
W)c                 ,   [         R                  nSS/SS//S/S//p2[        U5      [        U5      pT[        U" S U/US //SS9[        5      (       d   e[        U" S U/US //SS9[        5      (       d   e[        U" XE//SS9[        5      (       d   eg )	NrF   rM   rN   rO   rR   rP   r   r   )r(   r<  r
   r   r   )rA   blockFlGlFmGms         r0   test_block_return_type)TestConstructUtils.test_block_return_type  s    %%
 a&!QA3*BBBB%$b$Z 8GQQQQ%$b$Z 8GQQQQ%"
597CCCCr2   c                    [         R                  nSS/SS//S/S//p2[        U5      [        U5      pT[        U5      [        U5      pv[	        U" Xg//SS9[
        5      (       d   e[	        U" XE//SS9[        5      (       d   e[	        U" S	U/US	//SS9[
        5      (       d   e[	        U" S	U/US	//SS9[
        5      (       d   e[	        U" S	U/US	//SS9[        5      (       d   e[	        U" S	U/US	//SS9[        5      (       d   e[	        U" Xw//SS9[
        5      (       d   e[	        U" XW//SS9[
        5      (       d   e[	        U" Xu//SS9[
        5      (       d   e[	        U" XU//SS9[        5      (       d   e[	        U" Xd//SS9[
        5      (       d   e[	        U" XD//SS9[        5      (       d   e[	        U" UR                  5       UR                  5       //S
S9[
        5      (       d   e[	        U" UR                  5       UR                  5       //S
S9[        5      (       d   e[	        U" UR                  5       UR                  5       //SS9[
        5      (       d   e[	        U" UR                  5       UR                  5       //SS9[        5      (       d   e[	        U" X7//SS9[
        5      (       d   e[	        U" UR                  5       U//SS9[
        5      (       d   e[	        U" UR                  5       U//SS9[        5      (       d   e[	        U" XU//S
S9[        5      (       d   eg	)z2This can be removed after sparse matrix is removedrF   rM   rN   rO   rR   rP   r   r   Nr   )r(   bmatr
   r   r   r   r   r  )rA   rP  rI  rJ  rK  rL  FaGas           r0   test_bmat_return_type(TestConstructUtils.test_bmat_return_type  s   ~~a&!QA3*BBBB2	"B$z%8'BBBB$z%8(CCCC$r
RJ7FPPPP$r
RJ7FPPPP$r
RJ7FQQQQ$r
RJ7FQQQQ $z%8'BBBB$z%8'BBBB$z%8'BBBB$z%8(CCCC$z%8'BBBB$z%8(CCCC $RXXZ 89%H'RRRR$RXXZ 89%H(SSSS$RXXZ 89%H'RRRR$RXXZ 89%H(SSSS $z%8'BBBB$R 01%@'JJJJ$R 01%@(KKKK$z%8(CCCCr2   z!Can't create large array for testc           	         [        S5        Sn[        [        R                  " X4[        S95      nUR                  5       n[        R                  " X#4SSS9n[        [        R                  " [        R                  " [        R                  " UR                  5      U5      5      5        [        UR                  R                  [        R                   5        [        UR                  R                  [        R                   5        g)z5test for indptr overflow when concatenating matrices i0u  i  r   r   F)axisreturn_spmatrixN)r	   r   r$   onesboolcopyr(   _compressed_sparse_stackr   allequaldiffr  r   r  r-   r  )rA   r*   r  r  r@  s        r0   test_concatenate_int32_overflow2TestConstructUtils.test_concatenate_int32_overflow  s     	% bggqfD12FFH..vA?DF 	rxx 11567QYY__bhh/QXX^^RXX.r2   c                 P   [        SS/SS//5      n[        S/S//5      n[        S//5      n[        / SQ/ S	Q/ S
Q/ SQ/ SQ/5      n[        R                  " XU45      n[	        UR                  5       U5        UR                  S   R                  [        R                  :X  d   eg)zbasic test for block_diag rF   rM   rN   rO   rP   rQ   rR   )rF   rM   r   r   )rN   rO   r   r   )r   r   rP   r   )r   r   rQ   r   )r   r   r   rR   r   N)
r   r   r(   
block_diagr   rq   r%  r-   r$   r  )rA   r  r  r@  r   ABCs         r0   test_block_diag_basic(TestConstructUtils.test_block_diag_basic  s    !uaUm$sA3i se,&&&&	( ) ""A!9-S[[]H-zz!}""bhh...r2   c                     [        / SQ/ SQ/ SQ/5      n[        S UR                   5       5      Ul        [        R                  " X/5      R                  S   R
                  [        R                  :X  d   eg )Nr   r   c              3   ^   #    U  H#  oR                  [        R                  5      v   M%     g 7fr#   r  r  s     r0   r  ?TestConstructUtils.test_block_diag_idx_dtype.<locals>.<genexpr>  r!  r"  r   )r   r$  r%  r(   rb  r-   r$   r  r&  s     r0   test_block_diag_idx_dtype,TestConstructUtils.test_block_diag_idx_dtype  sY    y)Y78@qxx@@##QF+2215;;rxxGGGr2   c                    [        [        R                  " SS/S/5      R                  5       / SQ/ SQ/5        [	        / SQ5      n[	        SS/5      n[        [        R                  " X/5      R                  5       / SQ/ S	Q/5        g
)z(block_diag with scalar and 1d arguments rM   rN   rO   )rM   rN   r   )r   r   rO   )rF   r   rN   r   )rF   r   rN   r   r   )r   r   r   r   rO   N)r   r(   rb  rq   r   r,  s      r0   test_block_diag_scalar_1d_args1TestConstructUtils.test_block_diag_scalar_1d_args  st     	9//!A
;CCE%y1	3 gqe9//7??A+_=	?r2   c                    [        [        R                  " SS//5      R                  5       [	        SS//5      5        [        [        R                  " SS///5      R                  5       [	        SS//5      5        [        [        R                  " S/S///5      R                  5       [	        S/S//5      5        [        [        R                  " S/5      R                  5       [	        S//5      5        g)zblock_diag with one matrix rF   r   N)r   r(   rb  rq   r   r   s    r0   test_block_diag_1$TestConstructUtils.test_block_diag_1  s    Y))Aq6(3;;=QF8_	&Y))QF8*5==?QF8_	&Y))QC!:,7??AQC!:&	( 	Y))1#.668QC5\	#r2   c                 ~   [        / SQ/SS9n[        SS//SS9n[        [        R                  " X/5      R	                  5       [        / SQ/ SQ/5      5        [        S	/S
/S//SS9n[        S/S//SS9n[        [        R                  " X/5      R	                  5       [        S	S/S
S/SS/SS/SS//5      5        g)zblock_diag with sparse arrays rF   rM   rN   )rF   rN   rG   rO   rP   r   )rF   rM   rN   r   r   )r   r   r   rO   rP   rF   rM   rN   )rN   rF   r   r   N)r   r   r(   rb  rq   r   r,  s      r0   test_block_diag_sparse_arrays0TestConstructUtils.test_block_diag_sparse_arrays  s     yk01vhf-Y))1&199;O_=>	@ sQC!oV4sQCj/Y))1&199;QFQFQFQFQFCD	Fr2   c                    [        / SQ/5      [        / SQ/5      p![        [        R                  " X/5      [
        5      (       d   e[        [        R                  " X/5      [
        5      (       d   e[        [        R                  " X!/5      [
        5      (       d   e[        [        R                  " X"/5      [        5      (       d   eg )Nrr  )rM   rN   rO   )r   r   r   r(   rb  r   r   r,  s      r0   test_block_diag_return_type.TestConstructUtils.test_block_diag_return_type  s    )%z9+'>1)..v6@@@@)..v6@@@@)..v6@@@@)..v6AAAAr2   c                 P  ^ [         [        4 GH  m[        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  4 HN  nT" SSSUS9n[        UR                  U5        [        UR                  S5        [        UR                  S5        MP     T" SSSSS9n[        UR                  [        R                  5        T" SSS[        R                  R                  S5      S9n[!        UR"                  UR"                  5        [!        UR$                  UR$                  5        [!        UR&                  UR&                  5        S HK  nT" SSUS	9n[        UR                  [)        U[        R*                  " UR                  5      -  5      5        MM     S
 H!  nT" SSUS9n[        UR,                  U5        M#     [/        [0        U4S j5        [/        [0        U4S j5        GM     g )NrP   rU   皙?)r+   r-   )rP   rU     )r+   r.   )r   ry  r   r}   r+   )r   r   r   r    r   c                     > T " SSS5      $ )NrP   rU   g? fs   r0   <lambda>9TestConstructUtils.test_random_sampling.<locals>.<lambda>0  s    a2smr2   c                     > T " SSS5      $ )NrP   rU   gr}  r~  s   r0   r  r  1  s    a2tnr2   )sprandr1   r$   r  float64
longdoubler  r  	complex64
complex128r   r-   rH   nnzr%   r&   r   datarowcolr   prodr,   r   r?   )rA   tr   x1x2r+   r   r  s          @r0   test_random_sampling'TestConstructUtils.test_random_sampling  s|   !Ajj"**bmmhh",,GaS2QWWa(QWWg.QUUA&G 1b#40B2::.1b#299+@+@+FGBrww0rvvrvv.rvvrvv./aW-QUUC"''!''2B(B$CD 0 4aC(QXXs+ 4 *&;<*&<=5 "r2   r.   rz  c                 2   [        SSS[        R                  US9n[        [        R                  " [        R
                  " SUR                  5      5      5        [        [        R                  " [        R
                  " UR                  S5      5      5        g NrU      r   r+   r-   r.   r   rF   )r  r$   r  r   r\  
less_equalr  rA   r.   r   s      r0   	test_randTestConstructUtils.test_rand3  sZ     2r3bjjcBr}}Q/01r}}QVVQ/01r2   c                 `   [        SSS[        R                  US9n[        [        R                  " [        R
                  " UR                  S5      5      5        [        [        R                  " [        R
                  " SUR                  5      5      5        [        SSS[        R                  US9n[        [        R                  " [        R
                  " UR                  S5      5      5        [        [        R                  " [        R
                  " SUR                  5      5      5        g r  )r1   r$   r  r   anylessr  r6   r  s      r0   
test_randnTestConstructUtils.test_randn:  s    
 RS

Drwwqvvq)*+rwwq!&&)*+2r3bjjcJrwwqvvq)*+rwwq!&&)*+r2   c                     [         R                  " SSSS9  [         R                  " SSS9  [         R                  " SSS9  [         R                  " SSS9  g )NrU   rv   r   rU   rU   rU   rU   rU   rU   rU   rU   rU   rU   )r(   r%   r5   r   s    r0   test_random_accept_str_dtype/TestConstructUtils.test_random_accept_str_dtypeF  sG     	Rs+xs3|3733?r2   c                    [         R                  " SS[        SS9nUR                  S:X  d   e[         R                  " SS[        SS9nUR                  S:X  d   e[         R                  " SS[        SS9nUR                  S:X  d   eg )N)r   rO   g333333?r   )r+   r-   random_stater  r  r  )r(   r5   r   rH   )rA   r   s     r0   'test_random_array_maintains_array_shape:TestConstructUtils.test_random_array_maintains_array_shapeN  s    $$VSRSTyyF"""$$\3cqQyyL((($$%93c)*,yy0000r2   c                     [         R                  " S5      nUR                  S   R                  [        R
                  :X  d   eg )Nr  r   )r(   r5   r%  r-   r$   r  )rA   r  s     r0   test_random_array_idx_dtype.TestConstructUtils.test_random_array_idx_dtypeZ  s2    ""8,xx{  BHH,,,r2   c                 @   [         R                  " SSSS9n[        UR                  5       S5        [         R                  " SSS9n[        UR                  5       S5        [        U[        5      (       d   eSn[         R                  " USS9n[        UR                  5       S5        [         R                  " S	S
S9n[        UR                  5       S5        [        U[        5      (       d   eSn[         R                  " USS9n[        UR                  5       S5        g )NrU   gx&1?r{  rX   r  )        r  g(Rs?<i  )rU   rU   rU   rU   gk) 3?i  )r  r  r  gAy5:   )r(   r%   r   count_nonzeror5   r   r   )rA   sparse_matrixsparse_arrayrH   s       r0   Etest_random_sparse_matrix_returns_correct_number_of_non_zero_elementsXTestConstructUtils.test_random_sparse_matrix_returns_correct_number_of_non_zero_elements^  s     "((R@]00226 --hG\//1"5,0000 --eZH\//1$7 !--.>P\//1$7,0000% --eZH\//1#6r2   r}  )L__name__
__module____qualname____firstlineno__r>   markparametrizer   r   r   r   r   r   r   rB   r   r
   r   r   r   r   rI   ry   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  r7  r:  rP  r<  rE  rM  rS  xslowxfail_on_32bitr_  rd  ri  rl  ro  rs  rv  r  r$   r%   r&   r  r  r  r  r  r  __static_attributes__r}  r2   r0   r8   r8   )   s|   [[U9i9i% 	 [[UJ
J
% &	&6LpL6\?6I&I64
F& [[Z)*<*<i>Q>Q)RSA TA [[UY]]I4G4G$HI! J!F [[UY]]I4G4G$HIA JA9 [[7a&1a&	4'a&1a&	4'q6Aq6
	T5): 
Q
Q;,z6"-01 [[YY(?@4 A4:D&V6. [[YY(?@! A!.V [[]Y^^Y=R=R,STK= UK=Z
D"DH [[[[ CD/ E // H
	?
#FB>< [[UT41F1Ft1L$MN2 O2 [[UT41F1Ft1L$MN	, O	,@
1-7r2   r8   c            	         [         R                  " SS5      n [        [        R                  " U SS9R                  5       [         R                  " U 5      5        [        [        R                  " U SSS9R                  5       [         R                  " U SS95        [        [        R                  " U SSSS	9R                  5       [         R                  " U SS9SS
2SS
24   5        [        R                  " [        SS9   [        R                  " [         R                  " SS5      SSS9  SSS5        g! , (       d  f       g= f)z7Tests of diags_array that do not rely on diags wrapper.r}   r   Nr   rM   r   r-   r   r   r   rO   z.*out of boundsr<   rP   rG   )r$   r   r   r(   r   rq   r   r>   r   r?   r   )r   s    r0   test_diags_arrayr  w  s    99S#Dy,,T>FFH"''RV-XdAT:BBDbggdVWFX dAV4HPPR
2A2rr6" 
z):	;		#s+Qf= 
<	;	;s   >,D33
Efuncc                     S/SS/S//n/ SQnU " XS S9n[         R                  " SS/SS//5      n[        UR                  5       USS9  g )	NrN   rF   rM   rO   rh   r  Tstrict)r$   r   r   rq   r  rv   r   r   r   s        r0   test_diags_intr    sV    
q!fqcAG q
.Cxx!Q!Q()Hs{{}ht<r2   c                     S/SS/S//n/ SQn[         R                  " [        SS9   U " XS9nS S S 5        [        R                  " S	S
/SS//5      n[        WR                  5       USS9  g ! , (       d  f       ND= f)NrN   rF   rM   rO   rh   zoutput has been cast tor<   r   r}   r   r   r~   Tr  )r>   warnsFutureWarningr$   r   r   rq   r  s        r0   test_diags_int_to_float64r    ss    
q!fqcAG
 
m+D	E1& 
Fxx#sc3Z01Hs{{}ht< 
F	Es   A,,
A:c                     [         R                  " / SQ5      n [        U 5      R                  SS5      n[        R
                  " USS5      n[        US   R                  5       US S 2S4   R                  5       5        UR                  SSSS5      n[        R
                  " USS5      n[        UR                  S5        g )	N$g      @gGz.@g-!@g      !@g&1?gʡE@g\( @gQ@g{G#@gPn@gh|?!@g!rh@gjt@gJ+@gzGa@g!rh@gʡE@g-@g)\(@g(\B#@g+@guV@g~j@g"~@gK7@g
ףp=J#@gGz@gMb@g}?5^#@g/$@g!rhm@g-#@gJ+@gMb@gʡ@g-?rQ   r   rF   r[   rN   rM   )rM   rM   rN   rN   )	r$   r   r   reshaper(   swapaxesr   rq   rH   )r   sX	sXswappedsXX
sXXswappeds        r0   test_swapaxesr    s    
 < 	=A 
1		a	#B""2q!,I2&&("QU)*;*;*=>
**Q1a
 C##CA.J!!<0r2   c                  F   SS/SS//SS/SS///n [         R                  " SS/SS//SS/SS///5      n[        U5      n[        R                  " USS5      n[        UR                  5       U 5        [        UR                  5       [         R                  " USS5      5        g )Nr   rM   rQ   rF   rP   rR   )r$   r   r   r(   r  r   rq   tgtr   r  outs       r0   test_3d_swapaxesr    s    FQFq!fq!f-
.C
Aq6Aq6"aVaV$456A!A


Q1
%C$Aq! 45r2   r,   c                 n   [         R                  " / SQ/ SQ/5      n[        U5      R                  U 5      n[        R
                  " USS5      nUR                  S:X  d   eUR                  S:X  d   e[        UR                  5       [         R
                  " USS5      5        UR                  (       a   eg )NrM   r   rF   rN   rP   r   rF   r   r   rN   rM   )r$   r   r   asformatr(   r  r,   rH   r   rq   has_canonical_formatr,   r  SAr  s       r0   test_sparse_format_swapaxesr    s    
)Y'(A	1		v	&B


RA
&C::99Aq! 45'''''r2   c            
         [        SS/SS//5      n [        [        SS9   [        R                  " U SS5        S S S 5        [        [        SS9   [        R                  " U SS5        S S S 5        [        [        SS9   [        R                  " U SS5        S S S 5        [        [        SS9   [        R                  " U SS5        S S S 5        [        [        SS9   [        R                  " U SS	5        S S S 5        [        [        SS9   [        R                  " U S	S5        S S S 5        [        [        R                  " U SS5      R                  5       U R                  5       5        [        S5       H^  n[        [        R                  " XS	U-
  5      R                  5       [        R                  " XS-
  S
U-
  5      R                  5       5        M`     g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNl= f! , (       d  f       GNO= f! , (       d  f       GN2= f! , (       d  f       GN= f)NrM   r   rN   rP   Invalid axisr<   rj   333333?rF   r[   )r   r   r?   r(   r  r   rq   r   r  is     r0   test_axis_swapaxesr    s   Aq6Aq6"#A	z	81b!$ 
9	z	81a$ 
9	z	81a# 
9	z	81a# 
9	z	81c1% 
9	z	81a% 
9##Aq!,446		D1XqQU+335qa%a088:	
  
9	8	8	8	8	8	8	8	8	8	8	8sG   GG*>G<-HH H2
G'*
G9<
H
H 
H/2
Ic                  (   [         R                  " / SQ5      n U R                  SS5      n[        U 5      R                  SS5      n[        R
                  " USSS9nUR                  SS9n[        UR                  5       UR                  5       5        [        US   R                  5       US S 2S4   R                  5       5        UR                  SS	S	S5      nUR                  SS	S	S5      n[        R
                  " US
SS9n[        UR                  S5        UR                  S
S9n[        UR                  S5        [        UR                  5       UR                  5       5        [        UR                  5       [         R                  " US
S95        g )Nr  rQ   rF   r   TaxesrZ  r  r[   rN   rM   )r   rM   rF   rN   )rN   rM   rM   rN   )
r$   r   r  r   r(   permute_dims	transposer   rq   rH   )	r   npxr  
sXpermutedsXtransposednpxxr  sXXpermutedsXXtransposeds	            r0   test_permute_dimsr    sJ   
 < 	=A ))Aq/C	1		a	#B''dCJ<<V<,L##%|';';'=>B'')2ae9+<+<+>?;;q!Q"D
**Q1a
 C((<dKK""L1MM|M4M$$l3$$&(=(=(?@$$&T(MNr2   c                  l   S/S/S/S//S/S/S/S///n [         R                  " SS/SS/SS/SS///5      n[        U5      n[        R                  " USS9n[        UR                  S	5        [        UR                  5       U 5        [        UR                  5       [         R                  " USS95        g )
Nr   rM   rQ   rF   rP   rR   )rM   rF   r   r  )rM   rO   rF   )	r$   r   r   r(   r  r   rH   rq   r  r  s       r0   test_3d_permute_dimsr    s    C!qcA31#sQC!!5
6C
Aq6Aq6Aq6Aq6234A!A

 
 
3CI&$QY ?@r2   c                     [        / SQ/ SQ/5      n [        R                  " U SS9R                  SL d   e[        R                  " U SS/S9R                  SL d   e[        R                  " U SS/S9R                  SL d   eg )	Nr  r  r   rF   r  Tr   rF   F)r   r(   r  r  r  s    r0   "test_canonical_format_permute_dimsr    s|    9i()A!!!&1FF$NNN!!!1a&1FF$NNN!!!1a&1FF%OOOr2   c                  F   [        / SQ/ SQ/5      n [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [
        SS9   [        R                  " U S	S
1S9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [
        SS9   [        R                  " U SS9  S S S 5        [        [        R                  " U SSS9R                  5       U R                  SSS9R                  5       5        [        [        R                  " U S	S
/SS9R                  5       U R                  S	S
/SS9R                  5       5        [        [        R                  " U S SS9R                  5       U R                  SSS9R                  5       5        [        [        R                  " U SSS9R                  5       U R                  5       5        g ! , (       d  f       GNd= f! , (       d  f       GNJ= f! , (       d  f       GN.= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f)Nr  r  zIncorrect number of axesr<   r  zduplicate value in axisr   zaxis must be an integer/tuplerF   r   zaxis out of range)re   r   )r   re   )rM   r   )r   rM   zaxis must be an integer)r  r   r  Tr  r  )	r   r   r?   r(   r  r   r   rq   r  r  s    r0   test_axis_permute_dimsr    sG   9i()A	z)C	Dqy1 
E	z)B	Cqv. 
D	y(G	Hq1v. 
I 
z)<	=qw/ 
>	z)<	=qw/ 
>	z)<	=qv. 
>	z)<	=qv. 
>	y(A	Bqx0 
C qvD9AAC	d+335
 q1vD9AAC	!Qd+335 qt$7??A	d+335 qvD9AACQYY[? 
E	D	C	C	H	H 
>	=	=	=	=	=	=	=	B	Bs_   JJ%8J7&K	K>K-*K?L
J"%
J47
K	
K
K*-
K<?
L
L c                 b   [         R                  " / SQ/ SQ/5      n[        U5      R                  U 5      n[        R
                  " USS9nUR                  S:X  d   eUR                  S:X  d   e[        UR                  5       [         R                  " USS95        UR                  (       a   eg )Nr  r  r  r  r   r  )r$   r   r   r  r(   r  r,   rH   r   rq   r  r  r  s       r0   test_sparse_format_permute_dimsr  8  s    
)Y'(A	1		v	&B

 
 &
1C::99QV <='''''r2   c                  0   [         R                  " / SQ5      n U R                  SS5      n[        U5      n[         R                  " USS9n[
        R                  " USS9n[        US   R                  5       US[         R                  S S 24   R                  5       5        [        UR                  5       U5        UR                  SSSS5      nUR                  SSSS5      n[         R                  " USS9n[
        R                  " USS9n[        UR                  S5        [        UR                  5       U5        [         R                  " US	S9n[
        R                  " US	S9n[        UR                  S
5        [        UR                  5       U5        g )Nr  rQ   rF   rV  r[   rN   rM   )rN   rM   rF   rM   rN   r   )rN   rM   rM   rF   rN   )
r$   r   r  r   expand_dimsr(   r   rq   newaxisrH   )	r   r  r  npx_expanded
sXexpandedr  r  npxx_expandedsXXexpandeds	            r0   test_expand_dimsr  E  sF   
 < 	=A ))Aq/C	3B>>#A.L&&r2JB'')2b"**a.?+@+H+H+JK##%|4;;q!Q"D
**Q1a
 CNN4a0M''!4K""O4$$&6NN4b1M''"5K""O4$$&6r2   c                      SS/SS///SS/SS////n [        SS/SS//SS/SS///5      n[        R                  " USS9n[        UR	                  5       U 5        g )Nr   rM   rQ   rF   rP   rR   r   )r   r(   r  r   rq   )r  r  r  s      r0   test_3d_expand_dimsr	  c  sw    VaV!Q!Q 01
2CQFQF#q!fq!f%567A



*C$r2   c                    [         R                  " SS/SS//5      n[        U5      R                  U 5      n[        R
                  " USS9nUR                  S:X  d   eUR                  S:X  d   e[        UR                  5       [         R
                  " USS95        UR                  5       R                  UR                  :X  d   eg )	NrM   r   rN   rP   rF   r   r   )rM   rF   rM   )r$   r   r   r  r(   r  r,   rH   r   rq   tocoor  r  s       r0   test_sparse_format_expand_dimsr  j  s    
1a&1a&!"A	1		v	&B



+C::99	!!!qq 9:88:**c.F.FFFFr2   c            	      V   [        SS/SS//5      n [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U SS9  S S S 5        [        [        SS9   [        R                  " U S	S9  S S S 5        [        S5       HR  n[        [        R                  " XS9R                  5       [        R                  " XS-
  S9R                  5       5        MT     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)
NrM   r   rN   rP   r  r<   rj   r   r  )r   r   r?   r(   r  r   r   rq   r  s     r0   test_axis_expand_dimsr  v  s    Aq6Aq6"#A	z	8ab) 
9	z	8aa( 
9	z	8ac* 
91X!!!,446!!!a%088:	
  
9	8	8	8	8	8s#   C8D	8D8
D	
D
D()g{Gz?r   NN);__doc__numpyr$   r   numpy.testingr   r   r   r   r>   r   r   scipy._lib._testutilsr	   scipy.sparser
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   scipy.sparse._constructr   r  r   r1   r6   r8   r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r}  r2   r0   <module>r     ss   /  < <  * 33 3 3 3 3 3<
IFK7 K7\>( )"7"7!IJ= K= )"7"7!IJ
= K
=1"6 >2( 3(
,O6	AP$N >2	( 3	(7<% >2G 3G
r2   