
     h;a                         d Z ddlZddlmZ ddlmZmZmZmZ ddl	Z	ddl	m
Z ddlmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ g dZddZ G d d          ZdS )z)test sparse matrix construction functions    N)array)assert_equalassert_assert_array_equalassert_array_almost_equal_nulp)raises)check_free_memory)check_random_state)
csr_matrix
coo_matrix
_construct)rand)matrix)csrcsccoobsrdialildok{Gz?r   c           	      b    t          |          }|j        }t          j        | ||||||          S )N)r
   standard_normal	constructrandom)mndensityformatdtyperandom_statedata_rvss          ]/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_construct.py_sprandnr$      s;    %l33L+HAq'65((4 4 4    c                      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d Zd Zd Zd Zd Zd Zej        j        ej                            d          d                         Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"dS )TestConstructUtilsc                 p   t          g dg          }t          g dg dg          }t          g dg dg dg          }g }|                    |ddddggf           |                    |dgdddggf           |                    |dgdddgdggf           |                    |dgddddggf           |                    |dgddddggf           |                    |dgddddggf           |                    |dgddddgddggf           |                    |dgddddgddggf           |                    |dgddddgddggf           |                    |dgdd	g d
g dg dgf           |                    |dgdd	g dg dg dgf           |                    |dgddg dg dg dgf           |                    |ddgddg dg dg dgf           |                    |ddgdd	g dg dg dgf           |                    |ddgddg dg dg dg dg dg dgf           |                    |g d ddg d!g d"g d#g d$g d%g dgf           |                    |g d&ddg d'g d(g d)g d*g d+g d,gf           |                    |g d-t          |d                   t          |d                   g d.g d/g d0g d1g dgf           |D ]\  }}}}}	t          |d                   |k    r;||k    r5t          t	          j        ||                                          |	           t          t	          j        ||||                                          |	           t          t	          j        ||||f                                          |	           d S )2N                        	   
                  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   r-   r   )r   r   r   r   r.   )r*   r   r2   r   r+   r   r   r   r,   r0   r   r   r   r*   r1   r   r   r   r+   r2   r   r0   )r   r   r,   r   r   r   )r   r   r   r-   r   r   )r   r   r   r   r.   r   )r0   r   r   r   r   r   r   r1   r   r   r   r   r   r   r2   r   r   r   r;   r   r*   )r0   r7   r   r   r   r   )r*   r1   r8   r   r   r   )r   r+   r2   r9   r   r   )r   r   r,   r3   r:   r   )r   r   r   r-   r4   r   r+   r;   )r   r   r2   r   r   )r6   r   r   r3   r   )r   r7   r   r   r4   r   r   r8   r   r   r*   r   r   r9   r   r   r+   r   r   r:   )r;   r*   r+   )r   r1   r8   r   r   )r*   r   r2   r9   r   )r   r+   r   r3   r:   )r   r   r,   r   r4   )r   appendlenr   r   spdiagstoarray)
selfdiags1diags2diags3casesdor   r   results
             r#   test_spdiagszTestConstructUtils.test_spdiags   s   ())(* + +()))+ , , faAu-...fqc1a1#/000fqc1a1#qc3444fqc1a1Q%1222fqc1a1Q%1222fbT1a1Q%1222fqc1a1Q%17888fbT1a1Q%17888fqc1a1Q%17888fqc1a)))IIIiii)HIJJJfqc1a)))IIIiii)HIJJJfqc1a+++kkk+++)NOPPPfqeQGGGGGGGGG+DEFFFfr!faYYYyyy,KLMMMfqfa]]].;mm.;mm.;mm.;mm.;mm-= > 	? 	? 	? 	fhhh1/A/A/A0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B/D E 	F 	F 	F 	fiiiA1A1A1A1@1@1@1@0B C 	D 	D 	D 	fjjj#fQi..#fQi..''''''''''''&	() 	* 	* 	* #( 	L 	LAq!Q1Q4yyA~~!q&&Y.q!44<<>>GGG*1aA66>>@@&III*1a!Q88@@BBFKKKK		L 	Lr%   c                    t          g d          }t          g d          }t          g d          }g }|                    |d d         dddggf           |                    |d d         gdgddggf           |                    |d d         gdgddgdggf           |                    |d d         gdgdddggf           |                    |d d         gdgdddggf           |                    |d d	         gdgd
ddgdd	ggf           |                    |d d         gdgd
ddgddggf           |                    |d d         gdgdg dg dg dgf           |                    |d d         gdgdg dg dg dgf           |                    |d d         gdgdg dg dg dgf           |                    |d d	         gdgdg dg dg dgf           |                    |d d         gdgdg dg dg dgf           |                    |d d         gdgdg dg dg dgf           |                    |d d         gd	gdg dg dg dgf           |                    |d d	         gdgdg d g d!g dgf           |                    |d d         gd"gdg d#g dg dgf           |                    |d d         gd$gd%g d&g d&g d&g d&g d'gf           |                    |d d	         gd(gd%g d&g d&g d&g d'g d)gf           |                    |d d         gdgd%g d&g d&g d'g d)g d*gf           |                    |d d         gdgd%g d&g d'g d)g d*g d&gf           |                    |d d         gdgd%g d'g d)g d*g d&g d&gf           |                    |d d	         gdgd%g d+g d,g d&g d&g d&gf           |                    |d d         gd	gd%g d-g d&g d&g d&g d&gf           |                    |d d         |d d         gdd	gd.g d/g d)g d*gf           |                    |d d	         |d d         gddgdg d0g d1g d2gf           |                    |d d"         |d d         gd	d(gd3g d4g d5g d6g d7g d8g d9gf           |                    |d d"         ||d d"         gg d:d;g d<g d=g d>g d?g d@gf           |                    |d d	         |d d         |gg dAdBg dCg dDg dEg dFg dGg dHgf           |                    |gdgddggf           |                    |d d         |gdd	gd.g d/g d)g d*gf           |                    t          j         g dIg dJg          ddgd.g d'g dKg dLgf           |                    g dMg dNd.g dOg dMg dPgf           |D ]\  }}}}|dQ|dQ|dQ|}	t          t	          j        |||R                                          ||	S           |d         |d         k    rst          |d         dT          r]t          |d                   t          |          k    r7t          t	          j        ||                                          ||	S           d S )UNr)   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   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   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   r+   r-   )r   r   r   r   r*   rJ   )r.   r,   )r   r   r   r*   r   r   rE   r@   rA   r   r*   r   )r   r   r+   r   r   r*   )r,   r,   )r*   r   r0   rB   rC   rD   )r0   r0   )r   r   r*   r   r   r   )r   r   r   r+   r   r   )r   r   r   r   r,   r   )r0   r   r   r   r   r-   rF   rG   rH   r.   r.   )r0   r6   r   r   r   )r*   r1   r7   r   r   )r   r+   r2   r8   r   )r   r   r,   r3   r9   )r   r   r   r-   r4   rI   r0   r.   )r   r   r0   r   r   )r6   r   r   r1   r   )r   r7   r   r   r2   rK   rL   rM   r*   r+   r,   )r-   r.   r0   )r-   r+   r   )r   r.   r,   )r*   r`   r*   )r*   r   r;   )r`   r*   r   )r   r*   r`    shape)err_msg__len__)
r   rN   npr   r   diagsrQ   hasattrrO   max)
rR   abcrV   rW   rX   rj   rY   rk   s
             r#   
test_diagszTestConstructUtils.test_diagsW   s;	   ///"""""##&&&''aeQ!.///q!ugsFaSE2333q!ugsFaS!I6777q!ugsFaUG4555q!ugsFaUG4555q!ugsFaUAa5M:;;;q!ugrdFaUAa5M:;;;q!ugsFYYYyyy,KLMMMq!ugsFYYYyyy,KLMMMq!ugtVkkk+++kkk-RSTTTq!ugtVkkk+++kkk-RSTTTq!ugsF[[[[[[,QRSSSq!ugsF[[[[[[,QRSSSq!ugsF[[[[[[,QRSSSq!ugsF[[[[[[,QRSSSq!ugsF[[[[[[,QRSSSq!ugtVggggggggggggggg-VWXXXq!ugtVggggggggggggggg-VWXXXq!ugtVggggggggggggggg-VWXXXq!ugtVggggggggggggggg-VWXXXq!ugsFWWWWWWWWWWWWWWW,UVWWWq!ugsFWWWWWWWWWWWWWWW,UVWWWq!ugsFWWWWWWWWWWWWWWW,UVWWWq!uQrrUmaUFWWWWWWWWW4MNOOOq!uQrrUmbVViii			)))5TUVVVq!uQrrUmaVVmmm5B]]5B]]5B]]5B]]5B]]6D E 	F 	F 	F 	q!uQq!uoxxx///<KOO<KOO<KOO<KOO	:M N 	O 	O 	O
 	q!uQrrU1oyyy&???:J:J:J:I//:I//:I//:I//;K L 	M 	M 	M 	qcA3!.///q!uQi!AIIIyyy0QRSSSbh			9995662T]T]T]_h_h_hHijkkk 	hhh&:::4>JJ4>JJ3@ A 	B 	B 	B $) 	. 	.Aq%'(qq!!!UUUFF;GAU;;;CCEE2 2 2 2 Qx58##!i(@(@#S1YYRUV[R\R\E\E\Y_Q22::<<f%,. . . .	. 	.r%   c                     t          g d          }t          t          j        |                                          t          j        |                     d S )Nr)   )r   r   r   rn   rQ   rm   diagrR   rq   s     r#   test_diags_defaultz%TestConstructUtils.test_diags_default   sG    ///""Y_Q''//11271::>>>>>r%   c                 p    t          g dg dg          }t          t          t          j        |           d S )Nr)   )r+   r,   r-   r.   r0   )r   assert_raises
ValueErrorr   rn   rw   s     r#   test_diags_default_badz)TestConstructUtils.test_diags_default_bad   s6    ???OOO455j)/155555r%   c                    t          g d          }t          g d          }t          g d          }g }|                    |d d         gddf           |                    |d d         ||d d         gg dd	f           |                    |d d
         ||d d         gg ddf           |                    |d d
         ||d d         gg dd f           |                    g g dd f           |                    dgdgdf           |                    |gdd f           |D ](\  }}}t          t          t          j        |||           )t          t          t          j        d ggdg           d S )Nr)   r/   r5   r   r\   r-   r,   rH   re   r+   rI   rf   r*   )r-   r-   )r   rN   rz   r{   r   rn   	TypeError)rR   rq   rr   rs   rV   rW   rX   rj   s           r#   test_diags_badz!TestConstructUtils.test_diags_bad   s   ///"""""##&&&''q!ugq&)***q!uQq!uoxxx8999q!uQq!uoyyy&9:::q!uQq!uoyyy$7888b)))T*+++qcB4()))qc1d^$$$  	D 	DKAq%*ioq!UCCCCiD6(QC@@@@@r%   c                    t           j                            d           dD ]T}d|dz  z   t           j                            dd          z   t          j         dz   dz
            }t           j                            |           |d |         }fd|D             }t          j        ||          }t          d t          ||          D                       }t          |                                |           t          |          dk    rdt          j        |d         |d                   }t          j        |d         |d                   }t          |                                |           Vd S )	Ni  )r*   r+   r,   r-   r.   r4   r*   r+   r   r4   c                 n    g | ]1}t           j                            t          |          z
            2S  )rm   r   r   abs).0qr   s     r#   
<listcomp>z9TestConstructUtils.test_diags_vs_diag.<locals>.<listcomp>   s1    EEECFF
33EEEr%   c                 >    g | ]\  }}t          j        ||          S r   )rm   rv   )r   xjs      r#   r   z9TestConstructUtils.test_diags_vs_diag.<locals>.<listcomp>   s&    OOOtq!RWQ]]OOOr%   )rm   r   seedrandintarangeshuffler   rn   sumzipr   rQ   rO   rv   )rR   n_diagsoffsets	diagonalsmat	dense_matr   s         @r#   test_diags_vs_diagz%TestConstructUtils.test_diags_vs_diag   s]    		t* 	I 	IGGQJ!2!21b!9!99Ai1ac**GIg&&&hwh'GEEEEWEEEI/)W55COOs9g7N7NOOOPPI*3;;==)DDD7||q  oilGAJ??GIaL'!*==	.s{{}}iHHH#	I 	Ir%   c                     t          j        dgdgdt                    }t          |j        t                     t          |                                ddgddgg           d S )Ng@r   r_   )rj   r    r+   )r   rn   intr   r    rQ   rR   r   s     r#   test_diags_dtypez#TestConstructUtils.test_diags_dtype   s[    OSEA3fC@@@QWc"""QYY[[Aq6Aq6"233333r%   c                    t          t          d                    }t          dd          D ]^}t          t          j        ||                                          t          j        |g|g                                                     _d S )Nr.   r~   r0   )listranger   r   rn   rQ   )rR   rW   ks      r#   test_diags_one_diagonalz*TestConstructUtils.test_diags_one_diagonal   s    qNNr1 	> 	>AA..6688"!qc22::<<> > > >	> 	>r%   c                 X    t          j        g           }t          |j        d           d S )Nr   r   )r   rn   r   rj   r   s     r#   test_diags_emptyz#TestConstructUtils.test_diags_empty   s)    OBQWf%%%%%r%   c                 L   t          t          j        d                                          dgg           t          t          j        d                                          ddgddgg           t          j        ddd          }t          |j        t          j        d                     t          |j        d           t          D ]X}t          j        d|          }t          |j        |           t          |                                g d	g d
g dg           Yd S Nr*   r+   r   r,   int8r   )r    r   r   rb   rc   rd   )r   r   identityrQ   r    rm   r   sparse_formatsrR   Ifmts      r#   test_identityz TestConstructUtils.test_identity   s   Y'**2244se<<<Y'**2244!uaUmDDDqu===QWbhv..///QXu%%%! 	A 	AC"1S111A3'''wwwwwwwww&?@@@@	A 	Ar%   c                    t          t          j        dd                                          dgg           t          t          j        dd                                          g dg dg           t          t          j        dd                                          ddgddgddgg           t          t          j        dd                                          g dg dg dg           t          t          j        ddd	          j        t          j        d                     d
D ]}d
D ]}t          dd          D ]}t          t          j        |||                                          t          j        |||                     ||k    rKt          t          j        ||                                          t          j        |||                     d S )Nr*   r+   r,   rb   rc   r   rd   int16r    ra   r~   r0   )r   )r   r   eyerQ   r    rm   r   )rR   r   r   r   s       r#   test_eyezTestConstructUtils.test_eye   s   Y]1Q''//11QC5999Y]1Q''//11GGGGGG3DEEEY]1Q''//11QqE1Q%13FGGGY]1Q''//11GGGGGGGGG3LMMMY]1QW555;RXg=N=NOOO 	Y 	YA Y Yr! Y YA q!q!9!9!9!A!A!C!CRVAqTUEVEVEVWWWAvv$Y]1%:%:%:%B%B%D%DbfQPQUVFWFWFWXXXYY	Y 	Yr%   c                 L   t          t          j        d                                          dgg           t          t          j        d                                          ddgddgg           t          j        ddd          }t          |j        t          j        d                     t          |j        d           t          D ]X}t          j        d|          }t          |j        |           t          |                                g d	g d
g dg           Yd S r   )r   r   r   rQ   r    rm   r   r   r   s      r#   test_eye_onezTestConstructUtils.test_eye_one   s   Y]1%%--//1#777Y]1%%--//1Q%1???M!6%888QWbhv..///QXu%%%! 	A 	ACa,,,A3'''wwwwwwwww&?@@@@	A 	Ar%   c           	         g }|                     t          dgg                     |                     t          dgg                     |                     t          dgg                     |                     t          dgg                     |                     t          dgdgg                     |                     t          ddgg                     |                     t          ddgddgg                     |                     t          ddgddgg                     |                     t          g d	g d
g                     |                     t          ddgddgddgg                     |                     t          g dg dg dg                     |                     t          g dg                     |                     t          g dg dg                     |D ]}|D ]}t          j        ||          }t          D ]j}t          j        t          |          t          |          |          }t          |j        |           t          |
                                |           kd S )Nr   r;   r-   r4   r*   r+   r,   r.   r   r+   ir2   r   r9   r0   )r.   r-   r-   rb   )r0   r   r2   )r   r*   r   r+   r   r.   r2   )      ?g      ?r   g      
@)r   g      @r   r   r   )rN   r   rm   kronr   r   r   r   r   r   rQ   )rR   rV   rq   rr   expectedr   rY   s          r#   	test_kronzTestConstructUtils.test_kron  s{   UQC5\\"""URD6]]###UQC5\\"""URD6]]###UQC9%%&&&UQqE7^^$$$UQqE1Q%=))***UQqE1Q%=))***UHHHXXX.//000UQqE1Q%1.//000UGGGGGGGGG455666UOOO,--...U...{{{;<<=== 	C 	CA C C71a==) C CC&^JqMM:a==QTUUUF 444&v~~'7'7BBBBCC	C 	Cr%   c                     d}t          j        d||dz
            }t          j        |dd|z
            }t          j        ||           t          j        ||           d S )Ni   r*   )r   r   r   )rR   r   rq   rr   s       r#   test_kron_largez"TestConstructUtils.test_kron_large%  s_    M!Q!$$M!Q!$$q!q!r%   c                    g }|                     t          dgg                     |                     t          dgg                     |                     t          dgg                     |                     t          dgg                     |                     t          ddgddgg                     |                     t          ddgddgg                     |                     t          g d	g d
g dg                     |                     t          g dg dg dg                     |D ]}|D ]}t          j        t	          |          t	          |                                                    }t          j        t          j        t          |                    |          t          j        |t          j        t          |                              z   }t          ||           d S )Nr   r;   r-   r4   r*   r+   r,   r.   r   r   )r   r,   r   rb   )r   r.   r;   )r-   r`   r2   )rN   r   r   kronsumr   rQ   rm   r   r   rO   r   )rR   rV   rq   rr   rY   r   s         r#   test_kronsumzTestConstructUtils.test_kronsum-  s   UQC5\\"""URD6]]###UQC5\\"""URD6]]###UQqE1Q%=))***UQqE1Q%=))***UHHHXXXggg677888UGGGHHHXXX677888 	4 	4A 4 4"*qMM:a==2 229')) 726#a&&>>15526#a&&>>223"6(33334	4 	4r%   c                    t          ddgddgg          }t          ddgg          }t          ddgddgddgg          }t          t          j        ||g                                          |           t          t          j        ||gt          j                  j        t          j                   t          t          j        |	                                |	                                g                                          |           t          j        |	                                |	                                gt          j                  }t          |j        t          j                   t          |j
        j        t          j                   t          |j        j        t          j                   t          t          j        |                                |                                g                                          |           t          j        |                                |                                gt          j                  }t          |j        t          j                   t          |j
        j        t          j                   t          |j        j        t          j                   d S )Nr*   r+   r,   r-   r.   r0   r   )r   r   r   r   vstackrQ   rm   float32r    tocsrindicesint32indptrtocsc)rR   ABr   rY   s        r#   test_vstackzTestConstructUtils.test_vstackA  s   1qe}%%1w1a&a&a&" # # 	Y%q!f--5577BBBY%q!fBJ???EZ	! 	! 	! 	Y%qwwyy!''))&<==EEGG	 	 	!17799aggii"8
KKKV\2:...V^)28444V]("(333Y%qwwyy!''))&<==EEGG	 	 	!17799aggii"8
KKKV\2:...V^)28444V]("(33333r%   c                 ^   t          ddgddgg          }t          dgdgg          }t          g dg dg          }t          t          j        ||g                                          |           t          t          j        ||gt          j        	          j        t          j                   t          t          j        |	                                |	                                g                                          |           t          t          j        |	                                |	                                gt          j        	          j        t          j                   t          t          j        |
                                |
                                g                                          |           t          t          j        |
                                |
                                gt          j        	          j        t          j                   d S )
Nr*   r+   r,   r-   r.   r0   r*   r+   r.   r,   r-   r0   r   )r   r   r   r   hstackrQ   rm   r   r    r   r   )rR   r   r   r   s       r#   test_hstackzTestConstructUtils.test_hstack[  s   1qe}%%QCy!!)))#))% & &Y%q!f--5577BBBY%q!fBJ???EZ	! 	! 	!Y%qwwyy!''))&<==EEGG	 	 	Y%qwwyy!''))&<,.J8 8 88=Z	! 	! 	! 	Y%qwwyy!''))&<==EEGG	 	 	Y%qwwyy!''))&<,.J8 8 88=Z	! 	! 	! 	! 	!r%   c                    t          ddgddgg          }t          dgdgg          }t          dgg          }t          d          }t          g d	g d
g dg          }t          t          j        ||gd |gg                                          |           t          dt          j                  }t          t          j        |	                                |	                                g||	                                gg                                          |           t          t          j        |
                                |
                                g|
                                |
                                gg                                          |           t          g dg dg dg          }t          t          j        |d gd |gg                                          |           t          t          j        |	                                |j        	                                g||	                                gg                                          |           t          t          j        |
                                |j        
                                g|
                                |
                                gg                                          |           t          dt          j                  }t          ddgddgddgg          }t          t          j        d |g|d gg                                          |           t          t          j        |j        	                                |	                                g|	                                |gg                                          |           t          t          j        |j        
                                |
                                g|
                                |
                                gg                                          |           t          t          j        d                    }t          t          j        d d gg                                          |           t          t          j        d |g|d gg                                          |           t          dgg          }t          t          j        d |g|d gg                                          |           t          t                    5 }t          j        |g|gg           d d d            n# 1 swxY w Y   |                    d           t          t                    5 }t          j        |	                                g|	                                gg           d d d            n# 1 swxY w Y   |                    d           t          t                    5 }t          j        |
                                g|
                                gg           d d d            n# 1 swxY w Y   |                    d           t          t                    5 }t          j        ||gg           d d d            n# 1 swxY w Y   |                    d           t          t                    5 }t          j        |	                                |	                                gg           d d d            n# 1 swxY w Y   |                    d           t          t                    5 }t          j        |
                                |
                                gg           d d d            n# 1 swxY w Y   |                    d           d S )Nr*   r+   r,   r-   r.   r0   r1   r   r   r   )r   r   r1   r^   r   )r*   r+   r   )r,   r-   r   r\   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   r   bmatrQ   r   rm   r   r   r   Tr   emptyrz   r{   match)	rR   r   r   CDr   EZexcinfos	            r#   	test_bmatzTestConstructUtils.test_bmatp  s'   AA'((QCy!!uv)))#))#))% & & 	Y^aVdAY$788@@BBHMMMvRX...Y^aggii%;&'^%5 6 66=gii	 	 	 	Y^aggii%;&'ggii%;%= > >>Egii	 	 	 )))#))#))% & & 	Y^aYq	$:;;CCEE	 	 	Y^aggii%=&'^%5 6 66=gii	 	 	 	Y^aggii%=&'ggii%;%= > >>Egii	 	 	 vRX...1a&a&a&" # # 	Y^dAYD	$:;;CCEE	 	 	Y^aciikk17799%=&'ggii^%5 6 66=gii	 	 	 	Y^aciikk17799%=&'ggii%;%= > >>Egii	 	 	 "(6**++Y^dD\N33;;==xHHHY^dAYD	$:;;CCEE	 	 	 1#<<Y^dAYD	$:;;CCEE	 	 	 :&& 	''NQC!:&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'GHHH:&& 	7'NQWWYYK!''))5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7;<<<:&& 	7'NQWWYYK!''))5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7MNNN:&& 	%'NQF8$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%GHHH:&& 	5'NQWWYY		23444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5MNNN:&& 	5'NQWWYY		23444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5;<<<<<sl   U55U9<U9)=W22W69W6&=Y//Y36Y3#[[[;<]]
]7<^??__z!Can't create large array for testc           	         t          d           d}t          t          j        ||ft                              }|                                }t          j        ||fd          }t          t          j	        t          j
        t          j        |j                  |                               t          |j        j        t          j                   t          |j        j        t          j                   dS )z6 test for indptr overflow when concatenating matrices i0u  i  r   r   N)r	   r   rm   onesboolcopyr   _compressed_sparse_stackr   allequaldiffr   r   r   r    int64)rR   r   r   r   r   s        r#   test_concatenate_int32_overflowz2TestConstructUtils.test_concatenate_int32_overflow  s     	%   rw1vT22233FFHH.!ua88rx 1 115566777QY_bh///QX^RX.....r%   c                 "   t          ddgddgg          }t          dgdgg          }t          dgg          }t          g dg d	g d
g dg dg          }t          t          j        |||f                                          |           dS )z basic test for block_diag r*   r+   r,   r-   r.   r0   r1   )r*   r+   r   r   )r,   r-   r   r   )r   r   r.   r   )r   r   r0   r   )r   r   r   r1   N)r   r   r   r   
block_diagrQ   )rR   r   r   r   r   s        r#   test_block_diag_basicz(TestConstructUtils.test_block_diag_basic  s    1qe}%%QCy!!u,,,&,,&,,&,,&,,	( ) ) 	Y)1a)44<<>>IIIIIr%   c                     t          t          j        ddgdg                                          g dg dg           dS )z) block_diag with scalar and 1d arguments r+   r,   r-   )r+   r,   r   )r   r   r-   N)r   r   r   rQ   rR   s    r#   test_block_diag_scalar_1d_argsz1TestConstructUtils.test_block_diag_scalar_1d_args  sQ     	9/!A
;;CCEE%IIyyy1	3 	3 	3 	3 	3r%   c                 @   t          t          j        ddgg                                          t	          ddgg                     t          t          j        ddggg                                          t	          ddgg                     t          t          j        dgdggg                                          t	          dgdgg                     t          t          j        dg                                          t	          dgg                     dS )z block_diag with one matrix r*   r   N)r   r   r   rQ   r   r   s    r#   test_block_diag_1z$TestConstructUtils.test_block_diag_1  s   Y)Aq6(33;;==QF8__	& 	& 	&Y)QF8*55==??QF8__	& 	& 	&Y)QC!:,77??AAQC!:&&	( 	( 	( 	Y)1#..6688QC5\\	# 	# 	# 	# 	#r%   c                    t          g dgd          t          ddggd          g}t          j        |          }t          |                                t          g dg dg                     t          d	gd
gdggd          t          dgdggd          g}t          j        |          }t          |                                t          d	dgd
dgddgddgddgg                     dS )z! block_diag with sparse matrices rg   )r*   r,   ri   r-   r.   r^   )r*   r+   r,   r   r   )r   r   r   r-   r.   r*   r+   r,   )r,   r*   r]   r   N)r   r   r   r   rQ   r   )rR   sparse_col_matricesblock_sparse_cols_matricessparse_row_matricesblock_sparse_row_matricess        r#   test_block_diag_sparse_matricesz2TestConstructUtils.test_block_diag_sparse_matrices  s2     *III;vFFF)QF8FCCCE%.%9:M%N%N"/7799OOO___=>>	@ 	@ 	@  *QC!qc?6JJJ)QC!:fEEEG$-$89L$M$M!.6688QFQFQFQFQFCDD	F 	F 	F 	F 	Fr%   c                    t           t          fD ]t          j        t          j        t          j        t          j        t          j        t          j        t          j	        fD ]P} ddd|          }t          |j        |           t          |j        d           t          |j        d           Q dddd          }t          |j        t          j                    dddt          j                            d                    }t#          |j        |j                   t#          |j        |j                   t#          |j        |j                   dD ]L} dd|	          }t          |j        t+          |t          j        |j                  z                       Md
D ]%} dd|          }t          |j        |           &t1          t2          fd           t1          t2          fd           d S )Nr.   r4   皙?)r   r    )r.   r4     )r   r!   )g        r   r   g      ?r   )r   r   r   r   r   c                        ddd          S )Nr.   r4   g?r   fs   r#   <lambda>z9TestConstructUtils.test_random_sampling.<locals>.<lambda>  s    aa2smm r%   c                        ddd          S )Nr.   r4   gr   r   s   r#   r   z9TestConstructUtils.test_random_sampling.<locals>.<lambda>  s    aa2tnn r%   )sprandr$   rm   r   float64
longdoubler   r   	complex64
complex128r   r    rj   nnzdoubler   RandomStater   datarowcolr   prodr   rz   r{   )rR   tr   x1x2r   r   r   s          @r#   test_random_samplingz'TestConstructUtils.test_random_sampling  s   ! 	> 	>Aj"*bmh",G ' 'AaS222QWa(((QWg...QUA&&&&1b#D999B29---1b# "	 5 5d ; ;= = =B rw000rvrv...rvrv.../ E EAaW---QUC"'!'2B2B(B$C$CDDDD3 , ,AaC(((QXs++++*&;&;&;&;<<<*&<&<&<&<====7	> 	>r%   c           	         d dt           j                                        g}	 t           j                                        }|                    |           n# t
          $ r Y nw xY w|D ]}t          dddt           j        |          }t          t          j	        t          j
        d|j                                       t          t          j	        t          j
        |j        d                               d S Nr   r4      r   )r   r    r!   r   r*   )rm   r   r  default_rngrN   AttributeErrorr   r   r   r   
less_equalr  rR   random_statesgenr!   r   s        r#   	test_randzTestConstructUtils.test_rand  s    tRY%:%:%<%<=	)''))C  %%%% 	 	 	D	 * 	6 	6Lr2s"*$02 2 2ABF2=AF3344555BF2=33445555		6 	6   3A 
A$#A$c           	         d dt           j                                        g}	 t           j                                        }|                    |           n# t
          $ r Y nw xY w|D ]}t          dddt           j        |          }t          t          j	        t          j
        |j        d                               t          t          j	        t          j
        d|j                                       d S r  )rm   r   r  r  rN   r  r$   r   r   anylessr  r  s        r#   
test_randnzTestConstructUtils.test_randn+  s     tRY%:%:%<%<=	)''))C  %%%% 	 	 	D	 * 	0 	0LRBJ&24 4 4ABF27161--..///BF271af--..////		0 	0r  c                 4    t          j        ddd           d S )Nr4   rW   r   )r   r   r   s    r#   test_random_accept_str_dtypez/TestConstructUtils.test_random_accept_str_dtype<  s"     	Rs++++++r%   c                 x    t          j        ddd          }t          |                                d           d S )Nr4   gx&1?r   r8   )r   r   r   count_nonzero)rR   sparse_matrixs     r#   Etest_random_sparse_matrix_returns_correct_number_of_non_zero_elementszXTestConstructUtils.test_random_sparse_matrix_returns_correct_number_of_non_zero_elementsA  s=     "(R@@@]0022266666r%   N)#__name__
__module____qualname__rZ   rt   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pytestmarkslowxfail_on_32bitr   r   r   r   r   r  r  r  r  r   r   r%   r#   r'   r'      s       6L 6L 6LpE. E. E.N? ? ?6 6 6A A A&I I I64 4 4
> > >& & &A A AY Y YA A AC C C2  4 4 4(4 4 44! ! !*M= M= M=^ [[ CDD/ / ED /J J J3 3 3
# 
# 
#F F F> > >>6 6 60 0 0", , ,
7 7 7 7 7r%   r'   )r   r   NN)__doc__numpyrm   r   numpy.testingr   r   r   r   r$  r   rz   scipy._lib._testutilsr	   scipy._lib._utilr
   scipy.sparser   r   r   r   scipy.sparse._constructr   r   scipy.sparse._sputilsr   r   r$   r'   r   r%   r#   <module>r0     sU   / /          < < < < < < < < < < < <  * * * * * * 3 3 3 3 3 3 / / / / / /3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 ( ( ( ( ( (<<<
4 4 4 4g7 g7 g7 g7 g7 g7 g7 g7 g7 g7r%   