
    ^Mh.                        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
 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"e j                            dg d          e j                            dg d          e j                            dg d          e j                            dddg          d                                                 Z#d Z$dS )    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           	         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                 e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_decomp_cossin.pytest_cossinr7      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/   r0   r1   s        r6   test_cossin_mixed_typesr<   H   s2   
&
'
'C
555RZHHHA"1"bqb&	2A2qrr6"-@@@!""bqb&	!""abb&	# $ $IAr2
 7bm####8rz!!!!8r}$$$$Aq2v{rx66::< < < < < <r8   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	    r8   r6   %test_cossin_error_incorrect_subblocksrL   W   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   rB   rC   rD   z
x21.*emptyr@   z
x22.*emptyrG   rK   r8   r6   !test_cossin_error_empty_subblocksrN   \   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   )rH   rI   rJ   r	   r   r&   rK   r8   r6   &test_cossin_error_missing_partitioningrP   g   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              (@rG   rK   r8   r6   test_cossin_error_non_iterablerR   o   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   )rH   rI   rJ   r	   r$   r%   rK   r8   r6   test_cossin_error_non_squarerT   t   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.*rA   )	r$   r%   r   r&   r:   rH   rI   rJ   r	   )r.   s    r6   test_cossin_error_partitioningrW   y   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lwvalsr2   thetau1r5   v1tv2tu1_2u2_2theta2v1t_2v2t_2s                         r6   test_cossin_separateru      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Ir8   r*   )r   rA   r!      r   r+   )r   r   rF         r,   c                    || k    s|| k    rt          j        d           t          j                            d          }t          j        | |          }t          j                            ||	                                j
        z  t          j        |           d           t          j        |||d|          \  }}}|\  }	}
|\  }}|	                                j
        |	                                j
        }}t          j                            |	|		                                j
        z  t          j        |          d           t          j                            |
|
	                                j
        z  t          j        | |z
            d           t          j                            ||	                                j
        z  t          j        |          d           t          j                            ||	                                j
        z  t          j        | |z
            d           t          j        t          j        |                    }t          j        t          j        |                    }t#          || |z
  || |z
            }t          j                            |d	z  |d	z  z   t          j        |                     t          j        t#          ||          |z
            }t          j        t#          || |z
            |z
            }t          j        t#          | |z
  |          |z
            }t          j        t#          | |z
  | |z
            |z
            }t          j        |	|
          }t          j        ||          }t          j        |	j        d
         |j        d         f          }t          j        ||          }||d |j        d         d |j        d
         f<   t          j        |	j        d
         |j        d         f          }|rt          j        ||          nt          j        | |           }|||j        d          d |j        d
          d f<   t          j        |
j        d
         |j        d         f          }|rt          j        | |           nt          j        ||          }|||j        d          d |j        d
          d f<   t          j        |
j        d
         |j        d         f          }t          j        ||          }||d |j        d         d |j        d
         f<   t          j        ||g||gg          }t          j                            |||z  |	                                j
        z             t          j        ||||          \  }} }!t          j                            ||           t          j                            ||            t          j                            ||!	                                j
                   t-          |||          }"t          j        |fddd|"\  }#}$}%|#d         j        dk    sJ |#d
         j        dk    sJ t          |$|d           t          |%d         |d         d           t          |%d
         |d
         d           t          j        |fddi|"\  }}&}'|j        dk    sJ t          |&| d           t          |'|!d           t          j        |fddd|"\  }#}$}%t          |#d         |#d         d           t          |#d
         |#d
         d           t          |$|d           |%d         j        dk    sJ |%d
         j        dk    sJ t          j        |fddi|"\  }}&}'t          ||d           t          |&| d           |'j        dk    sJ t          j        |fdddd|"\  }#}$}%|#d         j        dk    sJ |#d
         j        dk    sJ t          |$|d           |%d         j        dk    sJ |%d
         j        dk    sJ t          j        |fddd|"\  }}&}'|j        dk    sJ t          |&| d           |'j        dk    sJ d S )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      sD    	
QAFF;<<< )

 2
3
3C!#...AJq16688:~rvayyuEEE =a1tyQQQLBSFBFBWWYY["''))+B JrBGGIIK/GGGJrBGGIIK/!5IIIJrBGGIIK/GGGJrBGGIIK/!5III 	sA
sAAqsAqsAJq!tad{BF1II666
 &QQ

C
&QA"
#
#C
&QUA"
#
#C
&QUAE""Q&
'
'C 	"b!!A"b!!A (BHQK!-
.
.CS!$$D*.CAA&'
(BHQK!-
.
.C(1R6Q$$$v7H!cT7R7RD,0CA$*Q-()
(BHQK!-
.
.C*3R6aR#&&&9J1c9R9RD,0CA$*Q-()
(BHQK!-
.
.CS!$$D*.CAA&'
3*sCj)**A Jq!a%!&&((*"4555 =a1	BBBLBSJq"%%%Jq#&&&Jq#((**,/// Ai000F aJ$%JJ6JJIAr2Q4:Q4:B%((((BqE3q6....BqE3q6....a;;5;F;;IAr27fB%((((B%(((( aK$5KKFKKIAr2AaD!A$U++++AaD!A$U++++B%((((a5;&    a5;&    a<<E<V<<IAr2Ar&&&&B%((((8v a :$%).: :28: :IAr2Q4:Q4:B%((((a5;&    a5;&    aM5UMMfMMIAr27fB%((((8vr8   c                  z   t           j                            d          } |                     dd          }|                     dd          }|                     ||z
  dz   |dz
            }t	          j        ||           }t          j        |||d	
          \  }}}t          j        ||z  |z  |          sJ d S )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QUQYA&&A!#...A}Q!q5999HAq";q1urz1%%%%%%%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      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6 00011///00///00tUm44| | 54 10 10 21|~& & & & &r8   