
    gei                     t   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
mZmZmZ d dl mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ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+ d	 Z,ej-        .                                Z/e/0                    e1d
           e/ G d d                      Z2e/ G d d                      Z3e/ G d d                      Z4e j5        6                    deeeg          d             Z7 G d d          Z8 G d d          Z9 G d d          Z: G d d          Z; G d d          Z< G d d          Z= G d d           Z> G d! d"          Z? G d# d$          Z@ G d% d&          ZA G d' d(          ZB G d) d*          ZCd+ ZDd, ZEd- ZFd. ZG G d/ d0          ZHdS )1    N)arangeaddarrayeyecopysqrt)assert_equalassert_array_equalassert_array_almost_equalassert_allclose)raises)fft)comb)toeplitzhankel	circulanthadamardlesliedft	companiontritriutrilkron
block_diaghelmerthilbert
invhilbertpascal	invpascalfiedlerfiedler_companioneigvalsconvolution_matrix)condc                 N    t          |           }t          j        ||          }|S N)r   r   outer)ndatas     Hlib/python3.11/site-packages/scipy/linalg/tests/test_special_matrices.pyget_matr,      s#    !99D9T4  DK    'tri'/'tril/'triu'c                   &    e Zd Zd Zd Zd Zd ZdS )TestTric           
          t          t          d          t          g dg dg dg dg                     t          t          dd          t          g dg dg dg dgd                     d S )N      r   r   r   r4   r4   r   r   r4   r4   r4   r   r4   r4   r4   r4   fdtyper	   r   r   selfs    r+   
test_basiczTestTri.test_basic   s    SVVULLL$0LL$0LL$0LL$2 3 3 	4 	4 	4 	S#&&&|||/;||/;||/;||/= ?B)C )C 	D 	D 	D 	D 	Dr-   c           
          t          t          dd          t          g dg dg dg dg                     t          t          dd          t          g dg d	g dg dg                     d S )
Nr2   r4   kr5   r6   r7   r   r   r   r   r3   r;   r<   s    r+   	test_diagzTestTri.test_diag&   s    Sa[[[%)5)5)5)7 #8 #8 	9 	9 	9 	Sb\\\5,,,*6,,*6,,*6,,*8 $9 $9 	: 	: 	: 	: 	:r-   c           
          t          t          dd          t          g dg dg dg dg                     t          t          dd          t          g dg dg dg                     d S )	Nr2      r4   r   r   r4   r4   r   r4   r4   r4   r3   r5   r6   r;   r<   s    r+   test_2dzTestTri.test_2d0   s    SAYYyyy'0yy'0yy'0yy'2 !3 !3 	4 	4 	4 	SAYY|||'3||'3||'5 !6 !6 	7 	7 	7 	7 	7r-   c           
          t          t          ddd          t          g dg dg dg                     t          t          ddd          t          g dg dg d	g d
g                     d S )NrF   r2      r@   r6   r7   )r   r   r   rG   rH   r;   r<   s    r+   test_diag2dzTestTri.test_diag2d9   s    SA^^^ULLL,8LL,8LL,: &; &; 	< 	< 	< 	SA___eYYY-6YY-6YY-6YY-8 '9 '9 	: 	: 	: 	: 	:r-   N)__name__
__module____qualname__r>   rD   rJ   rN    r-   r+   r0   r0      sS        D D D: : :7 7 7: : : : :r-   r0   c                       e Zd Zd Zd ZdS )TestTrilc                    dt          d          z                      d          }|                                }t          d          D ]}t          |dz   d          D ]	}d|||f<   
 t	          t          |          |           d S Nd      lr4   r   )r,   astyper   ranger	   r   r=   abrA   rY   s        r+   r>   zTestTril.test_basicE       ^##C((FFHHq 	 	A1Q3]]  !Q$T!WWa     r-   c                    dt          d          z                      d          }|                                }t          d          D ]}t          |dz   d          D ]	}d|||f<   
 t	          t          |d          |           |                                }t          d          D ].}t          t          |dz
  df          d          D ]	}d|||f<   
/t	          t          |d	          |           d S )
NrW   rX   r8   rF   r   rL   r@   r4   rM   )r,   rZ   r   r[   r	   r   maxr\   s        r+   rD   zTestTril.test_diagM   s   ^##C((FFHHq 	 	A1Q3]]  !Q$T!q\\\1%%%FFHHq 	 	A3!Qx==!,,  !Q$T!r]]]A&&&&&r-   NrO   rP   rQ   r>   rD   rR   r-   r+   rT   rT   C   2        ! ! !' ' ' ' 'r-   rT   c                       e Zd Zd Zd ZdS )TestTriuc                    dt          d          z                      d          }|                                }t          d          D ]}t          |dz   d          D ]	}d|||f<   
 t	          t          |          |           d S rV   )r,   rZ   r   r[   r	   r   r\   s        r+   r>   zTestTriu.test_basic]   r_   r-   c                    dt          d          z                      d          }|                                }t          d          D ].}t          t	          |dz
  df          d          D ]	}d|||f<   
/t          t          |d          |           |                                }t          d          D ]}t          |dz   d          D ]	}d|||f<   
 t          t          |d	          |           d S )
NrW   rX   r8   r4   r   rL   r@   rF   rM   )r,   rZ   r   r[   ra   r	   r   r\   s        r+   rD   zTestTriu.test_diage   s   ^##C((FFHHq 	 	A3!Qx==!,,  !Q$T!q\\\1%%%FFHHq 	 	A1Q3]]  !Q$T!r]]]A&&&&&r-   Nrb   rR   r-   r+   re   re   [   rc   r-   re   funcc                     t          j        t          d          5   | t          j        dgg                     d d d            d S # 1 swxY w Y   d S )Nr.   matchr4   )pytestwarnsDeprecationWarningnpr   )rh   s    r+   !test_special_matrices_deprecationrp   s   s    	(0D	E	E	E  RXse__                 s    A		AAc                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestToeplitzc                     t          g d          }t          |g dg dg dg           t          g dg d          }t          |g dg dg dg           d S )Nr4   rL   rF   )rL   r4   rL   rF   rL   r4   )r4   r2   rX   )rL   r4   r2   r   r
   r=   ys     r+   r>   zTestToeplitz.test_basic{   sv    YYY1yyy)))YYY?@@@YYY			**1yyy)))YYY?@@@@@r-   c                 ,   dt          d          z   dz  }t          |          }t          |          }t          ||           |d d df         }t          ||           t          |ddd f         |dd                                                     d S )N      ?      @y      ?      ?r   r4   )r   r   r   r
   conj)r=   r*   xtcol0s        r+   test_complex_01zTestToeplitz.test_complex_01   s    fSkk!j1JJQKK1d###Aw4&&&1QU8T!""X]]__55555r-   c                     t          d          }t          |dgg           t          dd          }t          |dgg           dS )z*Scalar arguments still produce a 2D array.
      Nrv   )r=   r~   s     r+   test_scalar_00zTestToeplitz.test_scalar_00   sJ    RLL1tf%%%R1tf%%%%%r-   c                 t    t          g d          }t          |d          }t          |dgdgdgg           d S Nrt   r4   rL   rF   r   r   r
   r=   cr~   s      r+   test_scalar_01zTestToeplitz.test_scalar_01   sB    )))QNN1sQC!o.....r-   c                     t          g d          }t          |t          d                    }t          |dgdgdgg           d S r   r   r   s      r+   test_scalar_02zTestToeplitz.test_scalar_02   sJ    )))Qa!!1sQC!o.....r-   c                     t          g d          }t          |t          dg                    }t          |dgdgdgg           d S r   r   r   s      r+   test_scalar_03zTestToeplitz.test_scalar_03   sL    )))Qqc

##1sQC!o.....r-   c                 n    t          g d          }t          d|          }t          |g dg           d S )N)r   rL   rF   r4   rt   r   )r=   rr~   s      r+   test_scalar_04zTestToeplitz.test_scalar_04   s<    ***QNN1yyyk*****r-   N)
rO   rP   rQ   r>   r   r   r   r   r   r   rR   r-   r+   rr   rr   y   s        A A A	6 	6 	6& & &/ / /
/ / /
/ / /
+ + + + +r-   rr   c                       e Zd Zd ZdS )
TestHankelc                     t          g d          }t          |g dg dg dg           t          g dg d          }t          |g dg dg dg           d S )Nrt   rL   rF   r   )rF   r   r   rF   r2   rX   )rL   rF   r2   )r   r
   rw   s     r+   r>   zTestHankel.test_basic   sv    9991yyy)))YYY?@@@999iii((1yyy)))YYY?@@@@@r-   NrO   rP   rQ   r>   rR   r-   r+   r   r      s(        A A A A Ar-   r   c                       e Zd Zd ZdS )TestCirculantc                 Z    t          g d          }t          |g dg dg dg           d S )Nrt   )r4   rF   rL   )rL   r4   rF   ru   )r   r
   rw   s     r+   r>   zTestCirculant.test_basic   s<    iii  1yyy)))YYY?@@@@@r-   Nr   rR   r-   r+   r   r      s(        A A A A Ar-   r   c                       e Zd Zd ZdS )TestHadamardc                 b   t          d          }t          |dgg           t          dt                    }t          |ddgddgg           t          d          }t          |g dg dg d	g d
g           t          t          t           d           t          t          t           d           d S )Nr4   rL   r9   rz         r2   r7   )r4   rB   r4   rB   )r4   r4   rB   rB   )r4   rB   rB   r4   r   rX   )r   r
   floatassert_raises
ValueErrorrw   s     r+   r>   zTestHadamard.test_basic   s    QKK1se$$$Qe$$$1SzC;7888QKK1|||-~~-~~-~~/ 	0 	0 	0
 	j(A...j(A.....r-   Nr   rR   r-   r+   r   r      s#        / / / / /r-   r   c                       e Zd Zd Zd ZdS )
TestLesliec                    t          t          t          ddgddggg d           t          t          t          g dddgddgg           t          t          t          ddgddg           t          t          t          dgg            d S )Nr4   rL   r   )r   r   r   r<   s    r+   test_bad_shapeszTestLeslie.test_bad_shapes   s    j&Aq6Aq6*:IIIFFFj&)))q!fq!f5EFFFj&1a&1a&999j&1#r22222r-   c                 ~    t          g dddg          }t          g dg dg dg          }t          ||           d S )Nrt         ?      ?)rz          @r{   )r           r   )r   r   r   )r   r   r
   )r=   r]   expecteds      r+   r>   zTestLeslie.test_basic   s[    999tSk**///***)//+ , , 	1h'''''r-   NrO   rP   rQ   r   r>   rR   r-   r+   r   r      s2        3 3 3( ( ( ( (r-   r   c                       e Zd Zd Zd ZdS )TestCompanionc                     t          t          t          ddgddgg           t          t          t          g d           t          t          t          dg           t          t          t          g            d S )Nr4   rL   )r   r2   rX   )r   r   r   r<   s    r+   r   zTestCompanion.test_bad_shapes   sc    j)q!fq!f-=>>>j)YYY777j)aS111j)R00000r-   c                     t          g d          }t          ddgddgg          }t          ||           t          g d          }t          ddgddgg          }t          ||           d S )	Nrt          g      rz   r   )r         @g      $      r   )r   r   r
   )r=   r   r   s      r+   r>   zTestCompanion.test_basic   s    iii  4L#J   	1h''''''((3K#J   	1h'''''r-   Nr   rR   r-   r+   r   r      s2        1 1 1( ( ( ( (r-   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestBlockDiagc           
          t          t          d          ddgddgddggg dg          }t          |g dg d	g d
g dg dg dg           d S )NrL   r4   rF   r2   rX      rt   )r4   r   r   r   r   r   r   )r   r4   r   r   r   r   r   )r   r   r4   rL   r   r   r   )r   r   rF   r2   r   r   r   )r   r   rX   r   r   r   r   )r   r   r   r   r4   rL   rF   )r   r   r
   r=   r}   s     r+   r>   zTestBlockDiag.test_basic   s    s1vvAAA7)))EE14444444444444444446 	7 	7 	7 	7 	7r-   c                     t          dgg          }t          |j        t                     t          dgg          }t          |j        t                     d S )Ng      ?T)r   r	   r:   r   boolr   s     r+   
test_dtypezTestBlockDiag.test_dtype   sN    wQWe$$$x  QWd#####r-   c                     t          dggdgg          }t          j        ddgddgg          }t          ||           d S )Nr4                 ?r   )r   ro   r   r
   )r=   actualdesireds      r+   test_mixed_dtypeszTestBlockDiag.test_mixed_dtypes  sK    aSERD6**(QFQG,--67+++++r-   c                     t          d          }t          |j        d           t          |dgg           t          ddgd          }t          |g dg dg           d S )Nr4   r4   r4   rL   rF   r2   r   )r   r   r2   )r   r	   shaper
   r=   r]   s     r+   test_scalar_and_1d_argsz%TestBlockDiag.test_scalar_and_1d_args  si    qMMQWf%%%1se$$$1vq!!1yyy)))455555r-   c                 B    t          t          t          dggg           d S )Nr4   )r   r   r   r<   s    r+   test_bad_argzTestBlockDiag.test_bad_arg  s     j*ug66666r-   c                 v    t                      }t          |j        d           t          |j        d           d S )NrL   r   )r   r	   ndimnbytesr   s     r+   test_no_argszTestBlockDiag.test_no_args  s5    LLQVQQXq!!!!!r-   c           
          t          ddgddggg ddgddgddgg          }t          |g d	g d
g dg dg dg dg           d S )Nr4   r   rL   rF   r2   rX   r      r3   )r   r4   r   r   rC   )r   r   rL   rF   )r   r   r2   rX   )r   r   r   r   )r   r
   r   s     r+   test_empty_matrix_argz#TestBlockDiag.test_empty_matrix_arg  s     AA'AAA/1 1 	1|||+||+||+||+||+||- 	. 	. 	. 	. 	.r-   c           
          t          ddgddggg gddgddgddggt          j        ddgd	
                    }t          |g dg dg dg dg dg dg           d S )Nr4   r   rL   rF   r2   rX   r   r   int32r9   )r4   r   r   r   r   r   )r   r4   r   r   r   r   )r   r   r   r   r   r   )r   r   rL   rF   r   r   )r   r   r2   rX   r   r   )r   r   r   r   r   r   )r   ro   zerosr
   r   s     r+   test_zerosized_matrix_argz'TestBlockDiag.test_zerosized_matrix_arg$  s     AA'tAAA/xAg6668 8 	11111111111111111113 	4 	4 	4 	4 	4r-   N)rO   rP   rQ   r>   r   r   r   r   r   r   r   rR   r-   r+   r   r      s        7 7 7$ $ $, , ,
6 6 67 7 7" " "
. . .4 4 4 4 4r-   r   c                       e Zd Zd ZdS )TestKronc                 x   t          t          ddgddgg          t          g dg                    }t          |t          g dg dg                     t          ddgddgg          }t          dgd	gg          }t          ||          }t          dd
gd	dgddgddgg          }t          ||           d S )Nr4   rL   rF   r2   rI   )r4   r4   r4   rL   rL   rL   )rF   rF   rF   r2   r2   r2   r      r         (   !   ,   )r   r   r
   )r=   r]   m1m2r   s        r+   r>   zTestKron.test_basic6  s    AA'((%*<*<==1e%7%7%7%7%7%7%9 : : 	; 	; 	; QFQF#$$RD2$<  RLL2r(r(r(r($ % % 	1h'''''r-   Nr   rR   r-   r+   r   r   4  s#        ( ( ( ( (r-   r   c                       e Zd Zd Zd ZdS )TestHelmertc                    t          dd          D ]{}t          |d          }t          j        |          }t	          |                    |j                  |d           t	          |j                            |          |d           |d S )Nr4   r   Tfull-q=atol)r[   r   ro   r   r   dotT)r=   r)   HIds       r+   test_orthogonalityzTestHelmert.test_orthogonalityH  s    q! 	8 	8A%%%ABAEE!#JJ7777ACGGAJJ77777		8 	8r-   c           	         t          dd          D ]}t          |d          }t          |          }|dd d d f         j        |j        fD ]}t          j        |          t          j        ||fd|z            z
  }t          |                    |j                  |           t          |j                            |          t          j        |dz
            d           d S )NrL   r   Tr   r4   r   r   )r[   r   r   ro   r   r   r   r   )r=   r)   H_full	H_partialUCs         r+   test_subspacezTestHelmert.test_subspaceO  s    q! 	E 	EAQT***F

IABBE]_ik1 E EF1IIAA 6 66ac

A...

BF1Q3KKeDDDDDE	E 	Er-   N)rO   rP   rQ   r   r   rR   r-   r+   r   r   F  s7        8 8 8E E E E Er-   r   c                       e Zd Zd ZdS )TestHilbertc                     t          g dg dg dg          }t          t          d          |           t          t          d          dgg           t          d          }t	          |j        d           d S )	N)rz   r   UUUUUU?)r   r   r   )r   r   g?rF   r4   rz   r   )r   r   )r   r   r   r
   r	   r   )r=   h3h0s      r+   r>   zTestHilbert.test_basic[  s    %%%&&&&&&( ) ) 	"'!**b11171::w///QZZRXv&&&&&r-   Nr   rR   r-   r+   r   r   Y  s#        	' 	' 	' 	' 	'r-   r   c                       e Zd Zd Zd ZdS )TestInvHilbertc                 |   t          dgg          }t          t          dd          |           t          t          d          |           t          ddgddgg          }t          t          dd          |           t          t          d          |           t          g dg d	g d
g          }t          t          dd          |           t          t          d          |           t          g dg dg dg dg          }t          t          dd          |           t          t          d          |           t          g dg dg dg dg dg          }t          t          dd          |           t          t          d          |           t          g dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g          }t          t          d'd          |           t	          t          d'          |                    t                    d()           d S )*Nr4   Texactr2   i   rL   )	   r   )r      L)r   r      rF   )      t)r  i  t  )r  r  iP  )r  r  r  i
  )     v  )r
  i  , i  )r  r  i6 4|  )r  r  r  i  x)r  r  r  r  iD  rX   )i!  p]) 2@l%PAy    g
 P=    /w$:R
   xDum7   O@>/,	   t:`j!    < )r  i y ̌    r	 @u\     Db`Hh    Pz6  }%     l&W c(     hx 4z     d~I
 8wl8Z     @u8! `6a)r  r$  l   @iLU  RK   8H,!`g`36    g0  *?*^B    ;t$ }|   @bsk C{'"i   `>9&%mq>   3CM@; 86`T    Pm;,
 )r  r%  r3  l    pM6= 0	     nC  YJVr     <_ L^V    R8 uxb    eH  EIBQx    HvYP x(6$     7	 >u1)r  r&  r4  rA  l   Dcf$l @QM    8ItHv0"Qs   N
:v @ s/V|    #& p-N$v     5  @,@VK-
    8_DdYI  B _,    qk)r  r'  r5  rB  rN  l    O9x&Y)lx     pd gsxmU     D0FZD K|y#l_y     xbr &V%     lny?Cce @M=p-     @@|%6 h\bC )r  r(  r6  rC  rO  rZ  l   @/.L  BAyks'9    | 
LjY   iYn\"% #5Ey    X(@T'3?   @,3 Hx+/S    pO3^#
 )r  r)  r7  rD  rP  r[  re  l    @+aF}cJ{
;_    P8Xy8Qo& BIhN    `@
oc#dLq,O    pFYRa Ii9M     R/$L@<8zG 0 )r  r*  r8  rE  rQ  r\  rf  ro  l   $9@t)4   07$$Tv0 l7>?   "`-:M= (^@b)   6a;:BMb-Kx?|#   Z$M~ll )r  r+  r9  rF  rR  r]  rg  rp  rx  l    l>cTA@8HV-:v    h{d*U zaC<C     dYwMf RyUC#h.    @)]oz+%)r  r,  r:  rG  rS  r^  rh  rq  ry  r  l   @e4jT  GU
    `i
t,@  Y,ch8    E@3I3T X=&@E   ~Si)r  r-  r;  rH  rT  r_  ri  rr  rz  r  r  l    p}v `Xfz~A`si     86Jpsbv  $JY'ip     tk(0u1@<f)r  r.  r<  rI  rU  r`  rj  rs  r{  r  r  r  l   w2T.g]  %\n     PYHul ZR@
R   LwJ)r   r/  r=  rJ  rV  ra  rk  rt  r|  r  r  r  r  l    L#(S.,# 2F=EgJ    @}l`L\k)r!  r0  r>  rK  rW  rb  rl  ru  r}  r  r  r  r  r  l   @i7Qt0" 8B3\f	   p1&S,)r"  r1  r?  rL  rX  rc  rm  rv  r~  r  r  r  r  r  r  l     @Y? }xl]R )r#  r2  r@  rM  rY  rd  rn  rw  r  r  r  r  r  r  r  r  l   /"}+
    r   )rtol)r   r
   r   r   r   rZ   r   )r=   invh1invh2invh3invh4invh5invh17s          r+   r>   zTestInvHilbert.test_basici  sA   se:at444e<<<:a==%0002wBx! " ":at444e<<<!*Q--777|||'''&( ) ) 	:at444e<<<!*Q--777,,,0000000002 3 3 	:at444e<<<!*Q--777333:::<<<>>>:::	< = =
 	:at444e<<<!*Q--7777 7 7- - -
D D D
! ! !7 7 79 9 9# # #$ $ $$ $ $% % %= = =& & &> > >= = == = =; ; ;: : :ey
 y yt 	:b555v>>>
2e(<(<5IIIIIIr-   c                     t          dd          D ]h}t          |          }t          |          }t          |          }t	          |                    |          t          |          d|z  d|z             id S )Nr4   r   gV瞯<)r   r  )r[   r   r   r%   r   r   r   )r=   r)   r]   r^   r   s        r+   test_inversezTestInvHilbert.test_inverse  s|    q" 	J 	JA

A1A QAAEE!HHc!ff57qIIIII	J 	Jr-   N)rO   rP   rQ   r>   r  rR   r-   r+   r   r   g  s>        ZJ ZJ ZJxJ J J J Jr-   r   c                   N   e Zd Zd edgg           edgg          fd eddgddgg           eddgddgg          fd eg dg dg dg           eg dg d	g d
g          fd eg dg dg dg dg           eg dg dg dg dg          fgZd Zd Zd Zd ZdS )
TestPascalr4   rL   r   rF   rI   rt   )r4   rF   r   rG   rH   )r4   rL   r4   r2   r7   )r4   rL   rF   r2   )r4   rF   r   r   )r4   r2   r   r   r3   r5   )r4   rL   r4   r   )r4   rF   rF   r4   c                    t          t          |          |           t          t          |d          |           t          t          |d          |j                   t          t          |d          |           t          t          |dd          |           t          t          |dd          |j                   d S )Nlower)kindupperFr   )r   r  )r
   r   r   r   r=   r)   symlows       r+   
check_casezTestPascal.check_case'  s    6!99c***6!'222C8886!'222CE:::!&%"8"8"8#>>>!&%g"F"F"FLLL!&%g"F"F"FNNNNNr-   c                 P    | j         D ]\  }}}|                     |||           d S r'   )casesr  r  s       r+   
test_caseszTestPascal.test_cases/  s<    : 	) 	)KAsCOOAsC((((	) 	)r-   c                 `    t          d          }|d         t          ddd          k    sJ d S )N2   )rB   rB   b   1   Tr   )r   r   r=   ps     r+   test_bigzTestPascal.test_big3  s7    2JJyDRt444444444r-   c                 <   t          d          }t          d|                    dd          z  |                    dd          d           t          d          }t          d|                    dd          z  d	|                    dd          z  d
           d S )N"   rL   rB   rM   zn = 34err_msg#   r   rz   zn = 35)r   r	   itemr  s     r+   test_thresholdzTestPascal.test_threshold7  s    
 2JJQqvvb"~~%qvvb"~~xHHHH2JJRr2&166"b>>(98LLLLLLr-   N)	rO   rP   rQ   r   r  r  r  r  r  rR   r-   r+   r  r    s        
EEA3%LL%%!,,'	
EEAq6q6  EAq6q6  	 
EE9999999   E9999999  	  
EE<<<<< ==!>># $ $ E<<<<<<<<<! " "		#E,O O O) ) )5 5 5M M M M Mr-   r  c                      d } g d}g d}|D ]}|D ]}dD ]} | |||           g d}|D ]}|D ]} | ||d           d S )Nc                 "   t          | ||          }t          | ||          }|                    t                                        |                    t                              }t          |t          |           d| ||fz             d S )N)r  r   zn=%d  kind=%r exact=%rr  )r    r   rZ   objectr   r
   r   )r)   r  r   ipr  es         r+   check_invpascalz'test_invpascal.<locals>.check_invpascalD  s    qt511114u--- IIf!!!((6"2"2331c!ff.F/0$.>/? 	@ 	@ 	@ 	@ 	@ 	@r-   )	symmetricr  r  )r4   rL   rX      )TF)   r  r  r  TrR   )r  kindsnsr)   r  r   s         r+   test_invpascalr  B  s    @ @ @ ,++E	B 0 0 	0 	0D& 0 04////0	0 
		B + + 	+ 	+DOAtT****	++ +r-   c                     t          d          } t          ddgddgg          }t          | |           t          dd          } t          | |dz             t          dd          } t          | |t          d          z             t          g d          }t          d	          } |                     |          }t          |          }t          ||           d S )
NrL   rz   r   r)   )scaler   sqrtn)r   r4   rL   rF   r2   rX   r   r4      )r   r   r   r   r   r   )mr   r}   mxfxs        r+   test_dftr  _  s    AAsCj3+.//Ha***ASAa#...AWAa$s))!3444&&&''AAA	
qB	QBb"%%%%%r-   c            	      f   t          g           } t          | j        d           t          dg          } t          | t	          j        dgg                     t          t	          j        dd                    } t	          j        g dg dg dg d	g d
g dg          }t          | |           d S )Nr   g     ^@r   r4   r   )r   r4   rL   rF   r2   rX   )r4   r   r4   rL   rF   r2   )rL   r4   r   r4   rL   rF   )rF   rL   r4   r   r4   rL   )r2   rF   rL   r4   r   r4   )rX   r2   rF   rL   r4   r   )r!   r	   sizer
   ro   r   r   )r8   dess     r+   test_fiedlerr  o  s    AAq"(RD6**+++	!Q  A
(&&&&&&&&&&&&&&&&&&( ) )C q#r-   c                  `   t          g           } t          | j        d           t          dg          } t          | j        d           t          ddg          } t          | t	          j        dgg                     t          g d          } t          | t          g d                     t          t                    5  t          g d           d d d            n# 1 swxY w Y   t          g d          } t          t          |           t	          j        g d                     d S )	Nr   rz   r   r   )r   r   r{   )r   r4   rL   )rz   g      0g     U@g      fg     @Z@)g      @r   r{   rz   )r"   r	   r  r
   ro   r   r   r   r   r   r#   )fcs    r+   test_fiedler_companionr  ~  s_   	2		B!	B4	 	 B!	B8	$	$Br28cUG,,---	???	+	+Bb)OOO"<"<===	z	"	" % %)))$$$% % % % % % % % % % % % % % %	777	8	8Bgbkk h'7'7'788: : : : :s   C!!C%(C%c                   N   e Zd ZdZd Zd Zd Zd Zd Ze	j
                            ddd	g          e	j
                            d
g d          e	j
                            dg d          e	j
                            dg d          d                                                 ZdS )TestConvolutionMatrixzL
    Test convolution_matrix vs. numpy.convolve for various parameters.
    c                 n    t          j        dd|          }|r|dt          j        dd|          z  z   }|S )z/Make a complex or real test vector of length n.r   g@r   g      g@)ro   linspace)r=   r)   cpxr}   s       r+   create_vectorz#TestConvolutionMatrix.create_vector  s?    Kc1%% 	1Br{4a0000Ar-   c                     t          j        t          d          5  t          g dd           d d d            d S # 1 swxY w Y   d S )Nzn must be a positive integerrj   rt   r   rl   r   r   r$   r<   s    r+   
test_bad_nz TestConvolutionMatrix.test_bad_n  s    ]:-KLLL 	- 	-yyy!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-   <A A c                     t          j        t          d          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nzone-dimensionalrj   r4   r2   r  r<   s    r+   test_bad_first_argz(TestConvolutionMatrix.test_bad_first_arg  s    ]:->??? 	% 	%q!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   :>>c                     t          j        t          d          5  t          g d           d d d            d S # 1 swxY w Y   d S )Nzlen\(a\)rj   r2   r  r<   s    r+   test_empty_first_argz*TestConvolutionMatrix.test_empty_first_arg  s    ]:[999 	& 	&r1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r  c                     t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )Nzmode.*must be one ofrj   r   r2   zinvalid argument)moder  r<   s    r+   test_bad_modez#TestConvolutionMatrix.test_bad_mode  s    ]:-CDDD 	C 	Cvq/ABBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cr  r  FTna)r4   rL   r   nvr  )Nr   validsamec                 &   |                      ||          }|                      ||          }|&t          j        ||          }t          ||          }n't          j        |||          }t          |||          }||z  }	t	          ||	           d S r'   )r  ro   convolver$   r   )
r=   r  r  r  r  r]   vy1Ay2s
             r+   test_against_numpy_convolvez1TestConvolutionMatrix.test_against_numpy_convolve  s    
 r3''r3''<Q""B"1b))AAQ4((B"1b$//AU!"b)))))r-   N)rO   rP   rQ   __doc__r  r  r  r  r  rl   markparametrizer  rR   r-   r+   r  r    s          - - -
% % %
& & &
C C C
 [UUDM22[T999--[T999--[V%D%D%DEE
* 
* FE .- .- 32
* 
* 
*r-   r  )Irl   numpyro   r   r   r   r   r   r   numpy.testingr	   r
   r   r   r   r   	scipy.fftr   scipy.specialr   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   numpy.linalgr%   r,   testingsuppress_warnings
dep_filterfilterrn   r0   rT   re   r  r  rp   rr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  rR   r-   r+   <module>r     sX        5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5G G G G G G G G G G G G * * * * * *            . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
        
 Z))++
 
  $&: ; ; ;%: %: %: %: %: %: %: %:P ' ' ' ' ' ' ' '. ' ' ' ' ' ' ' '. #tT!233  43
,+ ,+ ,+ ,+ ,+ ,+ ,+ ,+^A A A A A A A AA A A A A A A A/ / / / / / / /(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (,A4 A4 A4 A4 A4 A4 A4 A4H( ( ( ( ( ( ( ($E E E E E E E E&' ' ' ' ' ' ' 'eJ eJ eJ eJ eJ eJ eJ eJP0M 0M 0M 0M 0M 0M 0M 0Mf+ + +:& & &   : : : .* .* .* .* .* .* .* .* .* .*r-   