
    UgC                        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                            de          e j                            dg d	          e j                            d
ddg          d                                     Zd Zd Zd Zd Zd Zd Zd Ze j                            de          d             Z dS )    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             d S )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                 d/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/linalg/tests/test_decomp_cossin.pytest_cossinr6      s1     &
'
'CH]&qs;;;6JJJH[_QS999HHHq!Q!*, , ,IAr2Aq2v{!C%8H8H8L2LMMMM7f8rwqzz'''''8v"1"bqb&	1RaRV9aBQBi122qrr6C!*, , ,IAr2Aq2v{!C%8H8H8L2LMMMM7f8rwqzz'''''8vAq#(#,. . .KAsC B"2bhv.>.>.B+BCCCCB"2bhv.>.>.B+BCCCC1a#("+- - -JBQ ArBHV,<,<,@)@AAAAB"2bhv.>.>.B+BCCCCq!Q!&"'!*, , ,IAsA B"2bhv.>.>.B+BCCCCCC    c            	      Z   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             d S )	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   s2   
&
'
'C
555RZHHHA"1"bqb&	2A2qrr6"-@@@!""bqb&	!""abb&	# $ $IAr2
 7bm####8rz!!!!8r}$$$$Aq2v{rx66::< < < < < <r7   c                      t          j        t          d          5  t          ddgg dddgg df           d d d            d S # 1 swxY w Y   d S )	Nz!be due to missing p, q arguments.matchr   r   r   r               	   r    pytestraises
ValueErrorr    r7   r5   %test_cossin_error_incorrect_subblocksrK   V   s    	z)L	M	M	M 8 8A			Aq6:::67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AA	A	c                  Z   t          j        t          d          5  t          g g g g f           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddgg ddgg df           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          ddgg d
g g df           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddgg d
dgg f           d d d            d S # 1 swxY w Y   d S )Nz
x11.*emptyr=   z
x12.*emptyr   r   rA   rB   rC   z
x21.*emptyr?   z
x22.*emptyrF   rJ   r7   r5   !test_cossin_error_empty_subblocksrM   [   s7   	z	6	6	6 ! !BB   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z	6	6	6 1 1AQFJJJ/0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	z	6	6	6 4 4A			2zzz23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	6	6	6 - -A			A3+,,,- - - - - - - - - - - - - - - - - -sE   <A A "BBB.CCC:D  D$'D$c                  X   t          j        t          d          5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          t	          j        d                     d d d            d S # 1 swxY w Y   d S )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   s   	z)H	I	I	I % %} ##$$$% % % % % % % % % % % % % % % 
z)I	J	J	J % %} ##$$$% % % % % % % % % % % % % % % % % %s#   "A

AA0"BB#&B#c                      t          j        t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nzcontaining the subblocks of Xr=   y              (@rF   rJ   r7   r5   test_cossin_error_non_iterablerQ   n   s    	z)H	I	I	I  s                 s   9= =c                      t          j        t          d          5  t          t	          j        ddgg          dd           d d d            d S # 1 swxY w Y   d S )Nzonly supports squarer=   r   r   )rG   rH   rI   r   r#   r$   rJ   r7   r5   test_cossin_error_non_squarerS   s   s    	z)?	@	@	@ ) )rx!Q!!1a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   'AAAc                     t          j        t          j        d          t           j                  } t          j        t          d          5  t          | dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | dd	           d d d            n# 1 swxY w Y   t          j        t          d
          5  t          | dd           d d d            d S # 1 swxY w Y   d S )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:666A	z)?	@	@	@  q!Q              	z)?	@	@	@  q!Q              	z)@	A	A	A  q!R              	z)?	@	@	@  q!Q                 sH   A,,A03A0B00B47B4C44C8;C8D99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             d S )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      sV   
&
'
'CGAq!K''$$TC14	-	-	-	-444 
&!!!AucK.? @1#FFHC31a((E!$gu$sG<D<F;@8B 8B 3C 3CF
 	Abqb"1"fIq!QRRy!ABBF)Qqrr122vYAA&AA #Qr2sC ,2!QD+I+I+I(LT4&.5%D"2Brx/?/?/C,CDDDDD"2Brx/?/?/C,CDDDDE3Rb&1A1A1E.EFFFFE3Rb&1A1A1E.EFFFFFEBHV4D4D4H1HIIIII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 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1z2:&,.	~	% 6**    tUm44&D &D 54  +*&DR< < <8 8 8
- - -% % %  
) ) )
	 	 	 6**J J +*J J Jr7   