
    (ph.                        S SK r S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJr  S SKJrJr  \R"                  \R$                  4r\R(                  \R*                  4r\\-   r\ R0                  R3                  S\5      \ R0                  R3                  S	/ S
Q5      \ R0                  R3                  SSS/5      S 5       5       5       rS rS rS rS rS rS r S r!\ R0                  R3                  S\5      S 5       r"\ R0                  R3                  S/ SQ5      \ R0                  R3                  S/ SQ5      \ R0                  R3                  S/ SQ5      \ R0                  R3                  SSS/5      S 5       5       5       5       r#S r$g)    N)default_rng)assert_allclose)linalg)_compute_lwork)ortho_groupunitary_group)cossinget_lapack_funcsdtype_zm, p, q)
)      r   )   r   r   )r   r   r   )   r   r   )r   r   r   )(         )r      r   )r   r   r   )d   2   r   )r   r   r   	swap_signTFc           	         [        S5      nU [        ;   a(  [        R                  " [        R
                  " XS9U S9nO'[        R                  " [        R
                  " XS9U S9n[        XbUUS9u  pxn	[        XgU-  U	-  SUS-  [        R                  " U 5      R                  -  S9  UR                  U :X  d   eUR                  [        R                  " U5      R                  :X  d   eU	R                  U :X  d   e[        US U2S U24   US U2US 24   XbS 2S U24   XbS 2US 24   /US9u  pxn	[        XgU-  U	-  SUS-  [        R                  " U 5      R                  -  S9  UR                  U :X  d   eUR                  [        R                  " U5      R                  :X  d   eU	R                  U :X  d   e[        XbUSUS	9u  pn[        XSS
[        R                  " U 5      R                  -  S9  [        XSS
[        R                  " U 5      R                  -  S9  [        XbUSUS9u  pn
[        X}SS
[        R                  " U 5      R                  -  S9  [        XSS
[        R                  " U 5      R                  -  S9  [        XbUSSUS9u  pn
[        XSS
[        R                  " U 5      R                  -  S9  g )Nl   I9F0 random_statedtype)r           g     @@rtolatolF)	compute_ur   
   )
compute_vhr   )r    r"   r   )r   COMPLEX_DTYPESnparrayr   rvsr   r	   r   finfoepsr   real)r   mpqr   rngxucsvh_cs2vh2u2s                 X/var/www/html/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_decomp_cossin.pytest_cossinr7      s     &
'CHH]&&q;6JHH[__Q9HqQ!*,IA2A2v{!C%8H8L8L2LM77f88rwwqz'''''88v"1"bqb&	1RaRV9aBQBi2qr6C!*,IA2A2v{!C%8H8L8L2LM77f88rwwqz'''''88vq#(#,.KAC B"2bhhv.>.B.B+BCB"2bhhv.>.B.B+BCa#("+-JBQ ABHHV,<,@,@)@AB"2bhhv.>.B.B+BCqQ!&"'!*,IAA B"2bhhv.>.B.B+BC    c            	      t   [        S5      n [        R                  " [        R                  " SU S9[        R
                  S9n[        US S2S S24   [        R                  " US S2SS 24   [        R                  S9USS 2S S24   USS 2SS 24   /5      u  p#nUR                  [        R                  :X  d   eUR                  [        R
                  :X  d   eUR                  [        R                  :X  d   e[        XU-  U-  SS[        R                  " [        R                  5      R                  -  S9  g )	Nl   ; F0 r   r   r   r   r   g     @r   )r   r$   r%   r   r&   float64r	   
complex128r   r   r'   r(   )r-   r.   r/   r0   r1   s        r6   test_cossin_mixed_typesr<   H   s   
&
'C
5RZZHA"1"bqb&	2A2qr6"--@!"bqb&	!"ab&	# $IA2
 77bmm###88rzz!!!88r}}$$$A2v{rxx6:::<r8   c                      [         R                  " [        SS9   [        SS// SQSS// SQ45        S S S 5        g ! , (       d  f       g = f)	Nz!be due to missing p, q arguments.matchr   r   r   r               	   r!   pytestraises
ValueErrorr	    r8   r6   %test_cossin_error_incorrect_subblocksrL   W   s7    	z)L	MA	Aq6:67 
N	M	Ms	   ;
A	c                  6   [         R                  " [        SS9   [        / / / / 45        S S S 5        [         R                  " [        SS9   [        SS// SS// SQ45        S S S 5        [         R                  " [        S	S9   [        SS// S
Q/ / SQ45        S S S 5        [         R                  " [        SS9   [        SS// S
QS// 45        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ng= f! , (       d  f       g = f)Nz
x11.*emptyr>   z
x12.*emptyr   r   rB   rC   rD   z
x21.*emptyr@   z
x22.*emptyrG   rK   r8   r6   !test_cossin_error_empty_subblocksrN   \   s    	z	6BB  
7	z	6AQFJ/0 
7	z	6A	2z23 
7	z	6A	A3+, 
7	6 
7	6	6	6	6	6	6	6s/   CC(C99D

C%(
C69
D

Dc                  L   [         R                  " [        SS9   [        [        R
                  " S5      5        S S S 5        [         R                  " [        SS9   [        [        R
                  " S5      5        S S S 5        g ! , (       d  f       NP= f! , (       d  f       g = f)Nz.*exactly four arrays.* got 2r>   r   z.*might be due to missing p, qr   )rH   rI   rJ   r	   r   r&   rK   r8   r6   &test_cossin_error_missing_partitioningrP   g   sk    	z)H	I}  #$ 
J 
z)I	J}  #$ 
K	J 
J	I 
K	Js    B B
B
B#c                      [         R                  " [        SS9   [        S5        S S S 5        g ! , (       d  f       g = f)Nzcontaining the subblocks of Xr>   y              (@rG   rK   r8   r6   test_cossin_error_non_iterablerR   o   s%    	z)H	Is 
J	I	Is   /
=c                      [         R                  " [        SS9   [        [        R
                  " SS//5      SS5        S S S 5        g ! , (       d  f       g = f)Nzonly supports squarer>   r   r   )rH   rI   rJ   r	   r$   r%   rK   r8   r6   test_cossin_error_non_squarerT   t   s9    	z)?	@rxx!Q!1a( 
A	@	@s   %A
Ac                  r   [         R                  " [        R                  " S5      [         R                  S9n [
        R                  " [        SS9   [        U SS5        S S S 5        [
        R                  " [        SS9   [        U SS5        S S S 5        [
        R                  " [        SS9   [        U SS	5        S S S 5        [
        R                  " [        S
S9   [        U SS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N~= f! , (       d  f       N`= f! , (       d  f       g = f)Nr   r   zinvalid p=0.*0<p<4.*r>   r   r   zinvalid p=4.*0<p<4.*zinvalid q=-2.*0<q<4.*zinvalid q=5.*0<q<4.*rA   )	r$   r%   r   r&   r:   rH   rI   rJ   r	   )r.   s    r6   test_cossin_error_partitioningrW   y   s    
#2::6A	z)?	@q!Q 
A	z)?	@q!Q 
A	z)@	Aq!R 
B	z)?	@q!Q 
A	@ 
A	@	@	@	A	A	@	@s0   C5 D/DD(5
D
D
D%(
D6c           	         [        S5      nSu  p#nU [        ;   a  SOSnUS:X  a  [        R                  " X!S9O[        R                  " X!S9n[
        R                  " X`S9n[        US-   US-   4U/5      u  px[        XX45      n	US:X  a  S	U	0O[        [        S	S
/U	5      5      n
U" US U2S U24   US U2US 24   XcS 2S U24   XcS 2US 24   40 U
D6Gt ppnnn[        XcUSS9u  u  nnnu  nn[        UUSS[
        R                  " U 5      R                  -  S9  [        UUSS[
        R                  " U 5      R                  -  S9  [        UUSS[
        R                  " U 5      R                  -  S9  [        UUSS[
        R                  " U 5      R                  -  S9  [        UUSS[
        R                  " U 5      R                  -  S9  g )Nl   8^^F0 )b   %   =   orunr   r   csd	csd_lworklworklrworkT)separater   r!   r   )r   REAL_DTYPESr   r&   r   r$   r%   r
   r   dictzipr	   r   r'   r(   )r   r-   r*   r+   r,   pfxXdrvdlwlwvallwvalsr2   thetau1r5   v1tv2tu1_2u2_2theta2v1t_2v2t_2s                         r6   test_cossin_separateru      s   
&
'CGA!K'$TC14	-4 
!AucK.? @1#FHC31(E!$gu$sG<D<F;@8B 3CF
 	Abqb"1"fIq!QRy!BF)Qr12vYA&A #QrsC ,2!D+I(LT4&.5%D"2Brxx/?/C/C,CDD"2Brxx/?/C/C,CDE3Rb&1A1E1E.EFE3Rb&1A1E1E.EFFEBHHV4D4H4H1HIr8   r*   )r   rA   r!      r   r+   )r   r   rF         r,   c                    X:  d  X :  a  [         R                  " S5        [        R                  R	                  S5      n[
        R                  " XS9n[        R                  R                  XUR                  5       R                  -  [        R                  " U 5      SS9  [        R                  " XQUSUS9u  pgnUu  pUu  pUR                  5       R                  UR                  5       R                  p[        R                  R                  XR                  5       R                  -  [        R                  " U5      SS9  [        R                  R                  XR                  5       R                  -  [        R                  " X-
  5      SS9  [        R                  R                  XR                  5       R                  -  [        R                  " U5      SS9  [        R                  R                  XR                  5       R                  -  [        R                  " X-
  5      SS9  [        R                  " [        R                  " U5      5      n[        R                  " [        R                   " U5      5      n[#        XU-
  X U-
  5      n[        R                  R                  US	-  US	-  -   [        R                  " U5      5        [        R                  " [#        X5      U-
  5      n[        R                  " [#        XU-
  5      U-
  5      n[        R                  " [#        X-
  U5      U-
  5      n[        R                  " [#        X-
  X-
  5      U-
  5      n[        R$                  " X5      n[        R$                  " X5      n[        R&                  " U	R(                  S
   UR(                  S   45      n[        R$                  " UU5      nUUS UR(                  S   2S UR(                  S
   24'   [        R&                  " U	R(                  S
   UR(                  S   45      nU(       a  [        R$                  " UU5      O[        R$                  " U* U* 5      nUUUR(                  S   * S 2UR(                  S
   * S 24'   [        R&                  " U
R(                  S
   UR(                  S   45      nU(       a  [        R$                  " U* U* 5      O[        R$                  " UU5      nUUUR(                  S   * S 2UR(                  S
   * S 24'   [        R&                  " U
R(                  S
   UR(                  S   45      n[        R$                  " UU5      nUUS UR(                  S   2S UR(                  S
   24'   [        R*                  " UU/UU//5      n[        R                  R                  UUU-  UR                  5       R                  -  5        [        R                  " XQX#S9u  nn n![        R                  R                  UU5        [        R                  R                  UU 5        [        R                  R                  UU!R                  5       R                  5        [-        XUS9n"[        R                  " U4SSS.U"D6u  n#n$n%U#S   R(                  S:X  d   eU#S
   R(                  S:X  d   e[        U$USS9  [        U%S   US   SS9  [        U%S
   US
   SS9  [        R                  " U4SS0U"D6u  nn&n'UR(                  S:X  d   e[        U&U SS9  [        U'U!SS9  [        R                  " U4SSS.U"D6u  n#n$n%[        U#S   U#S   SS9  [        U#S
   U#S
   SS9  [        U$USS9  U%S   R(                  S:X  d   eU%S
   R(                  S:X  d   e[        R                  " U4SS0U"D6u  nn&n'[        UUSS9  [        U&U SS9  U'R(                  S:X  d   e[        R                  " U4SSSS.U"D6u  n#n$n%U#S   R(                  S:X  d   eU#S
   R(                  S:X  d   e[        U$USS9  U%S   R(                  S:X  d   eU%S
   R(                  S:X  d   e[        R                  " U4SSS.U"D6u  nn&n'UR(                  S:X  d   e[        U&U SS9  U'R(                  S:X  d   eg )Nz%`0 < p < m` and `0 < q < m` must holdl   ];)$r   gV瞯<)r   T)r+   r,   rb   r   gvIh%<=r   r   r   )r+   r,   r   F)rb   r    )r   r   )r   r    )rb   r"   r"   )rb   r    r"   )r    r"   )rH   skipr$   randomr   r   r&   testingr   conjTeyer   r	   diagcossinmin
block_diagzerosshapeblockrd   )(r*   r+   r,   r   r-   rg   u0cs0vh0rm   r5   v1v2CSrI11I12I21I22UVQ11IC11Q12SI12Q21SI21Q22IC22QU0CS0Vh0kwargsr/   r0   r1   CSVhs(                                           r6   test_propertiesr      s'    	
AF;< ))

 2
3C!.AJJq668::~rvvayuE ==1tyQLBSFBFBWWY[["'')++ JJrGGIKK/GJJrGGIKK/5IJJrGGIKK/GJJrGGIKK/5I 	sA
sAAsAsAJJq!tad{BFF1I6
 &&QQ
C
&&QA"
#C
&&QUA"
#C
&&QUAE"Q&
'C 	"!A"!A ((BHHQK!-
.CS!$D*.CAA&'
((BHHQK!-
.C(16Q$v7H7H!cT7RD,0CA$**Q-()
((BHHQK!-
.C*36aR#&9J9J1c9RD,0CA$**Q-()
((BHHQK!-
.CS!$D*.CAA&'
3*sCj)*A JJq!a%!&&(**"45 ==1BLBSJJq"%JJq#&JJq#((*,,/ Ai0F aJ$%J6JIAr2Q4::Q4::B%(BqE3q6.BqE3q6.a;5;F;IAr277fB%(B%( aK$5KFKIAr2AaD!A$U+AaD!A$U+B%(a5;;&   a5;;&   a<E<V<IAr2Ar&B%(88v a :$%).:28:IAr2Q4::Q4::B%(a5;;&   a5;;&   aM5UMfMIAr277fB%(88vr8   c                  Z   [         R                  R                  S5      n U R                  SSS9nU R                  SS5      nU R                  X-
  S-   US-
  5      n[        R
                  " XS9n[        R                  " XBUS	S
9u  pVn[         R                  " XV-  U-  U5      (       d   eg )Nl   u\Iwr   r   )highr!   r   r   r   F)r+   r,   rb   )	r$   r{   r   integersr   r&   r   r	   allclose)r-   r*   r+   r,   rg   r   DVts           r6   test_indexing_bug_gh19365r   $  s    
))


/CRc"ARAQUQYA&A!.A}}Qq59HA";;qurz1%%%%r8   )%rH   numpyr$   numpy.randomr   numpy.testingr   scipyr   scipy.linalg.lapackr   scipy.statsr   r   scipy.linalgr	   r
   float32r:   rc   	complex64r;   r#   DTYPESmarkparametrizer7   r<   rL   rN   rP   rR   rT   rW   ru   r   r   rK   r8   r6   <module>r      sy     $ )  . 2 1zz2::&,,.	~	% 6* tUm4&D 5 +&DR<8
-%
)
	 6*J +J6 01/0/0tUm4| 5 1 1 2|~&r8   