
    xfi                        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jZ                  j]                         Z/e/ja                  e1d
       e/ G d d             Z2e/ G d d             Z3e/ G d d             Z4e jj                  jm                  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      ZHy)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                 H    t        |       }t        j                  ||      }|S N)r   r   outer)ndatas     J/usr/lib/python3/dist-packages/scipy/linalg/tests/test_special_matrices.pyget_matr,      s     !9D99T4 DK    'tri'/'tril/'triu'c                   $    e Zd Zd Zd Zd Zd Zy)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             y )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   sY    SVUL$0$0$0$2 3 	4 	S#&|/;/;/;/= ?B)C 	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             y )
Nr2   r4   kr5   r6   r7   r   r   r   r   r3   r;   r<   s    r+   	test_diagzTestTri.test_diag&   sR    Sa[%)5)5)5)7 #8 	9 	Sb\5,*6*6*6*8 $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             y )	Nr2      r4   r   r   r4   r4   r   r4   r4   r4   r3   r5   r6   r;   r<   s    r+   test_2dzTestTri.test_2d0   sO    SAYy'0'0'0'2 !3 	4 	SAY|'3'3'5 !6 	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             y )NrF   r2      r@   r6   r7   )r   r   r   rG   rH   r;   r<   s    r+   test_diag2dzTestTri.test_diag2d9   sS    SA^UL,8,8,: &; 	< 	SA_eY-6-6-6-8 '9 	:r-   N)__name__
__module____qualname__r>   rD   rJ   rN    r-   r+   r0   r0      s    D:7:r-   r0   c                       e Zd Zd Zd Zy)TestTrilc                     dt        d      z  j                  d      }|j                         }t        d      D ]  }t        |dz   d      D ]	  }d|||f<     t	        t        |      |       y Nd      lr4   r   )r,   astyper   ranger	   r   r=   abrA   rY   s        r+   r>   zTestTril.test_basicE   n    ^##C(FFHq 	A1Q3] !Q$	 	T!Wa r-   c                    dt        d      z  j                  d      }|j                         }t        d      D ]  }t        |dz   d      D ]	  }d|||f<     t	        t        |d      |       |j                         }t        d      D ](  }t        t        |dz
  df      d      D ]	  }d|||f<    * t	        t        |d	      |       y )
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(FFHq 	A1Q3] !Q$	 	T!q\1%FFHq 	A3!Qx=!, !Q$	 	T!r]A&r-   NrO   rP   rQ   r>   rD   rR   r-   r+   rT   rT   C       !'r-   rT   c                       e Zd Zd Zd Zy)TestTriuc                     dt        d      z  j                  d      }|j                         }t        d      D ]  }t        |dz   d      D ]	  }d|||f<     t	        t        |      |       y rV   )r,   rZ   r   r[   r	   r   r\   s        r+   r>   zTestTriu.test_basic]   r_   r-   c                    dt        d      z  j                  d      }|j                         }t        d      D ](  }t        t	        |dz
  df      d      D ]	  }d|||f<    * t        t        |d      |       |j                         }t        d      D ]  }t        |dz   d      D ]	  }d|||f<     t        t        |d	      |       y )
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(FFHq 	A3!Qx=!, !Q$	 	T!q\1%FFH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        y # 1 sw Y   y xY w)Nr.   matchr4   )pytestwarnsDeprecationWarningnpr   )rh   s    r+   !test_special_matrices_deprecationrp   s   s;    	(0D	E RXXse_  s   AAc                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	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       y )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{   s:    Y1y)Y?@Y	*1y)Y?@r-   c                     dt        d      z   dz  }t        |      }t        |      }t        ||       |d d df   }t        ||       t        |ddd f   |dd  j	                                y )N      ?      @y      ?      ?r   r4   )r   r   r   r
   conj)r=   r*   xtcol0s        r+   test_complex_01zTestToeplitz.test_complex_01   sh    fSk!j1JQK1d#Aw4&1QU8T!"X]]_5r-   c                 j    t        d      }t        |dgg       t        dd      }t        |dgg       y)z*Scalar arguments still produce a 2D array.
      Nrv   )r=   r~   s     r+   test_scalar_00zTestToeplitz.test_scalar_00   s3    RL1tf%R1tf%r-   c                 Z    t        g d      }t        |d      }t        |dgdgdgg       y Nrt   r4   rL   rF   r   r   r
   r=   cr~   s      r+   test_scalar_01zTestToeplitz.test_scalar_01   s-    )QN1sQC!o.r-   c                 l    t        g d      }t        |t        d            }t        |dgdgdgg       y r   r   r   s      r+   test_scalar_02zTestToeplitz.test_scalar_02   s2    )Qa!1sQC!o.r-   c                 n    t        g d      }t        |t        dg            }t        |dgdgdgg       y r   r   r   s      r+   test_scalar_03zTestToeplitz.test_scalar_03   s4    )Qqc
#1sQC!o.r-   c                 T    t        g d      }t        d|      }t        |g dg       y )N)r   rL   rF   r4   rt   r   )r=   rr~   s      r+   test_scalar_04zTestToeplitz.test_scalar_04   s#    *QN1yk*r-   N)
rO   rP   rQ   r>   r   r   r   r   r   r   rR   r-   r+   rr   rr   y   s&    A	6&/
/
/
+r-   rr   c                       e Zd Zd Zy)
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       y )Nrt   rL   rF   r   )rF   r   r   rF   r2   rX   )rL   rF   r2   )r   r
   rw   s     r+   r>   zTestHankel.test_basic   s:    91y)Y?@9i(1y)Y?@r-   NrO   rP   rQ   r>   rR   r-   r+   r   r      s    Ar-   r   c                       e Zd Zd Zy)TestCirculantc                 H    t        g d      }t        |g dg dg dg       y )Nrt   )r4   rF   rL   )rL   r4   rF   ru   )r   r
   rw   s     r+   r>   zTestCirculant.test_basic   s    i 1y)Y?@r-   Nr   rR   r-   r+   r   r      s    Ar-   r   c                       e Zd Zd Zy)TestHadamardc                    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       y )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   sy    QK1se$Qe$1SzC;78QK1|---/ 	0
 	j(A.j(A.r-   Nr   rR   r-   r+   r   r      s    /r-   r   c                       e Zd Zd Zd Zy)
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        y )Nr4   rL   r   )r   r   r   r<   s    r+   test_bad_shapeszTestLeslie.test_bad_shapes   s^    j&Aq6Aq6*:IFj&)q!fq!f5EFj&1a&1a&9j&1#r2r-   c                 d    t        g dddg      }t        g dg dg dg      }t        ||       y )Nrt         ?      ?)rz          @r{   )r           r   )r   r   r   )r   r   r
   )r=   r]   expecteds      r+   r>   zTestLeslie.test_basic   s5    9tSk*/*)+ , 	1h'r-   NrO   rP   rQ   r   r>   rR   r-   r+   r   r      s    3(r-   r   c                       e Zd Zd Zd Zy)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        y )Nr4   rL   )r   r2   rX   )r   r   r   r<   s    r+   r   zTestCompanion.test_bad_shapes   sA    j)q!fq!f-=>j)Y7j)aS1j)R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        ||       y )	Nrt          g      rz   r   )r         @g      $      r   )r   r   r
   )r=   r   r   s      r+   r>   zTestCompanion.test_basic   si    i 4L#J  	1h''(3K#J  	1h'r-   Nr   rR   r-   r+   r   r      s    1(r-   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
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       y )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   sJ    s1vAAA7)E14444446 	7r-   c                     t        dgg      }t        |j                  t               t        dgg      }t        |j                  t               y )Ng      ?T)r   r	   r:   r   boolr   s     r+   
test_dtypezTestBlockDiag.test_dtype   s:    wQWWe$x QWWd#r-   c                 r    t        dggdgg      }t        j                  ddgddgg      }t        ||       y )Nr4                 ?r   )r   ro   r   r
   )r=   actualdesireds      r+   test_mixed_dtypeszTestBlockDiag.test_mixed_dtypes  s;    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       y )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  sF    qMQWWf%1se$1vq!1y)45r-   c                 4    t        t        t        dggg       y )Nr4   )r   r   r   r<   s    r+   test_bad_argzTestBlockDiag.test_bad_arg  s    j*ug6r-   c                 p    t               }t        |j                  d       t        |j                  d       y )NrL   r   )r   r	   ndimnbytesr   s     r+   test_no_argszTestBlockDiag.test_no_args  s%    LQVVQQXXq!r-   c           
      x    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       y )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  sX     AA'AAA/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       y )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$  sm     AA'tAAA/xxAg68 	11111113 	4r-   N)rO   rP   rQ   r>   r   r   r   r   r   r   r   rR   r-   r+   r   r      s*    7$,
67"
.4r-   r   c                       e Zd Zd Zy)TestKronc                 &   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        ||       y )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%9 : 	; QFQF#$RD2$< RL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y)TestHelmertc                    t        dd      D ]r  }t        |d      }t        j                  |      }t	        |j                  |j                        |d       t	        |j                  j                  |      |d       t y )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! 	8A%ABAEE!##J7ACCGGAJ7		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                  |j                        |       t        |j                  j                  |      t        j                  |dz
        d         y )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AQT*F
IABE]__ikk1 EFF1IAA 66acc
A.
BFF1Q3KeDE	Er-   N)rO   rP   rQ   r   r   rR   r-   r+   r   r   F  s    8Er-   r   c                       e Zd Zd Zy)TestHilbertc                     t        g dg dg dg      }t        t        d      |       t        t        d      dgg       t        d      }t	        |j
                  d       y )	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[  sS    %&&( ) 	"'!*b171:w/QZRXXv&r-   Nr   rR   r-   r+   r   r   Y  s    	'r-   r   c                       e Zd Zd Zd Zy)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'      |j                  t              d()       y )*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  s   se:at4e<:a=%02wBx! ":at4e<!*Q-7|'&( ) 	:at4e<!*Q-7,0002 3 	:at4e<!*Q-73:<>:	< =
 	:at4e<!*Q-77-
D
!79#$$%=&>==;:ey
 yt 	:b5v>
2e(<5Ir-   c                     t        dd      D ]P  }t        |      }t        |      }t        |      }t	        |j                  |      t        |      d|z  d|z         R y )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  sX    q" 	JA
A1A QAAEE!Hc!f57qI	Jr-   N)rO   rP   rQ   r>   r  rR   r-   r+   r   r   g  s    ZJxJr-   r   c                      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y)
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                         y )Nlower)kindupperFr   )r   r  )r
   r   r   r   r=   r)   symlows       r+   
check_casezTestPascal.check_case'  sq    6!9c*6!'2C86!'2CEE:!&%"8#>!&%g"FL!&%g"FNr-   c                 T    | j                   D ]  \  }}}| j                  |||        y r'   )casesr  r  s       r+   
test_caseszTestPascal.test_cases/  s+    :: 	)KAsCOOAsC(	)r-   c                 F    t        d      }|d   t        ddd      k(  sJ y )N2   )rB   rB   b   1   Tr   )r   r   r=   ps     r+   test_bigzTestPascal.test_big3  s&    2JyDRt4444r-   c                     t        d      }t        d|j                  dd      z  |j                  dd      d       t        d      }t        d|j                  dd      z  d	|j                  dd      z  d
       y )N"   rL   rB   rM   zn = 34err_msg#   r   rz   zn = 35)r   r	   itemr  s     r+   test_thresholdzTestPascal.test_threshold7  se    
 2JQqvvb"~%qvvb"~xH2JRr2&166"b>(98Lr-   N)	rO   rP   rQ   r   r  r  r  r  r  rR   r-   r+   r  r    s     
EA3%L%!,'	
EAq6q6 Aq6q6 	 
E9  9 	  
E< !# $ <! "		#E,O)5Mr-   r  c                      d } g d}g d}|D ]  }|D ]  }dD ]  } | |||          g d}|D ]  }|D ]  } | ||d         y )Nc                     t        | ||      }t        | ||      }|j                  t              j	                  |j                  t                    }t        |t        |       d| ||fz         y )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  se    qt5114u- IIf!!!((6"231c!f.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 	0D& 04/0	00
 
B + 	+DAtT*	++r-   c                  V   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	      } | j	                  |      }t        |      }t        ||       y )
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&'AAA	
qB	QBb"%r-   c            	      D   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        | |       y )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        t        g d      } t        t        |       t	        j
                  g d             y # 1 sw Y   AxY w)	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r288cUG,-	?	+Bb)O"<=	z	" %)$%	7	8Bgbk hh'78:% %s   %C33C<c                   <   e Zd ZdZd Zd Zd Zd Zd Ze	j                  j                  ddd	g      e	j                  j                  d
g d      e	j                  j                  dg d      e	j                  j                  dg d      d                             Zy)TestConvolutionMatrixzL
    Test convolution_matrix vs. numpy.convolve for various parameters.
    c                 r    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  s8    KKc1%Br{{4a000Ar-   c                     t        j                  t        d      5  t        g dd       d d d        y # 1 sw Y   y xY w)Nzn must be a positive integerrj   rt   r   rl   r   r   r$   r<   s    r+   
test_bad_nz TestConvolutionMatrix.test_bad_n  s0    ]]:-KL 	-y!,	- 	- 	-   4=c                 |    t        j                  t        d      5  t        dd       d d d        y # 1 sw Y   y xY w)Nzone-dimensionalrj   r4   r2   r  r<   s    r+   test_bad_first_argz(TestConvolutionMatrix.test_bad_first_arg  s0    ]]:->? 	%q!$	% 	% 	%   2;c                 |    t        j                  t        d      5  t        g d       d d d        y # 1 sw Y   y xY w)Nzlen\(a\)rj   r2   r  r<   s    r+   test_empty_first_argz*TestConvolutionMatrix.test_empty_first_arg  s/    ]]:[9 	&r1%	& 	& 	&r  c                     t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nzmode.*must be one ofrj   r   r2   zinvalid argument)moder  r<   s    r+   test_bad_modez#TestConvolutionMatrix.test_bad_mode  s7    ]]:-CD 	Cvq/AB	C 	C 	Cr  r  FTna)r4   rL   r   nvr  )Nr   validsamec                     | j                  ||      }| j                  ||      }|#t        j                  ||      }t        ||      }n$t        j                  |||      }t        |||      }||z  }	t	        ||	       y 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)A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
 [[UUDM2[[T9-[[T9-[[V%DE
* F . . 3
*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     s     5 5G G *  . . . . . .
 
 ZZ))+
 
  $&: ;%: %: %:P ' ' '. ' ' '. #tT!23 4
,+ ,+^A AA A/ /(( ( ( (,A4 A4H( ($E E&' 'eJ eJP0M 0Mf+:& : .* .*r-   