
    -ii                        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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddl m!Z" g d	Z#d"dZ$d"dZ% G d d          Z&d Z'e	j(        )                    dej*        ej+        g          d             Z,e	j(        )                    dej*        ej+        g          d             Z-d Z.d Z/e	j(        )                    de#          d             Z0d Z1d Z2d Z3d Z4d Z5e	j(        )                    de#          d             Z6d Z7d Z8e	j(        )                    de#          d              Z9d! 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)
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dok{Gz?r   c           	          t           j                            |          }|j        }t	          j        | ||||||          S N)nprandomdefault_rngstandard_normal	construct)mndensityformatdtyperngdata_rvss          g/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/sparse/tests/test_construct.py_sprandnr2      s<    
)


$
$C"HAq'65#xHHH    c                     t           j                            |          }|j        }t	          j        | |f|||||          S )N)r,   r-   r.   r/   data_sampler)r%   r&   r'   r(   r)   random_array)r*   r+   r,   r-   r.   r/   r5   s          r1   _sprandn_arrayr7   !   sO    
)


$
$C&L!1a&'&PU&)F F F Fr3   c            
       |   e Zd Zej                            deeee	e
eeg          d             Zej                            deeeeeeg          d             Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zej                            dej        ej         g          d             Z!ej                            dej"        ej         g          d             Z#ej                            dej"        ej         g          d             Z$d Z%ej                            dddgddggddfddgddggddfddgddgggddfg          d             Z&d Z'd Z(d Z)d Z*d Z+ej                            deeg          d              Z,d! Z-d" Z.d# Z/ej                            deeg          d$             Z0d% Z1ej                            d&ej2        ej3        f          d'             Z4d( Z5d) Z6ej        j7        ej        8                    d*          d+                         Z9d, Z:d- Z;d. Z<d/ Z=d0 Z>d1 Z?d2 Z@ej                            d3dd4eAjB        C                    d4          g          d5             ZDej                            d3dd4eAjB        C                    d4          g          d6             ZEd7 ZFd8 ZGd9 ZHd: ZIdS );TestConstructUtilsclsc                     t          j        t          d          5   |d           d d d            d S # 1 swxY w Y   d S )NzEscipy sparse array classes do not support instantiation from a scalarmatchr   )pytestr   
ValueErrorselfr:   s     r1    test_singleton_array_constructorz3TestConstructUtils.test_singleton_array_constructor+   s    
 ].
 
 
 	 	 CFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   599c                 2     |d          j         dk    sJ dS )a1  
        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      rE   Nshaper@   s     r1   !test_singleton_matrix_constructorz4TestConstructUtils.test_singleton_matrix_constructor9   s%     s1vv|v%%%%%%r3   c                 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rE               )         	   
   )               r   rE   rK   rL   rM   rE   r   r   r   r   rK   r   r   r   r   rL   r   )r   r   r   rM   rN   r   r   rL   r   r   )r   r   r   rM   r   )r   r   r   r   rN   )rE   r   rQ   r   rK   r   r   r   rL   rO   r   r   r   rE   rP   r   r   r   rK   rQ   r   rO   )r   r   rL   r   r   r   )r   r   r   rM   r   r   )r   r   r   r   rN   r   )rO   r   r   r   r   r   r   rP   r   r   r   r   r   r   rQ   r   r   r   rY   r   rE   )rO   rU   r   r   r   r   )rE   rP   rV   r   r   r   )r   rK   rQ   rW   r   r   )r   r   rL   rR   rX   r   )r   r   r   rM   rS   r   rK   rY   )r   r   rQ   r   r   )rT   r   r   rR   r   )r   rU   r   r   rS   r   r   rV   r   r   rE   r   r   rW   r   r   rK   r   r   rX   )rY   rE   rK   )r   rP   rV   r   r   )rE   r   rQ   rW   r   )r   rK   r   rR   rX   )r   r   rL   r   rS   )r   appendlenr   r)   spdiagstoarray)
rA   diags1diags2diags3casesdor*   r+   results
             r1   test_spdiagszTestConstructUtils.test_spdiagsG   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r3   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 dPg dQgf           |D ]\  }}}}|dR|dR|dR|}	t          t	          j        |||S                                          ||	T           |d         |d         k    rtt          |d         dU          r^t          |d                   t          |          k    r8t          t	          j        ||V                                          ||	T           d S )WN      ?       @      @      @      @      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@rE   r   rD   rK   rE   rE   rK   rK   rK   rK   rY   rL   )rL   rM   rZ   r[   r\   )r   rE   r   r   )r   r   rK   r   )r   r   r   rL   rL   rN   )r   r   r   r   r   )rE   r   r   r   r   )r   rK   r   r   r   r]   )r   rE   r   r   r   )r   r   rK   r   r   )r   r   r   rL   r   )r   r   rE   r   r   )r   r   r   rK   r   )r   r   r   r   rL   )r   r   r   rE   r   )r   r   r   r   rK   rM   )r   r   r   r   rE   rh   )rN   rL   r   r   r   rE   r   r   rc   r^   r_   r   rE   r   )r   r   rK   r   r   rE   rL   rL   )rE   r   rO   r`   ra   rb   )rO   rO   )r   r   rE   r   r   r   )r   r   r   rK   r   r   )r   r   r   r   rL   r   )rO   r   r   r   r   rM   rd   re   rf   rN   rN   )rO   rT   r   r   r   )rE   rP   rU   r   r   )r   rK   rQ   rV   r   )r   r   rL   rR   rW   )r   r   r   rM   rS   rg   rO   rN   )r   r   rO   r   r   )rT   r   r   rP   r   )r   rU   r   r   rQ   ri   rj   rk   )rz   r{   r|   )r}   r~   r   )rM   rK   r   )r   rN   rL   )rz   g       rz   )rE   r   rY   )r   rE   r   )rE   r   rE   )r   rE   r    offsetsrG   )err_msg__len__r   )
r   rl   r%   r   r)   diagsro   hasattrrm   max)
rA   abcrs   rt   ru   rG   rv   r   s
             r1   
test_diagszTestConstructUtils.test_diags   sN	   +++,,,,,--00011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Hooo788rFYY			999-	
 	 	 	 	nnnhhh9C9C9E F 	G 	G 	G $) 
	6 
	6Aq%99q99U99v99GAUCCCKKMM2 2 2 2 aE!H$$AaD),, %!IIU++Y_Q:::BBDD#W6 6 6 6
	6 
	6r3   c                     t          g d          }t          t          j        |                                          t          j        |                     d S )Nry   )r   r   r)   r   ro   r%   diagrA   r   s     r1   test_diags_defaultz%TestConstructUtils.test_diags_default   sJ    +++,,Y_Q''//11271::>>>>>r3   c                 p    t          g dg dg          }t          t          t          j        |           d S )NrJ   )rK   rL   rM   rN   rO   )r   assert_raisesr?   r)   r   r   s     r1   test_diags_default_badz)TestConstructUtils.test_diags_default_bad   s6    ???OOO455j)/155555r3   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 )Nry   r   r   r   rD   rM   rL   rf   r   rK   rg   r   rz   rM   rM   r   r   )r   rl   r   r?   r)   r   	TypeError)rA   r   r   r   rs   rt   ru   rG   s           r1   test_diags_badz!TestConstructUtils.test_diags_bad   s   +++,,,,,--00011q!ugq&)***q!uQq!uoxxx8999q!uQq!uoyyy&9:::q!uQq!uoyyy$7888b)))T*+++sebT6*+++qc1d^$$$  	R 	RKAq%*ioq!5QQQQQiD6(QCHHHHHHr3   c                    t           j                            d          dD ]C}d|dz  z                       dd          z   t          j         dz   dz
            }                    |           |d |         }fd|D             }t          j        ||          }t          d	 t          ||          D                       }t          |                                |           t          |          dk    ret          j        |d         |d                   }t          j        |d         |d                   }t          |                                |           Ed S )
Ni  )rE   rK   rL   rM   rN   rS   rE   rK   r   rS   c                 Z    g | ]'}                     t          |          z
            (S  )r   abs).0qr+   r/   s     r1   
<listcomp>z9TestConstructUtils.test_diags_vs_diag.<locals>.<listcomp>   s/    ???!!c!ff*--???r3   r   c                 >    g | ]\  }}t          j        ||          S r   )r%   r   )r   xjs      r1   r   z9TestConstructUtils.test_diags_vs_diag.<locals>.<listcomp>   s&    OOOtq!RWQ]]OOOr3   )r%   r&   RandomStaterandintarangeshuffler)   r   sumzipr   ro   rm   r   )rA   n_diagsr   	diagonalsmat	dense_matr+   r/   s         @@r1   test_diags_vs_diagz%TestConstructUtils.test_diags_vs_diag   s`    i##D))* 	I 	IGGQJQ!3!33Ai1ac**GKK   hwh'G?????w???I/)W===COOs9g7N7NOOOPPI*3;;==)DDD7||q  oilGAJGGGGIaL'!*==	.s{{}}iHHH#	I 	Ir3   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   r   rG   r.   rK   )r)   r   intr   r.   ro   rA   r   s     r1   test_diags_dtypez#TestConstructUtils.test_diags_dtype  s[    OSEA3fCHHHQWc"""QYY[[Aq6Aq6"233333r3   c                     g d}t          dd          D ]`}t          t          j        ||                                          t          j        |g|g                                                     ad S )N)        rz   r{   r|   r}   r   rO   r   )ranger   r)   r   ro   )rA   rt   ks      r1   test_diags_one_diagonalz*TestConstructUtils.test_diags_one_diagonal  s    %%%r1 	F 	FAA666>>@@"!qc:::BBDDF F F F	F 	Fr3   c                 X    t          j        g           }t          |j        d           d S )Nr   r   )r)   r   r   rG   r   s     r1   test_diags_emptyz#TestConstructUtils.test_diags_empty  s)    OBQWf%%%%%r3   identityc                    t           |d                                          dgg           t           |d                                          ddgddgg            |ddd          }t          |j        t          j        d                     t          |j        d           t
          D ]O} |d|          }t          |j        |           t          |                                g d	g d
g dg           Pd S NrE   rK   r   rL   int8r   )r.   r-   r-   r   r   r   r   ro   r.   r%   r-   sparse_formats)rA   r   Ifmts       r1   test_identityz TestConstructUtils.test_identity  s   XXa[[((**aSE222XXa[[((**aUAa5M:::HQfU333QWbhv..///QXu%%%! 	A 	AC3'''A3'''wwwwwwwww&?@@@@	A 	Ar3   eyec                 &   t           |dd                                          dgg           t           |dd                                          g dg dg           t           |dd                                          ddgddgddgg           t           |dd                                          g dg dg dg           t           |ddd	          j        t          j        d                     d
D ]}d
D ]}t	          dd          D ]}|dk    r||k    s|dk     rUt          |          |k    rBt          j        t          d          5   ||||           d d d            n# 1 swxY w Y   it           ||||                                          t          j	        |||                     ||k    rBt           |||                                          t          j	        |||                     
d S )NrE   rK   rL   r   r   r   r   int16r.   r   r   rO   zOffset.*out of boundsr<   r   )
r   ro   r.   r%   r   r   r>   r   r?   r   )rA   r   r*   r+   r   s        r1   test_eyezTestConstructUtils.test_eye   s   SS1XX%%''1#///SS1XX%%''''''''):;;;SS1XX%%''1Q%1qe)<===SS1XX%%''''''''''')BCCCSS17+++128G3D3DEEE 	 	A  r!  A A!a%%QUUs1vvzz#]&.E   + +  C1NNNN+ + + + + + + + + + + + + + + %C1NNN2244F1a1---   66( #A 3 3 5 5 "q!q 1 1 1  )	 	s   E5	5E9<E9c                    t           |d                                          dgg           t           |d                                          ddgddgg            |ddd          }t          |j        t          j        d                     t          |j        d           t
          D ]O} |d|          }t          |j        |           t          |                                g d	g d
g dg           Pd S r   r   )rA   r   r   r   s       r1   test_eye_onezTestConstructUtils.test_eye_oneD  s   SSVV^^%%u---SSVV^^%%1qe}555C...QWbhv..///QXu%%%! 	A 	ACAc"""A3'''wwwwwwwww&?@@@@	A 	Ar3   c                     t          t          j        d          t                    sJ t          t          j        d          t                    rJ d S )NrL   )
isinstancer)   	eye_arrayr   r   rA   s    r1   test_eye_array_vs_matrixz+TestConstructUtils.test_eye_array_vs_matrixR  sI    )-a00':::::imA..8888888r3   zarr,kw_format,out_formatr   rE   Nr   r   c                     t          |          }t          j        |||          j        |k    sJ t          j        |||          j        |k    sJ t          j        |||          j        |k    sJ d S )Nr   )r   r)   kronr-   )rA   arr	kw_format
out_formatsparrs        r1   test_kron_output_formatz*TestConstructUtils.test_kron_output_formatV  s     #~eU9===D
RRRR~eS;;;BjPPPP~c5;;;BjPPPPPPr3   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 ]}t          |          }|D ]}t          |          }t          j        ||          }t
          dd         D ]g}t          j        |||          }t          |j        |           t          |
                                |           t          |t                    sJ h|                     t          g d                     |                     t          g dg dgg                     |                     t          ddggddggddggddggg                     |D ]s}t          |          }|D ]_}t          |          }t          j        ||          }t          j        ||d          }t          |
                                |           `tt          g dg dg          }t          g dg dg dg          }t          |          }t          |          }t          j        ||          }t
          D ]g}t          j        |||          }t          |j        |           t          |
                                |           t          |t                    sJ ht          j        t          |          t          |          |          }t          |j        |           t          |
                                |           t          |t                    sJ d S )Nr   rY   rM   rS   rE   rK   rL   rN   r   rK   irQ   r   rW   rO   )rN   rM   rM   r   )rO   r   rQ   )r   rE   r   rK   r   rN   rQ   )      ?g      ?r   g      
@)r   g      @r   r   r   )r   rE   rK   r   r   )rl   r   r   r%   r   r   r)   r   r-   r   ro   r   r   r   r
   r   )	rA   rs   r   car   cbexpectedr   rv   s	            r1   	test_kronzTestConstructUtils.test_krona  s   UQC5\\"""URD6]]###UQC5\\"""URD6]]###UQC!:&&'''UQF8__%%%UQFQF+,,---UQFQF+,,---UJJJ


344555UQFQFQF344555UIIIyyy)))<==>>>U111233444U111>>>BCCDDD  		7 		7A1B 7 7q\\71a==)!A#. 7 7C&^B3???F 444&v~~'7'7BBB%fg666666	77 	U999%%&&&UYYY			2344555UaVH1vh!QAq6(CDDEEE 	? 	?A1B ? ?q\\71a=="Bu==="6>>#3#3X>>>>	? (((...9::999iii344q\\q\\71a==! 	/ 	/C^B3777F,,,v~~//:::fg...... 
1z!}}SIIIV]C(((6>>++X666&(+++++++r3   c                    t          j        t          d          5  t          j        dgdggddggg           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddgggdgdgg           d d d            n# 1 swxY w Y   t          j        t          ddggg          dgdggg           t          j        ddgggt          dgdggg                     t          j        dgdggg d           t          j        ddgdgdgg           t          j        dgdggt          g d                     t          j        t          ddg          dgdgg           d S )Nzexpected 2D array or matrixr<   r   rE   r   )r>   r   r   r)   r   r   r   s    r1   test_kron_ndim_exceptionsz,TestConstructUtils.test_kron_ndim_exceptions  s   ]9,IJJJ 	3 	3NQC!:!Qz222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9,IJJJ 	3 	3NaVH:aSz222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	yAq6(,,aSzl;;;!Qz9sQCj\#:#:;;; 	aSz999---1vaSz***aSz9YYY#7#7888y!Q((A3*55555s#   AA
A
,BBBc                     d}t          j        dgd|f|dz
  d           }t          j        dg|dfd|z
  d           }t          j        ||           t          j        ||           d S )Ni   rE   )rG   r   r.   )r)   diags_arrayr   )rA   r+   r   r   s       r1   test_kron_largez"TestConstructUtils.test_kron_large  sw    !1#aVQqSMMM!1#aVQqSMMMq!q!r3   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        |j	        d                   |          t          j        |t          j        |j	        d                             z   }t          ||           t          j        t          |          t          |                                                    }t          ||           d S )Nr   rY   rM   rS   rE   rK   rL   rN   r   r   )r   rL   r   r   )r   rN   rY   )rM   r   rQ   )rl   r   r)   kronsumr   ro   r%   r   r   rG   r   r
   )rA   rs   r   r   rv   r   s         r1   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  	5 	5A 5 5"*9Q<<1FFNNPPGBF171:$6$6:: ga
););<<="684444	5 ":a==*Q--@@HHJJ68,,,,,r3   c                    t          j        t          d          5  t          j        dgdggt          ddg                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        t          ddg          dgdgg           d d d            n# 1 swxY w Y   t          j        ddgddggdg           d S )Nzrequires 2D inputr<   r   rE   rK   )r>   r   r?   r)   r   r   r   s    r1   test_kronsum_ndim_exceptionsz/TestConstructUtils.test_kronsum_ndim_exceptions  sP   ]:-@AAA 	= 	=sQCj)QF*;*;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]:-@AAA 	= 	=iA//1#s<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	Aq6Aq6*QC00000s#   )AAA7)B,,B03B0coo_clsc                 2    |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                                          |           t          t          j        ||gt
          j                  j        t
          j                   t          t          j        |                                |                                g                                          |           t          t          j        |	                                |	                                g                                          |           t          j        |	                                |	                                gdt
          j        	          }t          |j        t
          j                   t          |j
        j        t
          j                   t          |j        j        t
          j                   t          t          j        |                                |                                g                                          |           t          j        |                                |                                gd
t
          j        	          }t          |j        t
          j                   t          |j
        j        t
          j                   t          |j        j        t
          j                   d S )NrE   rK   rL   rM   rN   rO   r   r   )r-   r.   r   )r   r   r)   vstackro   r%   float32r.   todoktocsrindicesint32indptrtocsc)rA   r   ABr   rv   s         r1   test_vstackzTestConstructUtils.test_vstack  sw   GaUAa5M""GaUG1a&a&a&" # # 	Y%q!f--5577BBBY%q!fBJ???EZ	! 	! 	! 	Y%qwwyy!''))&<==EEGGRRRY%qwwyy!''))&<==EEGG	 	 	!17799aggii"8).bjB B BV\2:...V^)28444V]("(333Y%qwwyy!''))&<==EEGG	 	 	!17799aggii"8).bjB B BV\2:...V^)28444V]("(33333r3   c                 |   t          g dg dg dg          }|j                            t          j                  |_        |j                            t          j                  |_        t          j        ||g          j        j        t          j        k    sJ t          j	        ||g          j        j        t          j        k    sJ t          g dg dg dg          }|j                            t          j                  |_        |j                            t          j                  |_        t          j        ||g          j        j        t          j        k    sJ t          j	        ||g          j        j        t          j        k    sJ t          g dg dg dg          }t          d |j        D                       |_        t          j        ||g          j        d         j        t          j        k    sJ t          j	        ||g          j        d         j        t          j        k    sJ d S )Nr   r   c              3   T   K   | ]#}|                     t          j                  V  $d S r$   astyper%   int64r   cos     r1   	<genexpr>zITestConstructUtils.test_vstack_maintain64bit_idx_dtype.<locals>.<genexpr>  0      @@28,,@@@@@@r3   r   )r   r  r	  r%   r
  r   r)   r   r.   hstackr   r   tuplecoordsrA   Xs     r1   #test_vstack_maintain64bit_idx_dtypez6TestConstructUtils.test_vstack_maintain64bit_idx_dtype  s   yyy)))YYY7888??28,,I$$RX..	A''.4@@@@A''.4@@@@yyy)))YYY7888??28,,I$$RX..	A''.4@@@@A''.4@@@@yyy)))YYY788@@qx@@@@@A''.q1728CCCCA''.q1728CCCCCCr3   c                 H   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 d S NrE   rK   rL   rM   rN   rO   )r   r)   r   r   r   r   r   rA   r  r  s      r1   test_vstack_matrix_or_arrayz.TestConstructUtils.test_vstack_matrix_or_array  s    UAa5MUG)*IaLL)A,,+GHH'RRRRR)*IaLL*Q--+HII7SSSSS)*JqMM9Q<<+HII7SSSSS)*JqMM:a==+IJJHUUUUUUUr3   c                    t          g dg dg          }t          g d          }t          g d          }t          j        |t	          j        g d          g          j        dk    sJ t          j        |t	          j        dgg          g          j        dk    sJ t          j        ||g          j        dk    sJ t          j        ||g          j        dk    sJ t          j        ||g          j        d	k    sJ t          j        ||g          j        dk    sJ t          j        ||g          j        dk    sJ t          j        ||g          j        dk    sJ t          j        ||g          j        dk    sJ t          j	        t          d
          5  t          j        |t	          j        ddg          g           d d d            n# 1 swxY w Y   t          j	        t          d          5  t          j        |t	          j        ddg          g           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   )rE   rM   )rE   rO   )rK   rL   )rK   rO   zincompatible row dimensionsr<   zincompatible column dimensions)r   r   r)   r   r%   r   rG   r  r>   r   r?   )rA   r   arr1darr1dcoos       r1   test_vstack_1d_with_2dz)TestConstructUtils.test_vstack_1d_with_2d  s   III.//)))$$YYY''bhyyy&9&9 :;;AVKKKK1# 899?6IIII//5????//5???? c
++1V;;;;//5???? 1228FBBBBh006&@@@@ 1228FBBBB]:-JKKK 	6 	6c28QF#3#34555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:-MNNN 	6 	6c28QF#3#34555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s$   $+GG"G+H99H= H=c                     |ddgddgg          } |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          t          j        |	                                |	                                gt
          j        	          j        t
          j                   t          t          j        |
                                |
                                g                                          |           t          t          j        |
                                |
                                gt
          j        	          j        t
          j                   d S )
NrE   rK   rL   rM   rN   rO   rE   rK   rN   rL   rM   rO   r   )r   r   r)   r  ro   r%   r   r.   r   r  r   )rA   r   r  r  r   s        r1   test_hstackzTestConstructUtils.test_hstack'  s   GaUAa5M""GaS!I)))#))% & &Y%q!f--5577BBBY%q!fBJ???EZ	! 	! 	! 	Y%qwwyy!''))&<==EEGGRRR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	! 	! 	! 	! 	!r3   c                 J   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 d S r  )r   r)   r  r   r   r   r   r  s      r1   test_hstack_matrix_or_arrayz.TestConstructUtils.test_hstack_matrix_or_array?  s    UAa5MS!I)*IaLL)A,,+GHH'RRRRR)*IaLL*Q--+HII7SSSSS)*JqMM9Q<<+HII7SSSSS)*JqMM:a==+IJJHUUUUUUUr3   block_arrayc                 d   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                                          |           t	          dt
          j                  }t           ||                                |                                g||                                gg                                          |           t           ||                                |                                g|                                |                                gg                                          |           t          g dg dg dg          }t           ||d gd |gg                                          |           t           ||                                |j	                                        g||                                gg                                          |           t           ||                                |j	                                        g|                                |                                gg                                          |           t	          dt
          j                  }t          ddgddgddgg          }t           |d |g|d gg                                          |           t           ||j	                                        |                                g|                                |gg                                          |           t           ||j	                                        |                                g|                                |                                gg                                          |           t          j
        d          }t           |d d gg                                          |           t           |d |g|d gg                                          |           t          dgg          }t           |d |g|d gg                                          |           t          t                    5 }	 ||g|gg           d d d            n# 1 swxY w Y   |	                    d           t          t                    5 }	 ||                                g|                                gg           d d d            n# 1 swxY w Y   |	                    d           t          t                    5 }	 ||                                g|                                gg           d d d            n# 1 swxY w Y   |	                    d           t          t                    5 }	 |||gg           d d d            n# 1 swxY w Y   |	                    d           t          t                    5 }	 ||                                |                                gg           d d d            n# 1 swxY w Y   |	                    d           t          t                    5 }	 ||                                |                                gg           d d d            n# 1 swxY w Y   |	                    d           d S )NrE   rK   rL   rM   rN   rO   rP   r   r  r  )r   r   rP   r   r   )rE   rK   r   )rL   rM   r   rD   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   ro   r   r%   r   r   r  Temptyr   r?   r=   )
rA   r#  r  r  CDr   EZexcinfos
             r1   test_block_creationz&TestConstructUtils.test_block_creationG  s    1v1v&''sA3i  sef)))#))#))% & & 	[[1a&4)!455==??JJJfBH---[[17799aggii"8#$aggii."2 3 33:799	 	 	 	[[17799aggii"8#$7799aggii"8": ; ;;B799	 	 	 )))#))#))% & & 	[[1d)dAY!788@@BBHMMM[[17799aciikk":#$aggii."2 3 33:799	 	 	 	[[17799aciikk":#$7799aggii"8": ; ;;B799	 	 	 fBH---1a&a&a&" # # 	[[4)aY!788@@BBHMMM[[1399;;		":#$7799a."2 3 33:799	 	 	 	[[1399;;		":#$7799aggii"8": ; ;;B799	 	 	 8F##[[4,0088::HEEE[[4)aY!788@@BB	 	 	 1#<<[[4)aY!788@@BB	 	 	 :&& 	$'K!qc
###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$GHHH:&& 	4'K!''))qwwyyk2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4;<<<:&& 	4'K!''))qwwyyk2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4MNNN:&& 	"'K!Q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"GHHH:&& 	2'K!''))QWWYY/0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2MNNN:&& 	2'K!''))QWWYY/0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2;<<<<<sl   S33S7:S7'4U''U+.U+4WW"WX**X.1X.3ZZ!$Z!3\\\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 d S )	NrE   rK   rL   rM   rP   rN   r   r   )r)   r#  r
   r   r   )rA   blockFlGlFmGms         r1   test_block_return_typez)TestConstructUtils.test_block_return_type  s    %
 a&!QA3*BBBB%%$b$Z 8GGGQQQQQ%%$b$Z 8GGGQQQQQ%%"b
59997CCCCCCCr3   c                    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	           ||                                |                                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	           |||ggd
          t                    sJ d	S )z2This can be removed after sparse matrix is removedrE   rK   rL   rM   rP   rN   r   r   Nr   )r)   bmatr
   r   r   r   r   r  )rA   r5  r/  r0  r1  r2  FaGas           r1   test_bmat_return_typez(TestConstructUtils.test_bmat_return_type  s0   ~a&!QA3*BBBB2	"B$$Rz%888'BBBBB$$Rz%888(CCCCC$$r
RJ7FFFPPPPP$$r
RJ7FFFPPPPP$$r
RJ7FFFQQQQQ$$r
RJ7FFFQQQQQ $$Rz%888'BBBBB$$Rz%888'BBBBB$$Rz%888'BBBBB$$Rz%888(CCCCC$$Rz%888'BBBBB$$Rz%888(CCCCC $$RXXZZ 89%HHH'RRRRR$$RXXZZ 89%HHH(SSSSS$$RXXZZ 89%HHH'RRRRR$$RXXZZ 89%HHH(SSSSS $$Rz%888'BBBBB$$R 01%@@@'JJJJJ$$R 01%@@@(KKKKK$$Rz%888(CCCCCCCr3   z!Can't create large array for testc           	         t          d           d}t          t          j        ||ft                              }|                                }t          j        ||fd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   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        r1   test_concatenate_int32_overflowz2TestConstructUtils.test_concatenate_int32_overflow  s     	%   bgq!fD11122FFHH.1vA?DF F F 	rx 1 115566777QY_bh///QX^RX.....r3   c                 j   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          j        |||f          }t	          |                                |           |j        d         j        t          j	        k    sJ dS )z basic test for block_diag rE   rK   rL   rM   rN   rO   rP   )rE   rK   r   r   )rL   rM   r   r   )r   r   rN   r   )r   r   rO   r   )r   r   r   rP   r   N)
r   r   r)   
block_diagr   ro   r  r.   r%   r   )rA   r  r  r'  r   ABCs         r1   test_block_diag_basicz(TestConstructUtils.test_block_diag_basic  s    !uaUm$$sA3i  se,,,&,,&,,&,,&,,	( ) ) "Aq!9--S[[]]H---z!}"bh......r3   c                     t          g dg dg dg          }t          d |j        D                       |_        t          j        ||g          j        d         j        t          j        k    sJ d S )Nr   r   c              3   T   K   | ]#}|                     t          j                  V  $d S r$   r  r  s     r1   r  z?TestConstructUtils.test_block_diag_idx_dtype.<locals>.<genexpr>  r  r3   r   )r   r  r  r)   rE  r.   r%   r
  r  s     r1   test_block_diag_idx_dtypez,TestConstructUtils.test_block_diag_idx_dtype  su    yyy)))YYY788@@qx@@@@@#QF++215;rxGGGGGGr3   c                 >   t          t          j        ddgdg                                          g dg dg           t	          g d          }t	          ddg          }t          t          j        ||g                                          g dg d	g           d
S )z) block_diag with scalar and 1d arguments rK   rL   rM   )rK   rL   r   )r   r   rM   )rE   r   rL   r   )rE   r   rL   r   r   )r   r   r   r   rM   N)r   r)   rE  ro   r   r  s      r1   test_block_diag_scalar_1d_argsz1TestConstructUtils.test_block_diag_scalar_1d_args  s     	9/!A
;;CCEE%IIyyy1	3 	3 	3 gggqe9/A77??AA+OO___=	? 	? 	? 	? 	?r3   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 rE   r   N)r   r)   rE  ro   r   r   s    r1   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\\	# 	# 	# 	# 	#r3   c                    t          g dgd          }t          ddggd          }t          t          j        ||g                                          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                                          t          d	dgd
dgddgddgddgg                     dS )z block_diag with sparse arrays rE   rK   rL   )rE   rL   rF   rM   rN   r   )rE   rK   rL   r   r   )r   r   r   rM   rN   rE   rK   rL   )rL   rE   r   r   N)r   r   r)   rE  ro   r   r  s      r1   test_block_diag_sparse_arraysz0TestConstructUtils.test_block_diag_sparse_arrays  s     yyyk0001vhf---Y)1a&1199;;OOO___=>>	@ 	@ 	@ sQC!oV444sQCj///Y)1a&1199;;QFQFQFQFQFCDD	F 	F 	F 	F 	Fr3   c                    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 d S )NrP  )rK   rL   rM   )r   r   r   r)   rE  r   r   r  s      r1   test_block_diag_return_typez.TestConstructUtils.test_block_diag_return_type  s    )))%%z999+'>'>1).1v66@@@@@).1v66@@@@@).1v66@@@@@).1v66AAAAAAAr3   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        |           &t/          t0          fd           t/          t0          fd           d S )NrN   rS   皙?)r,   r.   )rN   rS     )r,   r/   )r   rU  r   rz   r,   )r   r   r   r    r   c                        ddd          S )NrN   rS   g?r   fs   r1   <lambda>z9TestConstructUtils.test_random_sampling.<locals>.<lambda>0  s    aa2smm r3   c                        ddd          S )NrN   rS   gr   rY  s   r1   r[  z9TestConstructUtils.test_random_sampling.<locals>.<lambda>1  s    aa2tnn r3   )sprandr2   r%   r   float64
longdoubler   r
  	complex64
complex128r   r.   rG   nnzr&   r'   r   datarowcolr   prodr-   r   r?   )rA   tr   x1x2r,   r   rZ  s          @r1   test_random_samplingz'TestConstructUtils.test_random_sampling  s   ! 	> 	>Aj"*bmh",G ' 'AaS222QWa(((QWg...QUA&&&&1b#4000B2:...1b#29+@+@+F+FGGGBrw000rvrv...rvrv.../ E EAaW---QUC"'!'2B2B(B$C$CDDDD3 , ,AaC(((QXs++++*&;&;&;&;<<<*&<&<&<&<====5	> 	>r3   r/   rV  c                 &   t          dddt          j        |          }t          t          j        t          j        d|j                                       t          t          j        t          j        |j        d                               d S NrS      r   r,   r.   r/   r   rE   )r]  r%   r^  r   r@  
less_equalrc  rA   r/   r   s      r1   	test_randzTestConstructUtils.test_rand3  sp     2r3bjcBBBr}Q//00111r}QVQ//0011111r3   c                 F   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                                       d S rl  )r2   r%   r^  r   anylessrc  r7   rp  s      r1   
test_randnzTestConstructUtils.test_randn:  s    
 RS
DDDrwqvq))**+++rwq!&))**+++2r3bjcJJJrwqvq))**+++rwq!&))**+++++r3   c                     t          j        ddd           t          j        dd           t          j        dd           t          j        dd           d S )NrS   rt   r   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   )r)   r&   r6   r   s    r1   test_random_accept_str_dtypez/TestConstructUtils.test_random_accept_str_dtypeF  se     	Rs++++xs3333|3777733??????r3   c                    t          j        ddt          d          }|j        dk    sJ t          j        ddt          d          }|j        dk    sJ t          j        ddt          d          }|j        dk    sJ d S )N)r   rM   g333333?r   )r,   r.   random_staterx  rn  ry  )r)   r6   r   rG   )rA   r   s     r1   'test_random_array_maintains_array_shapez:TestConstructUtils.test_random_array_maintains_array_shapeN  s    $VSRSTTTyF""""$\3cqQQQyL(((($%93c)*, , ,y0000000r3   c                 r    t          j        d          }|j        d         j        t          j        k    sJ d S )Nrw  r   )r)   r6   r  r.   r%   r   )rA   r  s     r1   test_random_array_idx_dtypez.TestConstructUtils.test_random_array_idx_dtypeZ  s4    "8,,x{ BH,,,,,,r3   c                    t          j        ddd          }t          |                                d           t          j        dd          }t          |                                d           t          |t                    sJ d}t          j        |d          }t          |                                d           t          j        d	d
          }t          |                                d           t          |t                    sJ d}t          j        |d          }t          |                                d           d S )NrS   gx&1?rW  rV   rw  )        r  g(Rs?<i  )rS   rS   rS   rS   gk) 3?i  )r  r  r  gAy5:   )r)   r&   r   count_nonzeror6   r   r   )rA   sparse_matrixsparse_arrayrG   s       r1   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222666 -hGGG\//11"555,00000 -eZHHH\//11$777 !-.>PPP\//11$777,00000% -eZHHH\//11#66666r3   )J__name__
__module____qualname__r>   markparametrizer   r   r   r   r   r   r   rB   r   r
   r   r   r   r   rH   rw   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"  r5  r#  r,  r3  r8  xslowxfail_on_32bitrC  rG  rJ  rL  rN  rQ  rS  rj  r%   r&   r'   rq  ru  rz  r}  r  r  r   r3   r1   r9   r9   )   sQ       [U9i9i%   	  [UJ
J
%  & &	 &6L 6L 6LpL6 L6 L6\? ? ?6 6 6I I I&I I I64 4 4
F F F& & & [Z)*<i>Q)RSSA A TSA [UY]I4G$HII! ! JI!F [UY]I4G$HIIA A JIA9 9 9 [7a&1a&	4'a&1a&	4'q6Aq6
	T5):  
Q Q 
Q;, ;, ;,z6 6 6"  - - -01 1 1 [YY(?@@4 4 A@4:D D D&V V V6 6 6. [YY(?@@! ! A@!.V V V []Y^Y=R,STTK= K= UTK=Z
D 
D 
D"D "D "DH [[ CDD/ / ED // / / H H H
	? 	? 	?
# 
# 
#F F FB B B> > >< [UT41F1Ft1L1L$MNN2 2 ON2 [UT41F1Ft1L1L$MNN	, 	, ON	,@ @ @
1 
1 
1- - -7 7 7 7 7r3   r9   c                     t          j        dd          } t          t          j        | d                                          t          j        |                      t          t          j        | dd                                          t          j        | d                     t          t          j        | ddd	                                          t          j        | d          dd
dd
f                    t          j        t          d          5  t          j
        t          j        dd          dd           ddd           dS # 1 swxY w Y   dS )z7Tests of diags_array that do not rely on diags wrapper.rz   r~   Nr   rK   r   r.   r   r   r   rM   z.*out of boundsr<   rN   rF   )r%   r   r   r)   r   ro   r   r>   r   r?   r   )r   s    r1   test_diags_arrayr  w  s   9S#Dy,T>>>FFHH"'RV--XXXdAT:::BBDDbgdVWFXFXFX   dAV4HHHPPRR
2A2rr6"   
z):	;	;	; > >	#s++Qf====> > > > > > > > > > > > > > > > > >s   +EEEfuncc                     dgddgdgg}g d} | ||d           }t          j        ddgddgg          }t          |                                |d           d S )	NrL   rE   rK   rM   rf   r  Tstrict)r%   r   r   ro   r  rt   r   r   r   s        r1   test_diags_intr    sv    
q!fqcAjjG $q'
.
.
.Cx!Q!Q())Hs{{}}ht<<<<<<r3   c                    dgddgdgg}g d}t          j        t          d          5   | ||          }d d d            n# 1 swxY w Y   t          j        d	d
gddgg          }t          |                                |d           d S )NrL   rE   rK   rM   rf   zoutput has been cast tor<   r   rz   r}   r|   r{   Tr  )r>   warnsFutureWarningr%   r   r   ro   r  s        r1   test_diags_int_to_float64r    s    
q!fqcAjjG
 
m+D	E	E	E ' 'd1g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'x#sc3Z011Hs{{}}ht<<<<<<s   AA
Ac                     t          j        g d          } t          |                               dd          }t	          j        |dd          }t          |d                                         |d d df                                                    |                    dddd          }t	          j        |dd          }t          |j        d           d S )	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-?rO   r   rE   rY   rL   rK   )rK   rK   rL   rL   )	r%   r   r   reshaper)   swapaxesr   ro   rG   )r   sX	sXswappedsXX
sXXswappeds        r1   test_swapaxesr    s    
 < < < 	= 	=A 
1		a	#	#B"2q!,,I2&&(("QQQU)*;*;*=*=>>>
**Q1a
 
 C#CA..J!<00000r3   c                  d   ddgddggddgddggg} t          j        ddgddggddgddggg          }t          |          }t          j        |dd          }t          |                                |            t          |                                t          j        |dd                     d S )Nr   rK   rO   rE   rN   rP   )r%   r   r   r)   r  r   ro   tgtr   r  outs       r1   test_3d_swapaxesr    s    FQFq!fq!f-
.C
Aq6Aq6"aVaV$4566A!A

Q1
%
%C$$$Aq! 4 455555r3   r-   c                 \   t          j        g dg dg          }t          |                              |           }t	          j        |dd          }|j        dk    sJ |j        dk    sJ t          |	                                t          j        |dd                     |j
        rJ d S )NrK   r   rE   rL   rN   r   rE   r   r   rL   rK   )r%   r   r   asformatr)   r  r-   rG   r   ro   has_canonical_formatr-   r  SAr  s       r1   test_sparse_format_swapaxesr    s    
)))YYY'((A	1		v	&	&B

RA
&
&C:9Aq! 4 4555''''''r3   c            
         t          ddgddgg          } t          t          d          5  t          j        | dd           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | dd           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | dd           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | dd           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | dd	           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d	d           d d d            n# 1 swxY w Y   t          t          j        | dd                                          |                                            t          d          D ]g}t          t          j        | |d	|z
                                            t          j        | |dz
  d
|z
                                                       hd S )NrK   r   rL   rN   Invalid axisr<   rh   333333?rE   rY   )r   r   r?   r)   r  r   ro   r   r  is     r1   test_axis_swapaxesr    s   Aq6Aq6"##A	z	8	8	8 % %1b!$$$% % % % % % % % % % % % % % %	z	8	8	8 % %1a$$$% % % % % % % % % % % % % % %	z	8	8	8 $ $1a###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z	8	8	8 $ $1a###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z	8	8	8 & &1c1%%%& & & & & & & & & & & & & & &	z	8	8	8 & &1a%%%& & & & & & & & & & & & & & &#Aq!,,4466		DDD1XX 
 
q!QU++3355q!a%a0088::	
 	
 	
 	

 
sk   AAA0BBB4CCC8DD"D<EE#&E# F##F'*F'c                     t          j        g d          } |                     dd          }t          |                               dd          }t	          j        |dd          }|                    d          }t          |                                |                                           t          |d                                         |d d df                                                    |                    dd	d	d          }|                    dd	d	d          }t	          j        |d
d          }t          |j	        d           |                    d
          }t          |j	        d           t          |                                |                                           t          |                                t          j        |d
                     d S )Nr  rO   rE   r   Taxesr>  r  rY   rL   rK   )r   rK   rE   rL   )rL   rK   rK   rL   )
r%   r   r  r   r)   permute_dims	transposer   ro   rG   )	r   npxr  
sXpermutedsXtransposednpxxr  sXXpermutedsXXtransposeds	            r1   test_permute_dimsr    s   
 < < < 	= 	=A ))Aq//C	1		a	#	#B'dCCCJ<<V<,,L##%%|';';'='=>>>B''))2aaae9+<+<+>+>???;;q!Q""D
**Q1a
 
 C(<dKKKK"L111MM|M44M$l333$$&&(=(=(?(?@@@$$&&T(M(M(MNNNNNr3   c                     dgdgdgdggdgdgdgdggg} t          j        ddgddgddgddggg          }t          |          }t          j        |d          }t          |j        d	           t          |                                |            t          |                                t          j        |d                     d S )
Nr   rK   rO   rE   rN   rP   )rK   rE   r   r  )rK   rM   rE   )	r%   r   r   r)   r  r   rG   ro   r  r  s       r1   test_3d_permute_dimsr    s    C!qcA31#sQC!!5
6C
Aq6Aq6Aq6Aq62344A!A

 
3
3
3CI&&&$$$QY ? ? ?@@@@@r3   c                      t          g dg dg          } t          j        | d          j        du sJ t          j        | ddg          j        du sJ t          j        | ddg          j        du sJ d S )	Nr  r  r   rE   r  Tr   rE   F)r   r)   r  r  r  s    r1   "test_canonical_format_permute_dimsr    s    999iii())A!!&111F$NNNN!!1a&111F$NNNN!!1a&111F%OOOOOOr3   c                  B   t          g dg dg          } t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t
          d          5  t          j        | d	d
h           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t
          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          j        | dd                                          |                     dd                                                     t          t          j        | d	d
gd                                          |                     d	d
gd                                                     t          t          j        | d d                                          |                     dd                                                     t          t          j        | dd                                          |                                            d S )Nr  r  zIncorrect number of axesr<   r  zduplicate value in axisr   zaxis must be an integer/tuplerE   r   zaxis out of range)rc   r   )r   rc   )rK   r   )r   rK   zaxis must be an integer)r  r   r  Tr  r  )	r   r   r?   r)   r  r   r   ro   r  r  s    r1   test_axis_permute_dimsr    sg   999iii())A	z)C	D	D	D 2 2qy11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2	z)B	C	C	C / /qv..../ / / / / / / / / / / / / / /	y(G	H	H	H / /q1v..../ / / / / / / / / / / / / / / 
z)<	=	=	= 0 0qw////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	z)<	=	=	= 0 0qw////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	z)<	=	=	= / /qv..../ / / / / / / / / / / / / / /	z)<	=	=	= / /qv..../ / / / / / / / / / / / / / /	y(A	B	B	B 1 1qx00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 qvD999AACC	d++3355  
 q1vD999AACC	!Qd++3355   qt$777??AA	d++3355   qvD999AACCQYY[[    s   AAA0BBB4CC C:DD!$D!>E!!E%(E%F%%F),F)G))G-0G-
H--H14H1c                 \   t          j        g dg dg          }t          |                              |           }t	          j        |d          }|j        dk    sJ |j        dk    sJ t          |	                                t          j
        |d                     |j        rJ d S )Nr  r  r  r  r   r  )r%   r   r   r  r)   r  r-   rG   r   ro   r  r  r  s       r1   test_sparse_format_permute_dimsr  8  s    
)))YYY'((A	1		v	&	&B

 &
1
1
1C:9QV < < <===''''''r3   c                     t          j        g d          } |                     dd          }t          |          }t          j        |d          }t          j        |d          }t          |d                                         |dt           j        d d f                                                    t          |                                |           |                    dddd          }|                    dddd          }t          j        |d          }t          j        |d          }t          |j	        d           t          |                                |           t          j        |d	          }t          j        |d	          }t          |j	        d
           t          |                                |           d S )Nr  rO   rE   r:  rY   rL   rK   )rL   rK   rE   rK   rL   r   )rL   rK   rK   rE   rL   )
r%   r   r  r   expand_dimsr)   r   ro   newaxisrG   )	r   r  r  npx_expanded
sXexpandedr  r  npxx_expandedsXXexpandeds	            r1   test_expand_dimsr  E  s   
 < < < 	= 	=A ))Aq//C	3B>#A...L&r222JB''))2b"*aaa.?+@+H+H+J+JKKK##%%|444;;q!Q""D
**Q1a
 
 CN4a000M'!444K"O444$$&&666N4b111M'"555K"O444$$&&66666r3   c                      ddgddgggddgddgggg} t          ddgddggddgddggg          }t          j        |d          }t          |                                |            d S )Nr   rK   rO   rE   rN   rP   r  )r   r)   r  r   ro   )r  r  r  s      r1   test_3d_expand_dimsr  c  s    VaV!Q!Q 01
2CQFQF#q!fq!f%5677A


*
*
*C$$$$$r3   c                    t          j        ddgddgg          }t          |                              |           }t	          j        |d          }|j        dk    sJ |j        dk    sJ t          |	                                t          j        |d                     |
                                j        |j        k    sJ d S )	NrK   r   rL   rN   rE   r  r   )rK   rE   rK   )r%   r   r   r  r)   r  r-   rG   r   ro   tocoor  r  s       r1   test_sparse_format_expand_dimsr  j  s    
1a&1a&!""A	1		v	&	&B


+
+
+C:9	!!!!qq 9 9 9:::88::*c.FFFFFFFr3   c            	         t          ddgddgg          } t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d           d d d            n# 1 swxY w Y   t          t          d          5  t          j        | d	           d d d            n# 1 swxY w Y   t          d          D ]a}t          t          j        | |                                          t          j        | |dz
                                                       bd S )
NrK   r   rL   rN   r  r<   rh   r  r  )r   r   r?   r)   r  r   r   ro   r  s     r1   test_axis_expand_dimsr  v  s   Aq6Aq6"##A	z	8	8	8 * *ab))))* * * * * * * * * * * * * * *	z	8	8	8 ) )aa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z	8	8	8 + +ac****+ + + + + + + + + + + + + + +1XX 
 
!!!,,,4466!!!a%00088::	
 	
 	
 	

 
s5   AAA0BBB4CCC)r"   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   r2   r7   r9   r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r3   r1   <module>r     s~   / /          < < < < < < < < < < < <  * * * * * * 3 3 3 3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2<<<
I I I IF F F FK7 K7 K7 K7 K7 K7 K7 K7\> > >( )"7!IJJ= = KJ= )"7!IJJ
= 
= KJ
=1 1 1"6 6 6 >22( ( 32(
 
 
,O O O6	A 	A 	AP P P$ $ $N >22	( 	( 32	(7 7 7<% % % >22G G 32G
 
 
 
 
r3   