
    e!h.                        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 j0                  j3                  de      e j0                  j3                  d	g d
      e j0                  j3                  dddg      d                      Zd Zd Zd Zd Zd Zd Z d Z!e j0                  j3                  de      d        Z"e j0                  j3                  dg d      e j0                  j3                  dg d      e j0                  j3                  dg d      e j0                  j3                  dddg      d                             Z#d Z$y)    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         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                 m/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp_cossin.pytest_cossinr7      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/   r0   r1   s        r6   test_cossin_mixed_typesr<   H   s   
&
'C
5RZZHA"1"bqb&	2A2qr6"--@!"bqb&	!"ab&	# $IAr2
 77bmm###88rzz!!!88r}}$$$Aq2v{rxx6:::<r8   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	    r8   r6   %test_cossin_error_incorrect_subblocksrL   W   s?    	z)L	M 8A	Aq6:678 8 8s	   =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   rB   rC   rD   z
x21.*emptyr@   z
x22.*emptyrG   rK   r8   r6   !test_cossin_error_empty_subblocksrN   \   s    	z	6 !BB !	z	6 1AQFJ/01	z	6 4A	2z234	z	6 -A	A3+,- -! !1 14 4- -s/   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   )rH   rI   rJ   r	   r   r&   rK   r8   r6   &test_cossin_error_missing_partitioningrP   g   sw    	z)H	I %}  #$% 
z)I	J %}  #$% %% %% %s   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              (@rG   rK   r8   r6   test_cossin_error_non_iterablerR   o   s-    	z)H	I s  s   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   )rH   rI   rJ   r	   r$   r%   rK   r8   r6   test_cossin_error_non_squarerT   t   sA    	z)?	@ )rxx!Q!1a() ) )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.*rA   )	r$   r%   r   r&   r:   rH   rI   rJ   r	   )r.   s    r6   test_cossin_error_partitioningrW   y   s    
#2::6A	z)?	@ q!Q	z)?	@ q!Q	z)@	A q!R	z)?	@ q!Q     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lwvalsr2   thetau1r5   v1tv2tu1_2u2_2theta2v1t_2v2t_2s                         r6   test_cossin_separateru      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Ir8   r*   )r   rA   r!      r   r+   )r   r   rF         r,   c                    || k\  s|| k\  rt        j                  d       t        j                  j	                  d      }t        j                  | |      }t        j                  j                  ||j                         j                  z  t        j                  |       d       t        j                  |||d|      \  }}}|\  }	}
|\  }}|j                         j                  |j                         j                  }}t        j                  j                  |	|	j                         j                  z  t        j                  |      d       t        j                  j                  |
|
j                         j                  z  t        j                  | |z
        d       t        j                  j                  ||j                         j                  z  t        j                  |      d       t        j                  j                  ||j                         j                  z  t        j                  | |z
        d       t        j                  t        j                  |            }t        j                  t        j                   |            }t#        || |z
  || |z
        }t        j                  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                  j                  |||z  |j                         j                  z         t        j                  ||||      \  }} }!t        j                  j                  ||       t        j                  j                  ||        t        j                  j                  ||!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 y )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]    	
QAF;< ))

 2
3C!#.AJJq1668::~rvvayuE ==a1tyQLBSFBFBWWY[["'')++B JJrBGGIKK/GJJrBGGIKK/!5IJJrBGGIKK/GJJrBGGIKK/!5I 	sA
sAAqsAqsAJJq!tad{BFF1I6
 &&QQ
C
&&QA"
#C
&&QUA"
#C
&&QUAE"Q&
'C 	"b!A"b!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 ==a1	BLBSJJq"%JJq#&JJq#((*,,/ Ai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                  f   t         j                  j                  d      } | j                  dd      }| j                  dd      }| j                  ||z
  dz   |dz
        }t	        j
                  ||       }t        j                  |||d	
      \  }}}t        j                  ||z  |z  |      sJ y )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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      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   