
    S_f                         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mZmZmZmZ dd	lmZ g d
ZddZddZ G d d      Zd Z y)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	csr_array	coo_arraysparrayspmatrix
_construct)rand)csrcsccoobsrdialildokc           	      f    t        |      }|j                  }t        j                  | ||||||      S )N)r
   standard_normal	constructrandom)mndensityformatdtyperandom_statedata_rvss          Alib/python3.12/site-packages/scipy/sparse/tests/test_construct.py_sprandnr&      s9    %l3L++HAq'65((4 4    c                 j    t        |      }|j                  }t        j                  | |f|||||      S )N)r    r!   r"   r#   data_sampler)r
   r   r   random_array)r   r   r    r!   r"   r#   r)   s          r%   _sprandn_arrayr+      s>    %l3L//L!!1a&'&PU/;,X Xr'   c                   r   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
ej                   ej"                  g      d        Zej                  j                  dej&                  ej"                  g      d        Zej                  j                  dej&                  ej"                  g      d        Zd Zd Zd Zd Zej                  j                  deeg      d        Zd Zej                  j                  deeg      d        Zd Zej                  j                  dej@                  ejB                  f      d        Z"d Z#d Z$ej                  jJ                  ej                  jM                  d      d               Z'd Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.d% Z/d& Z0d' Z1y())TestConstructUtilsc                 r   t        g dg      }t        g dg dg      }t        g dg dg dg      }g }|j                  |ddddggf       |j                  |dgdddggf       |j                  |dgdddgdggf       |j                  |dgddddggf       |j                  |dgddddggf       |j                  |dgddddggf       |j                  |dgddddgddggf       |j                  |dgddddgddggf       |j                  |dgddddgddggf       |j                  |dgdd	g d
g dg dgf       |j                  |dgdd	g dg dg dgf       |j                  |dgddg dg dg dgf       |j                  |ddgddg dg dg dgf       |j                  |ddgdd	g dg dg dgf       |j                  |ddgddg dg dg dg dg dg dgf       |j                  |g d ddg d!g d"g d#g d$g d%g dgf       |j                  |g d&ddg d'g d(g d)g d*g d+g d,gf       |j                  |g d-t        |d         t        |d         g d.g d/g d0g d1g dgf       |D ]  \  }}}}}	t        |d         |k(  r3||k(  r.t        t	        j
                  ||      j                         |	       t        t	        j
                  ||||      j                         |	       t        t	        j
                  ||||f      j                         |	        y )2N                        	   
                  r   r0   r1   r2   r3   r0   r   r   r   r   r1   r   r   r   r   r2   r   )r   r   r   r3   r4   r   r   r2   r   r   )r   r   r   r3   r   )r   r   r   r   r4   )r0   r   r8   r   r1   r   r   r   r2   r6   r   r   r   r0   r7   r   r   r   r1   r8   r   r6   )r   r   r2   r   r   r   )r   r   r   r3   r   r   )r   r   r   r   r4   r   )r6   r   r   r   r   r   r   r7   r   r   r   r   r   r   r8   r   r   r   rA   r   r0   )r6   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   r1   rA   )r   r   r8   r   r   )r<   r   r   r9   r   )r   r=   r   r   r:   r   r   r>   r   r   r0   r   r   r?   r   r   r1   r   r   r@   )rA   r0   r1   )r   r7   r>   r   r   )r0   r   r8   r?   r   )r   r1   r   r9   r@   )r   r   r2   r   r:   )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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.''''&	() 	* #( 	LAq!Q1Q4yA~!q&Y..q!4<<>G**1aA6>>@&I**1a!Q8@@BFK		Lr'   c                    t        g d      }t        g d      }t        g d      }g }|j                  |d d dddggf       |j                  |d d gdgddggf       |j                  |d d gdgddgdggf       |j                  |d d gdgdddggf       |j                  |d d gdgdddggf       |j                  |d d	 gdgd
ddgdd	ggf       |j                  |d d gdgd
ddgddggf       |j                  |d d gdgdg dg dg dgf       |j                  |d d gdgdg dg dg dgf       |j                  |d d gdgdg dg dg dgf       |j                  |d d	 gdgdg dg dg dgf       |j                  |d d gdgdg dg dg dgf       |j                  |d d gdgdg dg dg dgf       |j                  |d d gd	gdg dg dg dgf       |j                  |d d	 gdgdg d g d!g dgf       |j                  |d d gd"gdg d#g dg dgf       |j                  |d d gd$gd%g d&g d&g d&g d&g d'gf       |j                  |d d	 gd(gd%g d&g d&g d&g d'g d)gf       |j                  |d d gdgd%g d&g d&g d'g d)g d*gf       |j                  |d d gdgd%g d&g d'g d)g d*g d&gf       |j                  |d d gdgd%g d'g d)g d*g d&g d&gf       |j                  |d d	 gdgd%g d+g d,g d&g d&g d&gf       |j                  |d d gd	gd%g d-g d&g d&g d&g d&gf       |j                  |d d |d d gdd	gd.g d/g d)g d*gf       |j                  |d d	 |d d gddgdg d0g d1g d2gf       |j                  |d d" |d d gd	d(gd3g d4g d5g d6g d7g d8g d9gf       |j                  |d d" ||d d" gg d:d;g d<g d=g d>g d?g d@gf       |j                  |d d	 |d d |gg dAdBg dCg dDg dEg dFg dGg dHgf       |j                  |gdgddggf       |j                  |d d |gdd	gd.g d/g d)g d*gf       |j                  t        j                   g dIg dJg      ddgd.g d'g dKg dLgf       |j                  g dMg dNd.g dOg dMg dPgf       |D ]  \  }}}}|dQ|dQ|dQ|}	t        t	        j
                  |||R      j                         ||	S       |d   |d   k(  sSt        |d   dT      sct        |d         t        |      k  s~t        t	        j
                  ||U      j                         ||	S        y )VNr/   r5   r;   r0   r   r0   r0   r1   r0   r0   r1   r1   r1   r1   rA   r2   )r2   r3   rB   rC   rD   )r   r0   r   r   )r   r   r1   r   )r   r   r   r2   r2   r4   )r   r   r   r   r   )r0   r   r   r   r   )r   r1   r   r   r   rE   )r   r0   r   r   r   )r   r   r1   r   r   )r   r   r   r2   r   )r   r   r0   r   r   )r   r   r   r1   r   )r   r   r   r   r2   )r   r   r   r0   r   )r   r   r   r   r1   r3   )r   r   r   r   r0   rP   )r4   r2   )r   r   r   r0   r   r   rK   rF   rG   r   r0   r   )r   r   r1   r   r   r0   )r2   r2   )r0   r   r6   rH   rI   rJ   )r6   r6   )r   r   r0   r   r   r   )r   r   r   r1   r   r   )r   r   r   r   r2   r   )r6   r   r   r   r   r3   rL   rM   rN   r4   r4   )r6   r<   r   r   r   )r0   r7   r=   r   r   )r   r1   r8   r>   r   )r   r   r2   r9   r?   )r   r   r   r3   r:   rO   r6   r4   )r   r   r6   r   r   )r<   r   r   r7   r   )r   r=   r   r   r8   rQ   rR   rS   r0   r1   r2   )r3   r4   r6   )r3   r1   r   )r   r4   r2   )r0   rf   r0   )r0   r   rA   )rf   r0   r   )r   r0   rf    offsetsshape)err_msg__len__rp   )
r   rT   npr   r   diagsrW   hasattrrU   max)
rX   abcr\   r]   r^   rq   r_   rr   s
             r%   
test_diagszTestConstructUtils.test_diags`   s/   /""#&'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!uQq!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HHi+,rF	9-	
 	 	h&:4>4>3@ A 	B $) 
	.Aq%Qqe1UIQvj9GAUCKKM2 aE!H$AaD),!IU+Y__Q:BBDf%,.
	.r'   c                     t        g d      }t        t        j                  |      j	                         t        j                  |             y )Nr/   )r   r   r   rv   rW   ru   diagrX   ry   s     r%   test_diags_defaultz%TestConstructUtils.test_diags_default   s0    /"Y__Q'//12771:>r'   c                 d    t        g dg dg      }t        t        t        j                  |       y )Nr/   )r1   r2   r3   r4   r6   )r   assert_raises
ValueErrorr   rv   r   s     r%   test_diags_default_badz)TestConstructUtils.test_diags_default_bad   s!    ?O45j)//15r'   c                 d   t        g d      }t        g d      }t        g d      }g }|j                  |d d gddf       |j                  |d d ||d d gg dd	f       |j                  |d d
 ||d d gg ddf       |j                  |d d
 ||d d gg dd f       |j                  g g dd f       |j                  dgdgdf       |j                  |gdd f       |D ](  \  }}}t        t        t        j
                  |||       * t        t        t        j
                  d ggdg       y )Nr/   r5   r;   r   rb   r3   r2   rN   rk   r1   rO   rl   r0   r3   r3   ro   rt   )r   rT   r   r   r   rv   	TypeError)rX   ry   rz   r{   r\   r]   r^   rq   s           r%   test_diags_badz!TestConstructUtils.test_diags_bad   s4   /""#&'q!ugq&)*q!uQq!uox89q!uQq!uoy&9:q!uQq!uoy$78b)T*+qcB4()qc1d^$  	RKAq%*iooq!5Q	R 	iD6(QCHr'   c                 N   t         j                  j                  d       dD ]u  }d|dz  z   t         j                  j                  dd      z   }t        j                  | dz   |dz
        }t         j                  j                  |       |d | }|D cg c]-  }t         j                  j                  |t        |      z
        / }}t        j                  ||      }t        t        ||      D cg c]  \  }}t        j                  ||       c}}      }	t        |j                         |	       t        |      dk(  s#t        j                  |d   |d         }t        j                  |d   |d         }	t        |j                         |	       x y c c}w c c}}w )Ni  )r0   r1   r2   r3   r4   r:   r0   r1   r   r:   rt   )ru   r   seedrandintarangeshuffler   absr   rv   sumzipr~   r   rW   rU   )
rX   n_diagsr   rp   q	diagonalsmatxj	dense_mats
             r%   test_diags_vs_diagz%TestConstructUtils.test_diags_vs_diag   sJ    			t* 	IGGQJ!2!21b!99Aii1ac*GIIg&hw'G=DECF
3EIE//)W=Cs9g7NOtq!RWWQ]OPI*3;;=)D7|q ooilGAJGGGIaL'!*=	.s{{}iH#	I F Ps   2F3 F!c                     t        j                  dgdgdt              }t        |j                  t               t        |j                         ddgddgg       y )Ng@r   re   )rp   rq   r"   r1   )r   rv   intr   r"   rW   rX   r   s     r%   test_diags_dtypez#TestConstructUtils.test_diags_dtype   sE    OOSEA3fCHQWWc"QYY[Aq6Aq6"23r'   c                     t        t        d            }t        dd      D ]V  }t        t        j                  ||      j                         t        j                  |g|g      j                                X y )Nr4   r   r6   rt   )listranger   r   rv   rW   )rX   r]   ks      r%   test_diags_one_diagonalz*TestConstructUtils.test_diags_one_diagonal   s`    qNr1 	FAA6>>@"!qc:BBDF	Fr'   c                 Z    t        j                  g       }t        |j                  d       y )Nr   r   )r   rv   r   rq   r   s     r%   test_diags_emptyz#TestConstructUtils.test_diags_empty   s    OOBQWWf%r'   identityc                    t         |d      j                         dgg       t         |d      j                         ddgddgg        |ddd      }t        |j                  t        j                  d             t        |j                  d       t
        D ]E  } |d|      }t        |j                  |       t        |j                         g d	g d
g dg       G y Nr0   r1   r   r2   int8r   )r"   r!   r!   rh   ri   rj   r   rW   r"   ru   r!   sparse_formats)rX   r   Ifmts       r%   test_identityz TestConstructUtils.test_identity   s    Xa[((*aSE2Xa[((*aUAa5M:QfU3QWWbhhv./QXXu%! 	AC3'A3'www&?@	Ar'   eyec                    t         |dd      j                         dgg       t         |dd      j                         g dg dg       t         |dd      j                         ddgddgddgg       t         |dd      j                         g dg dg dg       t         |ddd	      j                  t        j                  d             d
D ]  }d
D ]  }t	        dd      D ]  }|dkD  r||kD  s|dk  r>t        |      |kD  r0t        j                  t        d      5   ||||       d d d        Pt         ||||      j                         t        j                  |||             ||k(  st         |||      j                         t        j                  |||                y # 1 sw Y   xY w)Nr0   r1   r2   rh   ri   r   rj   int16r"   rg   r   r6   zOffset.*out of boundsmatchr   )
r   rW   r"   ru   r   r   pytestr   r   r   )rX   r   r   r   r   s        r%   test_eyezTestConstructUtils.test_eye  s   S1X%%'1#/S1X%%'''):;S1X%%'1Q%1qe)<=S1X%%'''')BCS17+11288G3DE 	A r! A A!a%QUs1vz#]]&.E +  1N+ + %1N224FF1a1- 6( #A 3 3 5 "q!q 1)	+ +s   "F5	5F>c                    t         |d      j                         dgg       t         |d      j                         ddgddgg        |ddd      }t        |j                  t        j                  d             t        |j                  d       t
        D ]E  } |d|      }t        |j                  |       t        |j                         g d	g d
g dg       G y r   r   )rX   r   r   r   s       r%   test_eye_onezTestConstructUtils.test_eye_one%  s    SV^^%u-SV^^%1qe}5.QWWbhhv./QXXu%! 	ACAc"A3'www&?@	Ar'   c                     t        t        j                  d      t              sJ t        t        j                  d      t              rJ y )Nr2   )
isinstancer   	eye_arrayr   r   rX   s    r%   test_eye_array_vs_matrixz+TestConstructUtils.test_eye_array_vs_matrix3  s9    )--a0':::immA.8888r'   c                 v   g }|j                  t        dgg             |j                  t        dgg             |j                  t        dgg             |j                  t        dgg             |j                  t        dgdgg             |j                  t        ddgg             |j                  t        ddgddgg             |j                  t        ddgddgg             |j                  t        g d	g d
g             |j                  t        ddgddgddgg             |j                  t        g dg dg dg             |j                  t        g dg             |j                  t        g dg dg             |D ]  }t        |      }|D ]  }t        |      }t        j                  ||      }t
        dd D ]\  }t        j                  |||      }t        |j                  |       t        |j                         |       t        |t              r\J    |d   }|d   }t        |      }t        |      }t        j                  ||      }t
        D ]\  }t        j                  |||      }t        |j                  |       t        |j                         |       t        |t              r\J  t        j                  t        |      t        |            }t        |j                  |       t        |j                         |       t        |t              sJ y )Nr   rA   r3   r:   r0   r1   r2   r4   r   r1   ir8   r   r?   r6   )r4   r3   r3   rh   )r6   r   r8   )r   r0   r   r1   r   r4   r8   )      ?g      ?r   g      
@)r   g      @r   r   r   rK   )rT   r   r   ru   kronr   r   r   r!   r   rW   r   r   r   r   )	rX   r\   ry   carz   cbexpectedr   r_   s	            r%   	test_kronzTestConstructUtils.test_kron7  s   UQC5\"URD6]#UQC5\"URD6]#UQC9%&UQqE7^$UQqE1Q%=)*UQqE1Q%=)*UHX./0UQqE1Q%1./0UGGG456UO,-.U.{;<=  		7A1B 7q\771a=)!A. 7C&^^B3?F 4&v~~'7B%fg666	77		7 "I"Iq\q\771a=! 	/C^^B37F,v~~/:fg...		/ 
1z!}SIV]]C(6>>+X6&(+++r'   c                     d}t        j                  dgd|f|dz
        }t        j                  dg|dfd|z
        }t        j                  ||       t        j                  ||       y )Ni   r0   )rq   rp   )r   diags_arrayr   )rX   r   ry   rz   s       r%   test_kron_largez"TestConstructUtils.test_kron_largeg  s_    !!1#aVQqSA!!1#aVQqSAq!q!r'   c           
         g }|j                  t        dgg             |j                  t        dgg             |j                  t        dgg             |j                  t        dgg             |j                  t        ddgddgg             |j                  t        ddgddgg             |j                  t        g d	g d
g dg             |j                  t        g dg dg dg             |D ]  }|D ]  }t        j                  t	        |      t	        |            j                         }t        j                  t        j                  |j                  d         |      t        j                  |t        j                  |j                  d               z   }t        ||         t        j                  t              t                    j                         }t        |       y )Nr   rA   r3   r:   r0   r1   r2   r4   r   r   )r   r2   r   rh   )r   r4   rA   )r3   rf   r8   )rT   r   r   kronsumr   rW   ru   r   r   rq   r   r   )rX   r\   ry   rz   r_   r   s         r%   test_kronsumzTestConstructUtils.test_kronsumo  s   UQC5\"URD6]#UQC5\"URD6]#UQqE1Q%=)*UQqE1Q%=)*UHXg678UGHX678  	5A 5"**9Q<1FNNPGGBFF1771:$6: gga
);<="684	5	5 "":a=*Q-@HHJ68,r'   coo_clsc                      |ddgddgg      } |ddgg      }t        ddgddgddgg      }t        t        j                  ||g      j	                         |       t        t        j                  ||gt
        j                        j                  t
        j                         t        t        j                  |j                         |j                         g      j	                         |       t        t        j                  |j                         |j                         g      j	                         |       t        j                  |j                         |j                         gdt
        j                  	      }t        |j                  t
        j                         t        |j                  j                  t
        j                         t        |j                  j                  t
        j                         t        t        j                  |j                         |j                         g      j	                         |       t        j                  |j                         |j                         gd
t
        j                  	      }t        |j                  t
        j                         t        |j                  j                  t
        j                         t        |j                  j                  t
        j                         y )Nr0   r1   r2   r3   r4   r6   r   r   )r!   r"   r   )r   r   r   vstackrW   ru   float32r"   todoktocsrindicesint32indptrtocsc)rX   r   ABr   r_   s         r%   test_vstackzTestConstructUtils.test_vstack  s   aUAa5M"aUG1a&a&a&" # 	Y%%q!f-557BY%%q!fBJJ?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]](("((3r'   c                    ddgddgg}ddgg}t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ y Nr0   r1   r2   r3   r4   r6   )r   r   r   r   r   r   r   rX   r   r   s      r%   test_vstack_matrix_or_arrayz.TestConstructUtils.test_vstack_matrix_or_array  s    UAa5MUG)**IaL)A,+GH'RRR)**IaL*Q-+HI7SSS)**JqM9Q<+HI7SSS)**JqM:a=+IJHUUUr'   c                     |ddgddgg      } |dgdgg      }t        g dg dg      }t        t        j                  ||g      j	                         |       t        t        j                  ||gt
        j                  	      j                  t
        j                         t        t        j                  |j                         |j                         g      j	                         |       t        t        j                  |j                         |j                         g      j	                         |       t        t        j                  |j                         |j                         gt
        j                  	      j                  t
        j                         t        t        j                  |j                         |j                         g      j	                         |       t        t        j                  |j                         |j                         gt
        j                  	      j                  t
        j                         y )
Nr0   r1   r2   r3   r4   r6   r0   r1   r4   r2   r3   r6   r   )r   r   r   hstackrW   ru   r   r"   r   r   r   )rX   r   r   r   r   s        r%   test_hstackzTestConstructUtils.test_hstack  s   aUAa5M"aS!I)#% &Y%%q!f-557BY%%q!fBJJ?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	!r'   c                    ddgddgg}dgdgg}t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ t        t        j                  t        |      t        |      g      t              sJ y r   )r   r   r   r   r   r   r   r   s      r%   test_hstack_matrix_or_arrayz.TestConstructUtils.test_hstack_matrix_or_array  s    UAa5MS!I)**IaL)A,+GH'RRR)**IaL*Q-+HI7SSS)**JqM9Q<+HI7SSS)**JqM:a=+IJHUUUr'   block_arrayc                    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         |||gd |gg      j                         |       t	        dt
        j                        }t         ||j                         |j                         g||j                         gg      j                         |       t         ||j                         |j                         g|j                         |j                         gg      j                         |       t        g dg dg dg      }t         ||d gd |gg      j                         |       t         ||j                         |j                  j                         g||j                         gg      j                         |       t         ||j                         |j                  j                         g|j                         |j                         gg      j                         |       t	        dt
        j                        }t        ddgddgddgg      }t         |d |g|d gg      j                         |       t         ||j                  j                         |j                         g|j                         |gg      j                         |       t         ||j                  j                         |j                         g|j                         |j                         gg      j                         |       t        j                  d      }t         |d d gg      j                         |       t         |d |g|d gg      j                         |       t        dgg      }t         |d |g|d gg      j                         |       t        t              5 }	 ||g|gg       d d d        	j                  d       t        t              5 }	 ||j                         g|j                         gg       d d d        |	j                  d       t        t              5 }	 ||j                         g|j                         gg       d d d        |	j                  d       t        t              5 }	 |||gg       d d d        |	j                  d       t        t              5 }	 ||j                         |j                         gg       d d d        |	j                  d       t        t              5 }	 ||j                         |j                         gg       d d d        |	j                  d       y # 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)Nr0   r1   r2   r3   r4   r6   r7   r   r   r   )r   r   r7   rd   r   )r0   r1   r   )r2   r3   r   rb   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   rW   r   ru   r   r   r   Temptyr   r   r   )
rX   r   r   r   CDr   EZexcinfos
             r%   test_block_creationz&TestConstructUtils.test_block_creation  s    1v1v&'sA3i sef)##% & 	[1a&4)!45==?JfBHH-[1779aggi"8#$aggi."2 33:79	 	[1779aggi"8#$779aggi"8": ;;B79	 )##% & 	[1d)dAY!78@@BHM[1779acciik":#$aggi."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:& 	4'!'')qwwyk23	4;<:& 	4'!'')qwwyk23	4MN:& 	"'!Q!	"GH:& 	2'!'')QWWY/01	2MN:& 	2'!'')QWWY/01	2;<-	$ 	$	4 	4	4 	4	" 	"	2 	2	2 	2sH   /V$)V5)V&V3:(V?
(WVV#&V03V<?WWc                 &   t         j                  }ddgddggdgdgg}}t        |      t        |      }}t         |d |g|d ggd      t              sJ t         |d |g|d ggd      t              sJ t         |||ggd      t              sJ y )	Nr0   r1   r2   r3   r7   r4   r   r   )r   r   r   r   r   )rX   blockFlGlFmGms         r%   test_block_return_typez)TestConstructUtils.test_block_return_type  s    %%
 a&!QA3*BBBB%$b$Z 8GQQQ%$b$Z 8GQQQ%"b
597CCCr'   c                 P   t         j                  }ddgddggdgdgg}}t        |      t        |      }}t        |      t        |      }}t	         |||ggd      t
              sJ t	         |||ggd      t              sJ t	         |d	|g|d	ggd      t
              sJ t	         |d	|g|d	ggd      t
              sJ t	         |d	|g|d	ggd      t              sJ t	         |d	|g|d	ggd      t              sJ t	         |||ggd      t
              sJ t	         |||ggd      t
              sJ t	         |||ggd      t
              sJ t	         |||ggd      t              sJ t	         |||ggd      t
              sJ t	         |||ggd      t              sJ t	         ||j                         |j                         ggd
      t
              sJ t	         ||j                         |j                         ggd
      t              sJ t	         ||j                         |j                         ggd      t
              sJ t	         ||j                         |j                         ggd      t              sJ t	         |||ggd      t
              sJ t	         ||j                         |ggd      t
              sJ t	         ||j                         |ggd      t              sJ t	         |||ggd
      t              sJ y	)z2This can be removed after sparse matrix is removedr0   r1   r2   r3   r7   r4   r   r   Nr   )r   bmatr   r   r   r   r   r   )rX   r   r   r   r   r   FaGas           r%   test_bmat_return_typez(TestConstructUtils.test_bmat_return_type'  s   ~~a&!QA3*BBBB2	"B$Rz%8'BBB$Rz%8(CCC$r
RJ7FPPP$r
RJ7FPPP$r
RJ7FQQQ$r
RJ7FQQQ $Rz%8'BBB$Rz%8'BBB$Rz%8'BBB$Rz%8(CCC$Rz%8'BBB$Rz%8(CCC $RXXZ 89%H'RRR$RXXZ 89%H(SSS$RXXZ 89%H'RRR$RXXZ 89%H(SSS $Rz%8'BBB$R 01%@'JJJ$R 01%@(KKK$Rz%8(CCCr'   z!Can't create large array for testc           	         t        d       d}t        t        j                  ||ft                    }|j                         }t        j                  ||fdd      }t        t        j                  t        j                  t        j                  |j                        |                   t        |j                  j                  t        j                          t        |j                  j                  t        j                          y)z6 test for indptr overflow when concatenating matrices i0u  i  r   r   F)axisreturn_spmatrixN)r	   r   ru   onesboolcopyr   _compressed_sparse_stackr   allequaldiffr   r   r   r"   int64)rX   r   r   r   r   s        r%   test_concatenate_int32_overflowz2TestConstructUtils.test_concatenate_int32_overflowK  s     	% bggq!fD12FFH..1vA?DF 	rxx 11567QYY__bhh/QXX^^RXX.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      j                         |       y)z basic test for block_diag r0   r1   r2   r3   r4   r6   r7   )r0   r1   r   r   )r2   r3   r   r   )r   r   r4   r   )r   r   r6   r   )r   r   r   r7   N)r   r   r   r   
block_diagrW   )rX   r   r   r   r   s        r%   test_block_diag_basicz(TestConstructUtils.test_block_diag_basic[  s{    !uaUm$sA3i se,&&&&	( ) 	Y))1a)4<<>Ir'   c                    t        t        j                  ddgdg      j                         g dg dg       t	        g d      }t	        ddg      }t        t        j                  ||g      j                         g dg d	g       y
)z) block_diag with scalar and 1d arguments r1   r2   r3   )r1   r2   r   )r   r   r3   )r0   r   r2   r   )r0   r   r2   r   r   )r   r   r   r   r3   N)r   r   r
  rW   r   r   s      r%   test_block_diag_scalar_1d_argsz1TestConstructUtils.test_block_diag_scalar_1d_argsi  sv     	9//!A
;CCE%y1	3 gqe9//A7??A+_=	?r'   c                    t        t        j                  ddgg      j                         t	        ddgg             t        t        j                  ddggg      j                         t	        ddgg             t        t        j                  dgdggg      j                         t	        dgdgg             t        t        j                  dg      j                         t	        dgg             y)z block_diag with one matrix r0   r   N)r   r   r
  rW   r   r   s    r%   test_block_diag_1z$TestConstructUtils.test_block_diag_1u  s    Y))Aq6(3;;=QF8_	&Y))QF8*5==?QF8_	&Y))QC!:,7??AQC!:&	( 	Y))1#.668QC5\	#r'   c                    t        g dgd      }t        ddggd      }t        t        j                  ||g      j	                         t        g dg dg             t        d	gd
gdggd      }t        dgdggd      }t        t        j                  ||g      j	                         t        d	dgd
dgddgddgddgg             y)z block_diag with sparse arrays rm   )r0   r2   rq   r3   r4   rd   )r0   r1   r2   r   r   )r   r   r   r3   r4   r0   r1   r2   )r2   r0   rc   r   N)r   r   r   r
  rW   r   r   s      r%   test_block_diag_sparse_arraysz0TestConstructUtils.test_block_diag_sparse_arrays  s     yk01vhf-Y))1a&199;O_=>	@ sQC!oV4sQCj/Y))1a&199;QFQFQFQFQFCD	Fr'   c                 t   t        g dg      t        g dg      }}t        t        j                  ||g      t
              sJ t        t        j                  ||g      t
              sJ t        t        j                  ||g      t
              sJ t        t        j                  ||g      t              sJ y )Nrm   )r1   r2   r3   )r   r   r   r   r
  r   r   r   s      r%   test_block_diag_return_typez.TestConstructUtils.test_block_diag_return_type  s    )%z9+'>1)..1v6@@@)..1v6@@@)..1v6@@@)..1v6AAAr'   c                 X   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       R  dddd      }t        |j                  t        j                          dddt        j                  j                  d            }t!        |j"                  |j"                         t!        |j$                  |j$                         t!        |j&                  |j&                         dD ]L  } dd|	      }t        |j                  t)        |t        j*                  |j                        z               N d
D ]#  } dd|      }t        |j,                  |       % t/        t0        fd       t/        t0        fd        y )Nr4   r:   皙?)r    r"   )r4   r:     )r    r#   )g        r  r   g      ?r    )r   r   r   r   r   c                        ddd      S )Nr4   r:   g? fs   r%   <lambda>z9TestConstructUtils.test_random_sampling.<locals>.<lambda>  s    a2sm r'   c                        ddd      S )Nr4   r:   gr  r  s   r%   r  z9TestConstructUtils.test_random_sampling.<locals>.<lambda>  s    a2tn r'   )sprandr&   ru   r   float64
longdoubler   r  	complex64
complex128r   r"   rq   nnzr   RandomStater   datarowcolr   prodr!   r   r   )rX   tr   x1x2r    r   r  s          @r%   test_random_samplingz'TestConstructUtils.test_random_sampling  s   ! 	>Ajj"**bmmhh",,G 'aS2QWWa(QWWg.QUUA&' 1b#D9B2::.1b# "		 5 5d ;=B rww0rvvrvv.rvvrvv./ EaW-QUUC"''!''2B(B$CDE 4 ,aC(QXXs+, *&;<*&<=7	>r'   c           	         d dt         j                  j                         g}	 t         j                  j                         }|j	                  |       |D ]  }t        dddt         j                  |      }t        t        j                  t        j                  d|j                                     t        t        j                  t        j                  |j                  d                    y # t
        $ r Y w xY wNr  r:      r   )r    r"   r#   r   r0   )ru   r   r%  default_rngrT   AttributeErrorr  r   r   r  
less_equalr&  )rX   random_statesgenr#   r   s        r%   	test_randzTestConstructUtils.test_rand  s    tRYY%:%:%<=	))'')C  % * 	6Lr2s"**$02ABFF2==AFF345BFF2==345		6  		s   /C0 0	C<;C<c           	      0   d dt         j                  j                         g}	 t         j                  j                         }|j	                  |       |D ]/  }t        dddt         j                  |      }t        t        j                  t        j                  |j                  d                   t        t        j                  t        j                  d|j                                     t        dddt         j                  |      }t        t        j                  t        j                  |j                  d                   t        t        j                  t        j                  d|j                                     2 y # t
        $ r Y Bw xY wr/  )ru   r   r%  r1  rT   r2  r&   r   r   anylessr&  r+   )rX   r4  r5  rsr   s        r%   
test_randnzTestConstructUtils.test_randn  s    tRYY%:%:%<=	))'')C  %   	0BRBJJRPABFF2771661-./BFF2771aff-./r2s"**SUVABFF2771661-./BFF2771aff-./	0  		s   /F 	FFc                 b    t        j                  ddd       t        j                  dd       y )Nr:   r]   r   r:   r:   )r   r   r*   r   s    r%   test_random_accept_str_dtypez/TestConstructUtils.test_random_accept_str_dtype  s&     	Rs+xs3r'   c                 T   t        j                  ddd      }t        |j                         d       t        j                  dd      }t        |j                         d       t        |t              sJ d}t        j                  |d      }t        |j                         d       y )	Nr:   gx&1?r  r>   r=  )        r@  g(Rs?<i  )r   r   r   count_nonzeror*   r   r   )rX   sparse_matrixsparse_arrayrq   s       r%   Etest_random_sparse_matrix_returns_correct_number_of_non_zero_elementszXTestConstructUtils.test_random_sparse_matrix_returns_correct_number_of_non_zero_elements  s     "((R@]00226 --hG\//1"5,000 --eZH\//1$7r'   N)2__name__
__module____qualname__r`   r|   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   slowxfail_on_32bitr  r  r  r  r  r  r-  r6  r;  r>  rD  r  r'   r%   r-   r-   '   s   6LpL.\?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.,`-0 [[YY(?@4 A4:V [[YY(?@! A!.V [[]Y^^Y=R=R,STK= UK=Z
D"DH [[[[ CD/ E /J	?
#FB>>60&48r'   r-   c                     t        j                  dd      } t        t        j                  |       j                         t        j                  |              t        t        j                  | d      j                         t        j                  | d             t        t        j                  | dd      j                         t        j                  | d      dd	dd	f          t        j                  t        d
      5  t        j                  t        j                  dd      dd       ddd       y# 1 sw Y   yxY w)z7Tests of diags_array that do not rely on diags wrapper.r0   r4   r1   rt   r   r   ro   Nr3   z.*out of boundsr   r  )ru   r   r   r   r   rW   r~   r   r   r   rv   )r~   s    r%   test_diags_arrayrM    s    99Q?Dy,,T2::<bggdmLdA.668"''$!:L dAV<DDF
2A2rr6" 
z):	; :		!Q&9: : :s   -D::E)g{Gz?r   NN)!__doc__numpyru   r   numpy.testingr   r   r   r   r   r   r   scipy._lib._testutilsr	   scipy._lib._utilr
   scipy.sparser   r   r   r   r   r   r   r   scipy.sparse._constructr   r  r   r&   r+   r-   rM  r  r'   r%   <module>rU     sZ    /  < <  * 3 /3 3 3 3<
4XA8 A8H:r'   