
    tKgC                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZmZ ej                  ej                   fZej$                  ej&                  fZeez   Ze j,                  j/                  de      e j,                  j/                  dg d	      e j,                  j/                  d
ddg      d                      Zd Zd Zd Zd Zd Zd Zd Ze j,                  j/                  de      d        Z y)    N)default_rng)assert_allclose)_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           	         t        d      }| t        v r-t        j                  t	        j
                  ||      |       }n,t        j                  t        j
                  ||      |       }t        ||||      \  }}}	t        |||z  |	z  d|dz  t        j                  |       j                  z         |j                  | k(  sJ |j                  t        j                  |      j                  k(  sJ |	j                  | k(  sJ t        |d |d |f   |d ||d f   ||d d |f   ||d |d f   g|      \  }}}	t        |||z  |	z  d|dz  t        j                  |       j                  z         |j                  | k(  sJ |j                  t        j                  |      j                  k(  sJ |	j                  | k(  sJ t        |||d|	      \  }
}}t        ||dd
t        j                  |       j                  z         t        |	|dd
t        j                  |       j                  z         t        |||d|      \  }}}
t        ||dd
t        j                  |       j                  z         t        ||dd
t        j                  |       j                  z         t        |||dd|      \  }
}}
t        ||dd
t        j                  |       j                  z         y )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                 i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp_cossin.pytest_cossinr6      s     &
'CHH]&&qs;6JHH[__QS9Hq!Q!*,IAr2Aq2v{!C%8H8L8L2LM77f88rwwqz'''''88v"1"bqb&	1RaRV9aBQBi12qr6C!*,IAr2Aq2v{!C%8H8L8L2LM77f88rwwqz'''''88vAq#(#,.KAsC B"2bhhv.>.B.B+BCB"2bhhv.>.B.B+BC1a#("+-JBQ ArBHHV,<,@,@)@AB"2bhhv.>.B.B+BCq!Q!&"'!*,IAsA B"2bhhv.>.B.B+BC    c            	         t        d      } t        j                  t        j                  d|       t        j
                        }t        |d dd df   t        j                  |d ddd f   t        j                        |dd d df   |dd dd f   g      \  }}}|j                  t        j                  k(  sJ |j                  t        j
                  k(  sJ |j                  t        j                  k(  sJ t        |||z  |z  ddt        j                  t        j                        j                  z         y )	Nl   ; F0 r   r   r   r   r   g     @r   )r   r#   r$   r   r%   float64r   
complex128r   r   r&   r'   )r,   r-   r.   r/   r0   s        r5   test_cossin_mixed_typesr;   G   s   
&
'C
5RZZHA"1"bqb&	2A2qr6"--@!"bqb&	!"ab&	# $IAr2
 77bmm###88rzz!!!88r}}$$$Aq2v{rxx6:::<r7   c                      t        j                  t        d      5  t        ddgg dddgg df       d d d        y # 1 sw Y   y xY w)	Nz!be due to missing p, q arguments.matchr   r   r   r               	   r    pytestraises
ValueErrorr    r7   r5   %test_cossin_error_incorrect_subblocksrK   V   s7    	z)L	MA	Aq6:67 
N	M	Ms	   =Ac                     t        j                  t        d      5  t        g g g g f       d d d        t        j                  t        d      5  t        ddgg ddgg df       d d d        t        j                  t        d	      5  t        ddgg d
g g df       d d d        t        j                  t        d      5  t        ddgg d
dgg f       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY w)Nz
x11.*emptyr=   z
x12.*emptyr   r   rA   rB   rC   z
x21.*emptyr?   z
x22.*emptyrF   rJ   r7   r5   !test_cossin_error_empty_subblocksrM   [   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+C7DC(+C47D Dc                  <   t        j                  t        d      5  t        t	        j
                  d             d d d        t        j                  t        d      5  t        t	        j
                  d             d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nz.*exactly four arrays.* got 2r=   r   z.*might be due to missing p, qr   )rG   rH   rI   r   r   r%   rJ   r7   r5   &test_cossin_error_missing_partitioningrO   f   sk    	z)H	I}  #$ 
J 
z)I	J}  #$ 
K	J 
J	I 
K	Js   BBBBc                  z    t        j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Nzcontaining the subblocks of Xr=   y              (@rF   rJ   r7   r5   test_cossin_error_non_iterablerQ   n   s%    	z)H	Is 
J	I	Is   1:c                      t        j                  t        d      5  t        t	        j
                  ddgg      dd       d d d        y # 1 sw Y   y xY w)Nzonly supports squarer=   r   r   )rG   rH   rI   r   r#   r$   rJ   r7   r5   test_cossin_error_non_squarerS   s   s9    	z)?	@rxx!Q!1a( 
A	@	@s   $A		Ac                  \   t        j                  t        j                  d      t         j                        } t        j                  t        d      5  t        | dd       d d d        t        j                  t        d      5  t        | dd       d d d        t        j                  t        d      5  t        | dd	       d d d        t        j                  t        d
      5  t        | dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   SxY w# 1 sw Y   y xY w)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.*r@   )	r#   r$   r   r%   r9   rG   rH   rI   r   )r-   s    r5   test_cossin_error_partitioningrV   x   s    
#2::6A	z)?	@q!Q 
A	z)?	@q!Q 
A	z)@	Aq!R 
B	z)?	@q!Q 
A	@ 
A	@	@	@	A	A	@	@s0   C>D
6D'D">D
DD"D+c           	         t        d      }d\  }}}| t        v rdnd}|dk(  rt        j                  ||      nt	        j                  ||      }t        j                  ||       }t        |dz   |dz   f|g      \  }}t        ||||      }	|dk(  rd	|	int        t        d	d
g|	            }
 ||d |d |f   |d ||d f   ||d d |f   ||d |d f   fi |
^ }}}}}}}t        |||d      \  \  }}}\  }}t        ||ddt        j                  |       j                  z         t        ||ddt        j                  |       j                  z         t        ||ddt        j                  |       j                  z         t        ||ddt        j                  |       j                  z         t        ||ddt        j                  |       j                  z         y )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lwvalsr1   thetau1r4   v1tv2tu1_2u2_2theta2v1t_2v2t_2s                         r5   test_cossin_separatert      s   
&
'CGAq!K'$TC14	-4 
&!AucK.? @1#FHC31a(E!$gu$sG<D<F;@8B 3CF
 	Abqb"1"fIq!QRy!ABF)Qqr12vYA&A #Qr2sC ,2!Q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Ir7   )!rG   numpyr#   numpy.randomr   numpy.testingr   scipy.linalg.lapackr   scipy.statsr   r   scipy.linalgr   r	   float32r9   rb   	complex64r:   r"   DTYPESmarkparametrizer6   r;   rK   rM   rO   rQ   rS   rV   rt   rJ   r7   r5   <module>r      s      $ ) . 2 1zz2::&,,.	~	% 6* tUm4&D 5 +&DR<8
-%
)
	 6*J +Jr7   