
    bi                        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	jP                  jS                  dejT                  ejV                  g      d        Z,e	jP                  jS                  dejT                  ejV                  g      d        Z-d Z.d Z/e	jP                  jS                  de#      d        Z0d Z1d Z2d Z3d Z4d Z5e	jP                  jS                  de#      d        Z6d Z7d Z8e	jP                  jS                  de#      d        Z9d 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)
csr_matrix
coo_matrix	csr_array	coo_array	csc_array	bsr_array	dia_array	dok_array	lil_array
csc_matrix
bsr_matrix
dia_matrix
lil_matrixsparrayspmatrix
_construct)rand)csrcsccoobsrdialildokc           	          t         j                  j                  |      }|j                  }t	        j                  | ||||||      S N)nprandomdefault_rngstandard_normal	construct)mndensityformatdtyperngdata_rvss          \/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/sparse/tests/test_construct.py_sprandnr1      s>    
))


$C""HAq'65#xHH    c                     t         j                  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.   r4   s          r0   _sprandn_arrayr6   !   sH    
))


$C&&L!!1a&'&PU&)F Fr2   c            
          e Zd Zej                  j                  deeee	e
eeg      d        Zej                  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                  j                  dej>                  ej@                  g      d        Z!ej                  j                  dejD                  ej@                  g      d        Z#ej                  j                  dejD                  ej@                  g      d        Z$d Z%ej                  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                  j                  deeg      d         Z,d! Z-d" Z.d# Z/ej                  j                  deeg      d$        Z0d% Z1ej                  j                  d&ejd                  ejf                  f      d'        Z4d( Z5d) Z6ej                  jn                  ej                  jq                  d*      d+               Z9d, Z:d- Z;d. Z<d/ Z=d0 Z>d1 Z?d2 Z@ej                  j                  d3dd4eAj                  j                  d4      g      d5        ZDej                  j                  d3dd4eAj                  j                  d4      g      d6        ZEd7 ZFd8 ZGd9 ZHd: ZIy);TestConstructUtilsclsc                 t    t        j                  t        d      5   |d       d d d        y # 1 sw Y   y xY w)NzEscipy sparse array classes do not support instantiation from a scalarmatchr   )pytestr   
ValueErrorselfr9   s     r0    test_singleton_array_constructorz3TestConstructUtils.test_singleton_array_constructor+   s6    
 ]].
 	 F	 	 	s   	.7c                 2     |d      j                   dk(  sJ y)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      rD   Nshaper?   s     r0   !test_singleton_matrix_constructorz4TestConstructUtils.test_singleton_matrix_constructor9   s     1v||v%%%r2   c                 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rD               )         	   
   )               r   rD   rJ   rK   rL   rD   r   r   r   r   rJ   r   r   r   r   rK   r   )r   r   r   rL   rM   r   r   rK   r   r   )r   r   r   rL   r   )r   r   r   r   rM   )rD   r   rP   r   rJ   r   r   r   rK   rN   r   r   r   rD   rO   r   r   r   rJ   rP   r   rN   )r   r   rK   r   r   r   )r   r   r   rL   r   r   )r   r   r   r   rM   r   )rN   r   r   r   r   r   r   rO   r   r   r   r   r   r   rP   r   r   r   rX   r   rD   )rN   rT   r   r   r   r   )rD   rO   rU   r   r   r   )r   rJ   rP   rV   r   r   )r   r   rK   rQ   rW   r   )r   r   r   rL   rR   r   rJ   rX   )r   r   rP   r   r   )rS   r   r   rQ   r   )r   rT   r   r   rR   r   r   rU   r   r   rD   r   r   rV   r   r   rJ   r   r   rW   )rX   rD   rJ   )r   rO   rU   r   r   )rD   r   rP   rV   r   )r   rJ   r   rQ   rW   )r   r   rK   r   rR   )r   appendlenr   r(   spdiagstoarray)
r@   diags1diags2diags3casesdor)   r*   results
             r0   test_spdiagszTestConstructUtils.test_spdiagsG   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r2   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 dPg dQgf       |D ]  \  }}}}|dR|dR|dR|}	t        t	        j
                  |||S      j                         ||	T       |d   |d   k(  sSt        |d   dU      sct        |d         t        |      k  s~t        t	        j
                  ||V      j                         ||	T        y )WN      ?       @      @      @      @      @g      @g       @g      "@g      $@g      &@g      (@g      *@g      ,@g      .@rD   r   rC   rJ   rD   rD   rJ   rJ   rJ   rJ   rX   rK   )rK   rL   rY   rZ   r[   )r   rD   r   r   )r   r   rJ   r   )r   r   r   rK   rK   rM   )r   r   r   r   r   )rD   r   r   r   r   )r   rJ   r   r   r   r\   )r   rD   r   r   r   )r   r   rJ   r   r   )r   r   r   rK   r   )r   r   rD   r   r   )r   r   r   rJ   r   )r   r   r   r   rK   )r   r   r   rD   r   )r   r   r   r   rJ   rL   )r   r   r   r   rD   rg   )rM   rK   r   r   r   rD   r   r   rb   r]   r^   r   rD   r   )r   r   rJ   r   r   rD   rK   rK   )rD   r   rN   r_   r`   ra   )rN   rN   )r   r   rD   r   r   r   )r   r   r   rJ   r   r   )r   r   r   r   rK   r   )rN   r   r   r   r   rL   rc   rd   re   rM   rM   )rN   rS   r   r   r   )rD   rO   rT   r   r   )r   rJ   rP   rU   r   )r   r   rK   rQ   rV   )r   r   r   rL   rR   rf   rN   rM   )r   r   rN   r   r   )rS   r   r   rO   r   )r   rT   r   r   rP   rh   ri   rj   )ry   rz   r{   )r|   r}   r   )rL   rJ   r   )r   rM   rK   )ry   g       ry   )rD   r   rX   )r   rD   r   )rD   r   rD   )r   rD   r    offsetsrF   )err_msg__len__r   )
r   rk   r$   r   r(   diagsrn   hasattrrl   max)
r@   abcrr   rs   rt   rF   ru   r   s
             r0   
test_diagszTestConstructUtils.test_diags   s0   +,,-01aeQ!./q!ugsFaSE23q!ugsFaS!I67q!ugsFaUG45q!ugsFaUG45q!ugsFaUAa5M:;q!ugrdFaUAa5M:;q!ugsFYy,KLMq!ugsFYy,KLMq!ugtVk+k-RSTq!ugtVk+k-RSTq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugsF[[,QRSq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugtVggggg-VWXq!ugsFWWWWW,UVWq!ugsFWWWWW,UVWq!ugsFWWWWW,UVWq!uQrUmaUFWWW4MNOq!uQrUmbVVi	)5TUVq!uQrUmaVVm5B5B5B5B5B6D E 	F 	q!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HHo78rF	9-	
 	 	nh9C9C9E F 	G $) 
	6Aq%Qqe1UIQvj9GAUCKKM2 aE!H$AaD),!IU+Y__Q:BBD#W6
	6r2   c                     t        g d      }t        t        j                  |      j	                         t        j                  |             y )Nrx   )r   r   r(   r   rn   r$   diagr@   r   s     r0   test_diags_defaultz%TestConstructUtils.test_diags_default   s1    +,Y__Q'//12771:>r2   c                 d    t        g dg dg      }t        t        t        j                  |       y )NrI   )rJ   rK   rL   rM   rN   )r   assert_raisesr>   r(   r   r   s     r0   test_diags_default_badz)TestConstructUtils.test_diags_default_bad   s!    ?O45j)//15r2   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 )Nrx   r~   r   r   rC   rL   rK   re   r   rJ   rf   r   ry   rL   rL   r   r   )r   rk   r   r>   r(   r   	TypeError)r@   r   r   r   rr   rs   rt   rF   s           r0   test_diags_badz!TestConstructUtils.test_diags_bad   s5   +,,-01q!ugq&)*q!uQq!uox89q!uQq!uoy&9:q!uQq!uoy$78b)T*+sebT6*+qc1d^$  	RKAq%*iooq!5Q	R 	iD6(QCHr2   c                    t         j                  j                  d      }dD ]J  }d|dz  z   |j                  dd      z   }t        j                  | dz   |dz
        }|j                  |       |d | }|D cg c]  }|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                         |
       M y c c}w c c}	}w )Ni  )rD   rJ   rK   rL   rM   rR   rD   rJ   r   rR   r   )r$   r%   RandomStaterandintarangeshuffler   absr(   r   sumzipr   r   rn   rl   )r@   r.   n_diagsr*   r   q	diagonalsmatxj	dense_mats              r0   test_diags_vs_diagz%TestConstructUtils.test_diags_vs_diag   s>    ii##D)* 	IGGQJQ!33Aii1ac*GKK hw'G7>?!!c!f*-?I?//)W=Cs9g7NOtq!RWWQ]OPI*3;;=)D7|q ooilGAJGGGIaL'!*=	.s{{}iH#	I @ Ps   8$E1	 E6c                     t        j                  dgdgdt              }t        |j                  t               t        |j                         ddgddgg       y )Ng@r   r   r   rF   r-   rJ   )r(   r   intr   r-   rn   r@   r   s     r0   test_diags_dtypez#TestConstructUtils.test_diags_dtype  sE    OOSEA3fCHQWWc"QYY[Aq6Aq6"23r2   c                     g d}t        dd      D ]V  }t        t        j                  ||      j	                         t        j                  |g|g      j	                                X y )N)        ry   rz   r{   r|   r   rN   r   )ranger   r(   r   rn   )r@   rs   ks      r0   test_diags_one_diagonalz*TestConstructUtils.test_diags_one_diagonal  sX    %r1 	FAA6>>@"!qc:BBDF	Fr2   c                 Z    t        j                  g       }t        |j                  d       y )Nr   r   )r(   r   r   rF   r   s     r0   test_diags_emptyz#TestConstructUtils.test_diags_empty  s    OOBQWWf%r2   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 NrD   rJ   r   rK   int8r   )r-   r,   r,   r   r   r   r   rn   r-   r$   r,   sparse_formats)r@   r   Ifmts       r0   test_identityz TestConstructUtils.test_identity  s    Xa[((*aSE2Xa[((*aUAa5M:QfU3QWWbhhv./QXXu%! 	AC3'A3'www&?@	Ar2   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)NrD   rJ   rK   r   r   r   r   int16r-   r   r   rN   zOffset.*out of boundsr;   r   )
r   rn   r-   r$   r   r   r=   r   r>   r   )r@   r   r)   r*   r   s        r0   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   )r@   r   r   r   s       r0   test_eye_onezTestConstructUtils.test_eye_oneD  s    SV^^%u-SV^^%1qe}5.QWWbhhv./QXXu%! 	ACAc"A3'www&?@	Ar2   c                     t        t        j                  d      t              sJ t        t        j                  d      t              rJ y )NrK   )
isinstancer(   	eye_arrayr   r   r@   s    r0   test_eye_array_vs_matrixz+TestConstructUtils.test_eye_array_vs_matrixR  s9    )--a0':::immA.8888r2   zarr,kw_format,out_formatr   rD   Nr   r   c                    t        |      }t        j                  |||      j                  |k(  sJ t        j                  |||      j                  |k(  sJ t        j                  |||      j                  |k(  sJ y )Nr   )r   r(   kronr,   )r@   arr	kw_format
out_formatsparrs        r0   test_kron_output_formatz*TestConstructUtils.test_kron_output_formatV  sp     #~~eU9=DD
RRR~~eS;BBjPPP~~c5;BBjPPPr2   c           	      R   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    |j                  t        g d             |j                  t        g dg dgg             |j                  t        ddggddggddggddggg             |D ]g  }t        |      }|D ]U  }t        |      }t        j                  ||      }t        j                  ||d      }t        |j                         |       W i t        g dg dg      }t        g dg dg dg      }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   rX   rL   rR   rD   rJ   rK   rM   r   rJ   irP   r   rV   rN   )rM   rL   rL   r   )rN   r   rP   )r   rD   r   rJ   r   rM   rP   )      ?g      ?r   g      
@)r   g      @r   r   r   )r   rD   rJ   r   r   )rk   r   r   r$   r   r   r(   r   r,   r   rn   r   r   r   r
   r   )	r@   rr   r   car   cbexpectedr   ru   s	            r0   	test_kronzTestConstructUtils.test_krona  sw   UQC5\"URD6]#UQC5\"URD6]#UQC!:&'UQF8_%UQFQF+,-UQFQF+,-UJ
345UQFQFQF345UIy)<=>U1234U1>BCD  		7A1B 7q\771a=)!A. 7C&^^B3?F 4&v~~'7B%fg666	77		7 	U9%&UY	2345UaVH1vh!QAq6(CDE 	?A1B ?q\771a="Bu="6>>#3X>	?	? (.9:9i34q\q\771a=! 	/C^^B37F,v~~/:fg...		/ 
1z!}SIV]]C(6>>+X6&(+++r2   c                    t        j                  t        d      5  t        j                  dgdggddggg       d d d        t        j                  t        d      5  t        j                  ddgggdgdgg       d d d        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       y # 1 sw Y   xY w# 1 sw Y   xY w)Nzexpected 2D array or matrixr;   r   rD   r   )r=   r   r   r(   r   r   r   s    r0   test_kron_ndim_exceptionsz,TestConstructUtils.test_kron_ndim_exceptions  s>   ]]9,IJ 	3NNQC!:!Qz2	3]]9,IJ 	3NNaVH:aSz2	3 	yAq6(,aSzl;!Qz9sQCj\#:; 	aSz9-1vaSz*aSz9Y#78y!Q(A3*5	3 	3	3 	3s   EE%E"%E.c                     d}t        j                  dgd|f|dz
  d       }t        j                  dg|dfd|z
  d       }t        j                  ||       t        j                  ||       y )Ni   rD   )rF   r   r-   )r(   diags_arrayr   )r@   r*   r   r   s       r0   test_kron_largez"TestConstructUtils.test_kron_large  sc    !!1#aVQqSM!!1#aVQqSMq!q!r2   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   rX   rL   rR   rD   rJ   rK   rM   r   r   )r   rK   r   r   )r   rM   rX   )rL   r   rP   )rk   r   r(   kronsumr   rn   r$   r   r   rF   r   r
   )r@   rr   r   r   ru   r   s         r0   test_kronsumzTestConstructUtils.test_kronsum  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,r2   c                    t        j                  t        d      5  t        j                  dgdggt        ddg             d d d        t        j                  t        d      5  t        j                  t        ddg      dgdgg       d d d        t        j                  ddgddggdg       y # 1 sw Y   pxY w# 1 sw Y   3xY w)Nzrequires 2D inputr;   r   rD   rJ   )r=   r   r>   r(   r   r   r   s    r0   test_kronsum_ndim_exceptionsz/TestConstructUtils.test_kronsum_ndim_exceptions  s    ]]:-@A 	=sQCj)QF*;<	=]]:-@A 	=iA/1#s<	= 	Aq6Aq6*QC0	= 	=	= 	=s   &B1%&B=1B:=C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 )NrD   rJ   rK   rL   rM   rN   r   r   )r,   r-   r   )r   r   r(   vstackrn   r$   float32r-   todoktocsrindicesint32indptrtocsc)r@   r   ABr   ru   s         r0   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]](("((3r2   c                 "   t        g dg dg dg      }|j                  j                  t        j                        |_        |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                  j                  t        j                        |_        |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 y )Nr   r   c              3   Z   K   | ]#  }|j                  t        j                         % y wr#   astyper$   int64.0cos     r0   	<genexpr>zITestConstructUtils.test_vstack_maintain64bit_idx_dtype.<locals>.<genexpr>       @288,@   )+r   )r   r   r  r$   r  r   r(   r   r-   hstackr   r   tuplecoordsr@   Xs     r0   #test_vstack_maintain64bit_idx_dtypez6TestConstructUtils.test_vstack_maintain64bit_idx_dtype  s   y)Y7888??288,II$$RXX.	A'..44@@@A'..44@@@y)Y7888??288,II$$RXX.	A'..44@@@A'..44@@@y)Y78@qxx@@A'..q177288CCCA'..q177288CCCr2   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 NrD   rJ   rK   rL   rM   rN   )r   r(   r   r   r   r   r   r@   r   r   s      r0   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Ur2   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        t        j                  t        d      5  t        j                  |t	        j
                  ddg      g       d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   r   r   r   r   )rD   rL   )rD   rN   )rJ   rK   )rJ   rN   zincompatible row dimensionsr;   zincompatible column dimensions)r   r   r(   r   r$   r   rF   r  r=   r   r>   )r@   r   arr1darr1dcoos       r0   test_vstack_1d_with_2dz)TestConstructUtils.test_vstack_1d_with_2d  s   I./)$Y'bhhy&9 :;AAVKKK1# 89??6III/55???/55??? c
+11V;;;/55??? 1288FBBBh066&@@@ 1288FBBB]]:-JK 	6c288QF#345	6]]:-MN 	6c288QF#345	6 	6	6 	6	6 	6s   -I-III"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 )
NrD   rJ   rK   rL   rM   rN   rD   rJ   rM   rK   rL   rN   r   )r   r   r(   r  rn   r$   r   r-   r   r   r   )r@   r   r   r   r   s        r0   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	!r2   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      r0   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Ur2   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)NrD   rJ   rK   rL   rM   rN   rO   r   r  r  )r   r   rO   r   r   )rD   rJ   r   )rK   rL   r   rC   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   rn   r   r$   r   r   r   Temptyr   r>   r<   )
r@   r  r   r   CDr   EZexcinfos
             r0   test_block_creationz&TestConstructUtils.test_block_creationG  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 )	NrD   rJ   rK   rL   rO   rM   r   r   )r(   r  r
   r   r   )r@   blockFlGlFmGms         r0   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Cr2   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 removedrD   rJ   rK   rL   rO   rM   r   r   Nr   )r(   bmatr
   r   r   r   r   r   )r@   r1  r+  r,  r-  r.  FaGas           r0   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Cr2   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   r$   onesboolcopyr(   _compressed_sparse_stackr   allequaldiffr   r   r   r-   r  )r@   r*   r   r   r#  s        r0   test_concatenate_int32_overflowz2TestConstructUtils.test_concatenate_int32_overflow  s     	% bggq!fD12FFH..1vA?DF 	rxx 11567QYY__bhh/QXX^^RXX.r2   c                 N   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                         |       |j                  d   j                  t        j                  k(  sJ y)z basic test for block_diag rD   rJ   rK   rL   rM   rN   rO   )rD   rJ   r   r   )rK   rL   r   r   )r   r   rM   r   )r   r   rN   r   )r   r   r   rO   r   N)
r   r   r(   
block_diagr   rn   r  r-   r$   r   )r@   r   r   r#  r   ABCs         r0   test_block_diag_basicz(TestConstructUtils.test_block_diag_basic  s    !uaUm$sA3i se,&&&&	( ) ""Aq!9-S[[]H-zz!}""bhh...r2   c                     t        g dg dg dg      }t        d |j                  D              |_        t        j                  ||g      j                  d   j
                  t        j                  k(  sJ y )Nr   r   c              3   Z   K   | ]#  }|j                  t        j                         % y wr#   r  r  s     r0   r  z?TestConstructUtils.test_block_diag_idx_dtype.<locals>.<genexpr>  r	  r
  r   )r   r  r  r(   rA  r-   r$   r  r  s     r0   test_block_diag_idx_dtypez,TestConstructUtils.test_block_diag_idx_dtype  s[    y)Y78@qxx@@##QF+2215;;rxxGGGr2   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 rJ   rK   rL   )rJ   rK   r   )r   r   rL   )rD   r   rK   r   )rD   r   rK   r   r   )r   r   r   r   rL   N)r   r(   rA  rn   r   r  s      r0   test_block_diag_scalar_1d_argsz1TestConstructUtils.test_block_diag_scalar_1d_args  sv     	9//!A
;CCE%y1	3 gqe9//A7??A+_=	?r2   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 rD   r   N)r   r(   rA  rn   r   r   s    r0   test_block_diag_1z$TestConstructUtils.test_block_diag_1  s    Y))Aq6(3;;=QF8_	&Y))QF8*5==?QF8_	&Y))QC!:,7??AQC!:&	( 	Y))1#.668QC5\	#r2   c                    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 rD   rJ   rK   )rD   rK   rE   rL   rM   r   )rD   rJ   rK   r   r   )r   r   r   rL   rM   rD   rJ   rK   )rK   rD   r   r   N)r   r   r(   rA  rn   r   r  s      r0   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r2   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 )NrL  )rJ   rK   rL   )r   r   r   r(   rA  r   r   r  s      r0   test_block_diag_return_typez.TestConstructUtils.test_block_diag_return_type  s    )%z9+'>1)..1v6@@@)..1v6@@@)..1v6@@@)..1v6AAAr2   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 )NrM   rR   皙?)r+   r-   )rM   rR     )r+   r.   )r   rQ  r   ry   r+   )r   r   r   r    r   c                        ddd      S )NrM   rR   g? fs   r0   <lambda>z9TestConstructUtils.test_random_sampling.<locals>.<lambda>0  s    a2sm r2   c                        ddd      S )NrM   rR   grU  rV  s   r0   rX  z9TestConstructUtils.test_random_sampling.<locals>.<lambda>1  s    a2tn r2   )sprandr1   r$   r   float64
longdoubler   r  	complex64
complex128r   r-   rF   nnzr%   r&   r   datarowcolr   prodr,   r   r>   )r@   tr   x1x2r+   r   rW  s          @r0   test_random_samplingz'TestConstructUtils.test_random_sampling  s   ! 	>Ajj"**bmmhh",,G 'aS2QWWa(QWWg.QUUA&' 1b#40B2::.1b#299+@+@+FGBrww0rvvrvv.rvvrvv./ EaW-QUUC"''!''2B(B$CDE 4 ,aC(QXXs+, *&;<*&<=5	>r2   r.   rR  c                 0   t        dddt        j                  |      }t        t        j                  t        j
                  d|j                                     t        t        j                  t        j
                  |j                  d                   y NrR      r   r+   r-   r.   r   rD   )rZ  r$   r[  r   r<  
less_equalr`  r@   r.   r   s      r0   	test_randzTestConstructUtils.test_rand3  sZ     2r3bjjcBr}}Q/01r}}QVVQ/01r2   c                 \   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                                     y ri  )r1   r$   r[  r   anylessr`  r6   rm  s      r0   
test_randnzTestConstructUtils.test_randn:  s    
 RS

Drwwqvvq)*+rwwq!&&)*+2r3bjjcJrwwqvvq)*+rwwq!&&)*+r2   c                     t        j                  ddd       t        j                  dd       t        j                  dd       t        j                  dd       y )NrR   rs   r   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   )r(   r%   r5   r   s    r0   test_random_accept_str_dtypez/TestConstructUtils.test_random_accept_str_dtypeF  sG     	Rs+xs3|3733?r2   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 y )N)r   rL   g333333?r   )r+   r-   random_stateru  rk  rv  )r(   r5   r   rF   )r@   r   s     r0   'test_random_array_maintains_array_shapez:TestConstructUtils.test_random_array_maintains_array_shapeN  s    $$VSRSTyyF"""$$\3cqQyyL((($$%93c)*,yy0000r2   c                     t        j                  d      }|j                  d   j                  t        j
                  k(  sJ y )Nrt  r   )r(   r5   r  r-   r$   r   )r@   r   s     r0   test_random_array_idx_dtypez.TestConstructUtils.test_random_array_idx_dtypeZ  s2    ""8,xx{  BHH,,,r2   c                 @   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       t        j                  d	d
      }t        |j                         d       t        |t              sJ d}t        j                  |d      }t        |j                         d       y )NrR   gx&1?rS  rU   rt  )        r~  g(Rs?<i  )rR   rR   rR   rR   gk) 3?i  )r~  r~  r~  gAy5:   )r(   r%   r   count_nonzeror5   r   r   )r@   sparse_matrixsparse_arrayrF   s       r0   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$7 !--.>P\//1$7,000% --eZH\//1#6r2   )J__name__
__module____qualname__r=   markparametrizer   r   r   r   r   r   r   rA   r   r
   r   r   r   r   rG   rv   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  r1  r  r(  r/  r4  xslowxfail_on_32bitr?  rC  rF  rH  rJ  rM  rO  rg  r$   r%   r&   rn  rr  rw  rz  r|  r  rU  r2   r0   r8   r8   )   s|   [[U9i9i% 	 [[UJ
J
% &	&6LpL6\?6I&I64
F& [[Z)*<*<i>Q>Q)RSA TA [[UY]]I4G4G$HI! J!F [[UY]]I4G4G$HIA JA9 [[7a&1a&	4'a&1a&	4'q6Aq6
	T5): 
Q
Q;,z6"-01 [[YY(?@4 A4:D&V6. [[YY(?@! A!.V [[]Y^^Y=R=R,STK= UK=Z
D"DH [[[[ CD/ E // H
	?
#FB>< [[UT41F1Ft1L$MN2 O2 [[UT41F1Ft1L$MN	, O	,@
1-7r2   r8   c                     t        j                  dd      } t        t        j                  | d      j                         t        j                  |              t        t        j                  | dd      j                         t        j                  | d             t        t        j                  | d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.ry   r}   Nr   rJ   r   r-   r   r   r   rL   z.*out of boundsr;   rM   rE   )r$   r   r   r(   r   rn   r   r=   r   r>   r   )r   s    r0   test_diags_arrayr  w  s    99S#Dy,,T>FFH"''RV-XdAT:BBDbggdVWFX dAV4HPPR
2A2rr6" 
z):	; >		#s+Qf=> > >s   -D>>Efuncc                     dgddgdgg}g d} | ||d       }t        j                  ddgddgg      }t        |j                         |d       y )	NrK   rD   rJ   rL   re   r  Tstrict)r$   r   r   rn   r  rs   r   r   r   s        r0   test_diags_intr    sX    
q!fqcAG q'
.Cxx!Q!Q()Hs{{}ht<r2   c                     dgddgdgg}g d}t        j                  t        d      5   | ||      }d d d        t        j                  d	d
gddgg      }t        j                         |d       y # 1 sw Y   AxY w)NrK   rD   rJ   rL   re   zoutput has been cast tor;   r   ry   r|   r{   rz   Tr  )r=   warnsFutureWarningr$   r   r   rn   r  s        r0   test_diags_int_to_float64r    sz    
q!fqcAG
 
m+D	E '1g&'xx#sc3Z01Hs{{}ht<' 's   A44A=c                  |   t        j                  g d      } t        |       j                  dd      }t	        j
                  |dd      }t        |d   j                         |d d df   j                                |j                  dddd      }t	        j
                  |dd      }t        |j                  d       y )	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-?rN   r   rD   rX   rK   rJ   )rJ   rJ   rK   rK   )	r$   r   r   reshaper(   swapaxesr   rn   rF   )r   sX	sXswappedsXX
sXXswappeds        r0   test_swapaxesr    s    
 < 	=A 
1		a	#B""2q!,I2&&("QU)*;*;*=>
**Q1a
 C##CA.J!!<0r2   c                  @   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        |j                         |        t        |j                         t        j                  |dd             y )Nr   rJ   rN   rD   rM   rO   )r$   r   r   r(   r  r   rn   tgtr   r   outs       r0   test_3d_swapaxesr    s    FQFq!fq!f-
.C
Aq6Aq6"aVaV$456A!A


Q1
%C$Aq! 45r2   r,   c                 Z   t        j                  g dg dg      }t        |      j                  |       }t	        j
                  |dd      }|j                  dk(  sJ |j                  dk(  sJ t        |j                         t        j
                  |dd             |j                  rJ y )NrJ   r   rD   rK   rM   r   rD   r   r   rK   rJ   )r$   r   r   asformatr(   r  r,   rF   r   rn   has_canonical_formatr,   r   SAr  s       r0   test_sparse_format_swapaxesr    s    
)Y'(A	1		v	&B


RA
&C::99Aq! 45'''''r2   c            
      \   t        ddgddgg      } t        t        d      5  t        j                  | dd       d d d        t        t        d      5  t        j                  | dd       d d d        t        t        d      5  t        j                  | dd       d d d        t        t        d      5  t        j                  | dd       d d d        t        t        d      5  t        j                  | dd	       d d d        t        t        d      5  t        j                  | d	d       d d d        t        t        j                  | dd      j                         | j                                t        d      D ]]  }t        t        j                  | |d	|z
        j                         t        j                  | |dz
  d
|z
        j                                _ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   <xY w# 1 sw Y   xY w# 1 sw Y   xY w)NrJ   r   rK   rM   Invalid axisr;   rg   333333?rD   rX   )r   r   r>   r(   r  r   rn   r   r   is     r0   test_axis_swapaxesr    s   Aq6Aq6"#A	z	8 %1b!$%	z	8 %1a$%	z	8 $1a#$	z	8 $1a#$	z	8 &1c1%&	z	8 &1a%&##Aq!,446		D1X 
q!QU+335q!a%a088:	

% %% %$ $$ $& && &sG   G!G.G;6H'HH"!G+.G8;HHH"H+c                  >   t        j                  g d      } | j                  dd      }t        |       j                  dd      }t	        j
                  |dd      }|j                  d      }t        |j                         |j                                t        |d   j                         |d d df   j                                |j                  dd	d	d      }|j                  dd	d	d      }t	        j
                  |d
d      }t        |j                  d       |j                  d
      }t        |j                  d       t        |j                         |j                                t        |j                         t        j                  |d
             y )Nr  rN   rD   r   Taxesr:  r  rX   rK   rJ   )r   rJ   rD   rK   )rK   rJ   rJ   rK   )
r$   r   r  r   r(   permute_dims	transposer   rn   rF   )	r   npxr  
sXpermutedsXtransposednpxxr  sXXpermutedsXXtransposeds	            r0   test_permute_dimsr    sJ   
 < 	=A ))Aq/C	1		a	#B''dCJ<<V<,L##%|';';'=>B'')2ae9+<+<+>?;;q!Q"D
**Q1a
 C((<dKK""L1MM|M4M$$l3$$&(=(=(?@$$&T(MNr2   c                  r   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        |j                         |        t        |j                         t        j                  |d             y )
Nr   rJ   rN   rD   rM   rO   )rJ   rD   r   r  )rJ   rL   rD   )	r$   r   r   r(   r  r   rF   rn   r  r  s       r0   test_3d_permute_dimsr    s    C!qcA31#sQC!!5
6C
Aq6Aq6Aq6Aq6234A!A

 
 
3CI&$QY ?@r2   c                     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 y )	Nr  r  r   rD   r  Tr   rD   F)r   r(   r  r  r   s    r0   "test_canonical_format_permute_dimsr    s|    9i()A!!!&1FF$NNN!!!1a&1FF$NNN!!!1a&1FF%OOOr2   c                  h   t        g dg dg      } t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d       d d d        t        t
        d      5  t        j                  | d	d
h       d d d        t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d       d d d        t        t
        d      5  t        j                  | d       d d d        t        t        j                  | dd      j                         | j                  dd      j                                t        t        j                  | d	d
gd      j                         | j                  d	d
gd      j                                t        t        j                  | d d      j                         | j                  dd      j                                t        t        j                  | dd      j                         | j                                y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   Ix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   xY w# 1 sw Y   xY w)Nr  r  zIncorrect number of axesr;   r  zduplicate value in axisr   zaxis must be an integer/tuplerD   r   zaxis out of range)rb   r   )r   rb   )rJ   r   )r   rJ   zaxis must be an integer)r  r   r  Tr  r  )	r   r   r>   r(   r  r   r   rn   r  r  s    r0   test_axis_permute_dimsr    s   9i()A	z)C	D 2qy12	z)B	C /qv./	y(G	H /q1v./ 
z)<	= 0qw/0	z)<	= 0qw/0	z)<	= /qv./	z)<	= /qv./	y(A	B 1qx01 qvD9AAC	d+335
 q1vD9AAC	!Qd+335 qt$7??A	d+335 qvD9AACQYY[?2 2/ // /0 00 0/ // /1 1s_   KKK&8K3)L LL<L'KK#&K03K= L
LL$'L1c                 Z   t        j                  g dg dg      }t        |      j                  |       }t	        j
                  |d      }|j                  dk(  sJ |j                  dk(  sJ t        |j                         t        j                  |d             |j                  rJ y )Nr  r  r  r  r   r  )r$   r   r   r  r(   r  r,   rF   r   rn   r  r  r  s       r0   test_sparse_format_permute_dimsr  8  s    
)Y'(A	1		v	&B

 
 &
1C::99QV <='''''r2   c                  F   t        j                  g d      } | j                  dd      }t        |      }t        j                  |d      }t        j                  |d      }t        |d   j                         |dt         j                  d d f   j                                t        |j                         |       |j                  dddd      }|j                  dddd      }t        j                  |d      }t        j                  |d      }t        |j                  d       t        |j                         |       t        j                  |d	      }t        j                  |d	      }t        |j                  d
       t        |j                         |       y )Nr  rN   rD   r6  rX   rK   rJ   )rK   rJ   rD   rJ   rK   r   )rK   rJ   rJ   rD   rK   )
r$   r   r  r   expand_dimsr(   r   rn   newaxisrF   )	r   r  r  npx_expanded
sXexpandedr  r  npxx_expandedsXXexpandeds	            r0   test_expand_dimsr  E  sF   
 < 	=A ))Aq/C	3B>>#A.L&&r2JB'')2b"**a.?+@+H+H+JK##%|4;;q!Q"D
**Q1a
 CNN4a0M''!4K""O4$$&6NN4b1M''"5K""O4$$&6r2   c                      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        |j	                         |        y )Nr   rJ   rN   rD   rM   rO   r  )r   r(   r  r   rn   )r  r   r  s      r0   test_3d_expand_dimsr  c  sw    VaV!Q!Q 01
2CQFQF#q!fq!f%567A



*C$r2   c                    t        j                  ddgddgg      }t        |      j                  |       }t	        j
                  |d      }|j                  dk(  sJ |j                  dk(  sJ t        |j                         t        j
                  |d             |j                         j                  |j                  k(  sJ y )	NrJ   r   rK   rM   rD   r  r   )rJ   rD   rJ   )r$   r   r   r  r(   r  r,   rF   r   rn   tocoor  r  s       r0   test_sparse_format_expand_dimsr  j  s    
1a&1a&!"A	1		v	&B



+C::99	!!!qq 9:88:**c.F.FFFFr2   c            	      ^   t        ddgddgg      } t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d       d d d        t        t        d      5  t        j                  | d	       d d d        t        d      D ]W  }t        t        j                  | |      j                         t        j                  | |dz
        j                                Y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
NrJ   r   rK   rM   r  r;   rg   r  r  )r   r   r>   r(   r  r   r   rn   r  s     r0   test_axis_expand_dimsr  v  s    Aq6Aq6"#A	z	8 *ab)*	z	8 )aa()	z	8 +ac*+1X 
!!!!,446!!!!a%088:	

* *) )+ +s#   DDD#DD #D,)g{Gz?r   NN);__doc__numpyr$   r   numpy.testingr   r   r   r   r=   r   r   scipy._lib._testutilsr	   scipy.sparser
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   scipy.sparse._constructr   rZ  r   r1   r6   r8   r  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  r2   r0   <module>r     ss   /  < <  * 33 3 3 3 3 3<
IFK7 K7\>( )"7"7!IJ= K= )"7"7!IJ
= K
=1"6 >2( 3(
,O6	AP$N >2	( 3	(7<% >2G 3G
r2   