
    tKg\                        d dl Z d dlZd dl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% d dl&m'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      Z. G d d      Z/ G d d      Z0 G d d      Z1 G d d      Z2 G d d       Z3d! Z4d" Z5d# Z6d$ Z7 G d% d&      Z8y)'    N)arange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kron
block_diaghelmerthilbert
invhilbertpascal	invpascalfiedlerfiedler_companioneigvalsconvolution_matrix)condc                   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         )r'   r&   r'   r(   r'   r&   )r&         )r'   r&   r*   r   r	   selfys     l/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_special_matrices.py
test_basiczTestToeplitz.test_basic   s:    Y1y)Y?@Y	*1y)Y?@    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   r&   )r   r   r   r	   conj)r.   dataxtcol0s        r0   test_complex_01zTestToeplitz.test_complex_01   sh    fSk!j1JQK1d#Aw4&1QU8T!"X]]_5r2   c                 j    t        d      }t        |dgg       t        dd      }t        |dgg       y)z*Scalar arguments still produce a 2D array.
      Nr,   )r.   r9   s     r0   test_scalar_00zTestToeplitz.test_scalar_00%   s3    RL1tf%R1tf%r2   c                 Z    t        g d      }t        |d      }t        |dgdgdgg       y Nr%   r&   r'   r(   r   r   r	   r.   cr9   s      r0   test_scalar_01zTestToeplitz.test_scalar_01,   s-    )QN1sQC!o.r2   c                 l    t        g d      }t        |t        d            }t        |dgdgdgg       y rA   rB   rC   s      r0   test_scalar_02zTestToeplitz.test_scalar_021   s2    )Qa!1sQC!o.r2   c                 n    t        g d      }t        |t        dg            }t        |dgdgdgg       y rA   rB   rC   s      r0   test_scalar_03zTestToeplitz.test_scalar_036   s4    )Qqc
#1sQC!o.r2   c                 T    t        g d      }t        d|      }t        |g dg       y )N)r=   r'   r(   r&   r%   rB   )r.   rr9   s      r0   test_scalar_04zTestToeplitz.test_scalar_04;   s#    *QN1yk*r2   N)
__name__
__module____qualname__r1   r;   r?   rE   rG   rI   rL    r2   r0   r#   r#      s&    A	6&/
/
/
+r2   r#   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 )Nr%   r'   r(   r   )r(   r   r   r(   r*   r+   )r'   r(   r*   )r   r	   r-   s     r0   r1   zTestHankel.test_basicB   s:    91y)Y?@9i(1y)Y?@r2   NrM   rN   rO   r1   rP   r2   r0   rR   rR   A   s    Ar2   rR   c                       e Zd Zd Zy)TestCirculantc                 H    t        g d      }t        |g dg dg dg       y )Nr%   )r&   r(   r'   )r'   r&   r(   r)   )r   r	   r-   s     r0   r1   zTestCirculant.test_basicJ   s    i 1y)Y?@r2   NrV   rP   r2   r0   rX   rX   I   s    Ar2   rX   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 )Nr&   r'   dtyper4         r*   r&   r&   r&   r&   )r&   r&   ra   )r&   r&   ra   ra   )r&   ra   ra   r&   r   r+   )r   r	   floatassert_raises
ValueErrorr-   s     r0   r1   zTestHadamard.test_basicQ   sy    QK1se$Qe$1SzC;78QK1|---/ 	0
 	j(A.j(A.r2   NrV   rP   r2   r0   r[   r[   O   s    /r2   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 )Nr&   r'   rU   )rc   rd   r   r.   s    r0   test_bad_shapeszTestLeslie.test_bad_shapese   s^    j&Aq6Aq6*:IFj&)q!fq!f5EFj&1a&1a&9j&1#r2r2   c                 d    t        g dddg      }t        g dg dg dg      }t        ||       y )Nr%         ?      ?)r4          @r5   )rk           rn   )rn   rl   rn   )r   r   r	   )r.   aexpecteds      r0   r1   zTestLeslie.test_basick   s5    9tSk*/*)+ , 	1h'r2   NrM   rN   rO   ri   r1   rP   r2   r0   rf   rf   c   s    3(r2   rf   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 )Nr&   r'   )r   r*   r+   )rc   rd   r   rh   s    r0   ri   zTestCompanion.test_bad_shapesu   sA    j)q!fq!f-=>j)Y7j)aS1j)R0r2   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 )	Nr%          g      r4   rn   )rm         @g      $      rw   )r   r   r	   )r.   rD   rp   s      r0   r1   zTestCompanion.test_basic{   si    i 4L#J  	1h''(3K#J  	1h'r2   Nrq   rP   r2   r0   rs   rs   s   s    1(r2   rs   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 )Nr'   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   r(   r*   r   r   r   )r   r   r+   r|   r   r   r   )r   r   r   r   r&   r'   r(   )r   r   r	   r.   r8   s     r0   r1   zTestBlockDiag.test_basic   sJ    s1vAAA7)E14444446 	7r2   c                     t        dgg      }t        |j                  t               t        dgg      }t        |j                  t               y )Ng      ?T)r   r   r^   rb   boolr}   s     r0   
test_dtypezTestBlockDiag.test_dtype   s:    wQWWe$x QWWd#r2   c                 r    t        dggdgg      }t        j                  ddgddgg      }t        ||       y )Nr&                 ?r   )r   npr   r	   )r.   actualdesireds      r0   test_mixed_dtypeszTestBlockDiag.test_mixed_dtypes   s;    aSERD6*((QFQG,-67+r2   c                     t        d      }t        |j                  d       t        |dgg       t        ddgd      }t        |g dg dg       y )Nr&   r&   r&   r'   r(   r*   rT   )r   r   r*   )r   r   shaper	   r.   ro   s     r0   test_scalar_and_1d_argsz%TestBlockDiag.test_scalar_and_1d_args   sF    qMQWWf%1se$1vq!1y)45r2   c                 4    t        t        t        dggg       y )Nr&   )rc   rd   r   rh   s    r0   test_bad_argzTestBlockDiag.test_bad_arg   s    j*ug6r2   c                 p    t               }t        |j                  d       t        |j                  d       y )Nr'   r   )r   r   ndimnbytesr   s     r0   test_no_argszTestBlockDiag.test_no_args   s%    LQVVQQXXq!r2   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 )Nr&   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   r|   r   )r   r	   r   s     r0   test_empty_matrix_argz#TestBlockDiag.test_empty_matrix_arg   sX     AA'AAA/1 	1|+++++- 	.r2   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 )Nr&   r   r'   r(   r*   r+   r|   r   int32r]   )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+   r   r   )r   r   r|   r   r   r   )r   r   zerosr	   r   s     r0   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 	4r2   N)rM   rN   rO   r1   r   r   r   r   r   r   r   rP   r2   r0   rz   rz      s*    7$,
67"
.4r2   rz   c                       e Zd 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 )Nr&   r'   r(   r*   r&   r&   r&   )r&   r&   r&   r'   r'   r'   )r(   r(   r(   r*   r*   r*   r=      r>         (   !   ,   )r   r   r	   )r.   ro   m1m2rp   s        r0   r1   zTestKron.test_basic   s    AA'(%*<=1e%7%7%9 : 	; QFQF#$RD2$< RL2r(r(r(r($ % 	1h'r2   c                     t        j                  d      }t        j                  d      }t        ||      }t        |t        j                  d             y )N)r   r'   )r&   r(   )r   r|   )r   emptyr   r   )r.   r   r   ro   s       r0   
test_emptyzTestKron.test_empty   s<    XXfXXfRL288F+,r2   N)rM   rN   rO   r1   r   rP   r2   r0   r   r      s    (-r2   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 )Nr&   r   Tfull-q=atol)ranger   r   r   r   dotT)r.   nHIds       r0   test_orthogonalityzTestHelmert.test_orthogonality   s[    q!A%ABAEE!##J7ACCGGAJ7	 r2   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 )Nr'   r   Tr   r&   r   r   )r   r   r   r   r   r   r   r   )r.   r   H_full	H_partialUCs         r0   test_subspacezTestHelmert.test_subspace   s    q!AQT*F
IABE]__ikk1FF1IAA 66acc
A.
BFF1Q3KeD 2 r2   N)rM   rN   rO   r   r   rP   r2   r0   r   r      s    8Er2   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)r4   rl   UUUUUU?)rl   r   rk   )r   rk   g?r(   r&   r4   r   )r   r   )r   r
   r   r	   r   r   )r.   h3h0s      r0   r1   zTestHilbert.test_basic   sS    %&&( ) 	"'!*b171:w/QZRXXv&r2   NrV   rP   r2   r0   r   r      s    	'r2   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 )*Nr&   Texactr*   i   r'   )	   r   )r      L)r   r      r(   )      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  r+   )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   r   l    pM6= 0	     nC  YJVr     <_ L^V    R8 uxb    eH  EIBQx    HvYP x(6$     7	 >u1)r   r   r  r  l   Dcf$l @QM    8ItHv0"Qs   N
:v @ s/V|    #& p-N$v     5  @,@VK-
    8_DdYI  B _,    qk)r   r   r  r  r  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   r  r  r  r'  l   @/.L  BAyks'9    | 
LjY   iYn\"% #5Ey    X(@T'3?   @,3 Hx+/S    pO3^#
 )r   r   r  r  r  r(  r2  l    @+aF}cJ{
;_    P8Xy8Qo& BIhN    `@
oc#dLq,O    pFYRa Ii9M     R/$L@<8zG 0 )r   r   r  r  r  r)  r3  r<  l   $9@t)4   07$$Tv0 l7>?   "`-:M= (^@b)   6a;:BMb-Kx?|#   Z$M~ll )r   r   r  r  r  r*  r4  r=  rE  l    l>cTA@8HV-:v    h{d*U zaC<C     dYwMf RyUC#h.    @)]oz+%)r   r   r  r  r   r+  r5  r>  rF  rM  l   @e4jT  GU
    `i
t,@  Y,ch8    E@3I3T X=&@E   ~Si)r   r   r  r  r!  r,  r6  r?  rG  rN  rT  l    p}v `Xfz~A`si     86Jpsbv  $JY'ip     tk(0u1@<f)r   r   r	  r  r"  r-  r7  r@  rH  rO  rU  rZ  l   w2T.g]  %\n     PYHul ZR@
R   LwJ)r   r   r
  r  r#  r.  r8  rA  rI  rP  rV  r[  r_  l    L#(S.,# 2F=EgJ    @}l`L\k)r   r   r  r  r$  r/  r9  rB  rJ  rQ  rW  r\  r`  rc  l   @i7Qt0" 8B3\f	   p1&S,)r   r   r  r  r%  r0  r:  rC  rK  rR  rX  r]  ra  rd  rf  l     @Y? }xl]R )r   r   r  r  r&  r1  r;  rD  rL  rS  rY  r^  rb  re  rg  rh  l   /"}+
    r   )rtol)r   r	   r   r
   r   astyperb   )r.   invh1invh2invh3invh4invh5invh17s          r0   r1   zTestInvHilbert.test_basic  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Ir2   c                     t        dd      D ]P  }t        |      }t        |      }t        |      }t	        |j                  |      t        |      d|z  d|z         R y )Nr&   r=   gV瞯<)r   rj  )r   r   r   r!   r   r   r   )r.   r   ro   brD   s        r0   test_inversezTestInvHilbert.test_inverse  sQ    q"A
A1A QAAEE!Hc!f57qI r2   N)rM   rN   rO   r1   rt  rP   r2   r0   r   r     s    ZJxJr2   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)
TestPascalr&   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&   r*   r=   r>   r   )r&   r&   r   r   )r&   r'   r&   r   )r&   r(   r(   r&   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   ry  )r	   r   r   r
   r.   r   symlows       r0   
check_casezTestPascal.check_case  sq    6!9c*6!'2C86!'2CEE:!&%"8#>!&%g"FL!&%g"FNr2   c                 T    | j                   D ]  \  }}}| j                  |||        y N)casesr~  r{  s       r0   
test_caseszTestPascal.test_cases  s&    ::KAsCOOAsC( &r2   c                 F    t        d      }|d   t        ddd      k(  sJ y )N2   )ra   ra   b   1   Tr   )r   r   r.   ps     r0   test_bigzTestPascal.test_big  s&    2JyDRt4444r2   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"   r'   ra   zn = 34err_msg#   rm   r4   zn = 35)r   r   itemr  s     r0   test_thresholdzTestPascal.test_threshold  se    
 2JQqvvb"~%qvvb"~xH2JRr2&166"b>(98Lr2   N)	rM   rN   rO   r   r  r~  r  r  r  rP   r2   r0   rv  rv    s     
EA3%L%!,'	
EAq6q6 Aq6q6 	 
E9  9 	  
E< !# $ <! "		#E,O)5Mr2   rv  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)ry  r   zn=%d  kind=%r exact=%rr  )r   r   rk  objectr   r	   r   )r   ry  r   ipr  es         r0   check_invpascalz'test_invpascal.<locals>.check_invpascal  se    qt5114u- IIf!!!((6"231c!f.F/0$.>/? 	@r2   )	symmetricrx  rz  )r&   r'   r+      )TF)   r  r  r  TrP   )r  kindsnsr   ry  r   s         r0   test_invpascalr    se    @ ,E	BD&4/ '  
 
BDAtT*  r2   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 )
Nr'   r4   r_   r   )scalerm   sqrtn)r   r&   r'   r(   r*   r+   r   r&      )r   r   r
   r   r   r   )mrp   r8   mxfxs        r0   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"%r2   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     ^@rn   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(   r'   r&   r   r&   )r+   r*   r(   r'   r&   r   )r   r   sizer	   r   r   r   )fdess     r0   test_fiedlerr    s    AAq"((RD6*+		!Q A
((&&&&&&( )C q#r2   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   r4   rm   rv   )r   rm   r5   )r   r&   r'   )r4   g      0g     U@g      fg     @Z@)g      @rw   r5   r4   )r   r   r  r	   r   r   r
   r   rc   rd   r   )fcs    r0   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.rx   g@r   g      g@)r   linspace)r.   r   cpxr8   s       r0   create_vectorz#TestConvolutionMatrix.create_vector2  s8    KKc1%Br{{4a000Ar2   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 integermatchr%   r   pytestr   rd   r    rh   s    r0   
test_bad_nz TestConvolutionMatrix.test_bad_n9  s(    ]]:-KLy!, MLL   4=c                 |    t        j                  t        d      5  t        dd       d d d        y # 1 sw Y   y xY w)Nzone-dimensionalr  r&   r*   r  rh   s    r0   test_bad_first_argz(TestConvolutionMatrix.test_bad_first_arg>  s(    ]]:->?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\)r  r*   r  rh   s    r0   test_empty_first_argz*TestConvolutionMatrix.test_empty_first_argC  s&    ]]:[9r1% :99r  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 ofr  r   r*   zinvalid argument)moder  rh   s    r0   test_bad_modez#TestConvolutionMatrix.test_bad_modeH  s+    ]]:-CDvq/AB EDDr  r  FTna)r&   r'   r   nvr  )Nr   validsamec                     | j                  ||      }| j                  ||      }|#t        j                  ||      }t        ||      }n$t        j                  |||      }t        |||      }||z  }	t	        ||	       y r  )r  r   convolver    r
   )
r.   r  r  r  r  ro   vy1Ay2s
             r0   test_against_numpy_convolvez1TestConvolutionMatrix.test_against_numpy_convolveM  s|    
 r3'r3'<Q"B"1b)AQ4(B"1b$/AU!"b)r2   N)rM   rN   rO   __doc__r  r  r  r  r  r  markparametrizer  rP   r2   r0   r  r  -  s    -
%
&
C
 [[UUDM2[[T9-[[T9-[[V%DE
* F . . 3
*r2   r  )9r  numpyr   r   r   r   r   r   numpy.testingr   r	   r
   r   r   rc   	scipy.fftr   scipy.specialr   scipy.linalgr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    numpy.linalgr!   r#   rR   rX   r[   rf   rs   rz   r   r   r   r   rv  r  r  r  r  r  rP   r2   r0   <module>r     s      0 0G G *  . . . . .
 ,+ ,+^A AA A/ /(( ( ( (,A4 A4H- -0E E&' 'eJ eJP0M 0Mf+:& : .* .*r2   