o
    Ö­jÎ.  ã                   @   sd  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e j de¡e j d	g d
¢¡e j dddg¡dd„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!e j de¡dd„ ƒZ"e j d g d!¢¡e j d"g d#¢¡e j d$g d#¢¡e j dddg¡d%d&„ ƒƒƒƒZ#d'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                 C   s@  t dƒ}| tv rtjtj||d�| d�}ntjtj||d�| d�}t||||d�\}}}	t||| |	 d|d t 	| ¡j
 d� |j| ksGJ ‚|jt |¡jksRJ ‚|	j| ksYJ ‚t|d |…d |…f |d |…|d …f ||d …d |…f ||d …|d …f g|d�\}}}	t||| |	 d|d t 	| ¡j
 d� |j| ks¡J ‚|jt |¡jks¬J ‚|	j| ks³J ‚t|||d|d	�\}
}}t||dd
t 	| ¡j
 d� t|	|dd
t 	| ¡j
 d� t|||d|d�\}}}
t||dd
t 	| ¡j
 d� t||dd
t 	| ¡j
 d� t|||dd|d�\}
}}
t||dd
t 	| ¡j
 d� 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Úu2© r4   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/linalg/tests/test_decomp_cossin.pyÚtest_cossin   sH   ÿ(Lÿ(þþý r6   c                  C   sÞ   t dƒ} tjtjd| d�tjd�}t|d d…d d…f tj|d d…dd …f tjd�|dd …d d…f |dd …dd …f gƒ\}}}|jtjksJJ ‚|jtjksRJ ‚|jtjksZJ ‚t	||| | ddt 
tj¡j d� 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.   r/   r4   r4   r5   Útest_cossin_mixed_typesH   s   ý
ÿr9   c                   C   sT   t jtdd�� tddgg d¢ddgg d¢fƒ W d   ƒ d S 1 s#w   Y  d S )	Nz!be due to missing p, q arguments.©Úmatchr   r   ©r   r   é   é   é   ©é   é	   r   ©ÚpytestÚraisesÚ
ValueErrorr   r4   r4   r4   r5   Ú%test_cossin_error_incorrect_subblocksW   s   ""ÿrG   c                   C   s   t jtdd�� tg g g g fƒ W d   ƒ n1 sw   Y  t jtdd�� tddgg ddgg d¢fƒ W d   ƒ n1 s?w   Y  t jtd	d�� tddgg d
¢g g d¢fƒ W d   ƒ n1 sdw   Y  t jtdd�� tddgg d
¢dgg fƒ W d   ƒ d S 1 s‰w   Y  d S )Nz
x11.*emptyr:   z
x12.*emptyr   r   r>   r?   r@   z
x21.*emptyr<   z
x22.*emptyrC   r4   r4   r4   r5   Ú!test_cossin_error_empty_subblocks\   s   ÿÿÿ"ÿrH   c                   C   s~   t jtdd�� tt d¡ƒ W d   ƒ n1 sw   Y  t jtdd�� tt d¡ƒ W d   ƒ d S 1 s8w   Y  d S )Nz.*exactly four arrays.* got 2r:   r   z.*might be due to missing p, qr   )rD   rE   rF   r   r   r$   r4   r4   r4   r5   Ú&test_cossin_error_missing_partitioningg   s   ÿ"ÿrI   c                   C   s<   t jtdd�� tdƒ W d   ƒ d S 1 sw   Y  d S )Nzcontaining the subblocks of Xr:   y              (@rC   r4   r4   r4   r5   Útest_cossin_error_non_iterableo   s   
"ÿrJ   c                   C   sL   t jtdd�� tt ddgg¡ddƒ W d   ƒ d S 1 sw   Y  d S )Nzonly supports squarer:   r   r   )rD   rE   rF   r   r"   r#   r4   r4   r4   r5   Útest_cossin_error_non_squaret   s   "ÿrK   c                  C   s  t jt d¡t jd�} tjtdd�� t| ddƒ W d   ƒ n1 s#w   Y  tjtdd�� t| ddƒ W d   ƒ n1 s@w   Y  tjtdd�� t| dd	ƒ W d   ƒ n1 s]w   Y  tjtd
d�� t| ddƒ W d   ƒ d S 1 s{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$   r7   rD   rE   rF   r   )r,   r4   r4   r5   Útest_cossin_error_partitioningy   s   ÿÿÿ"ÿrM   c                 C   s´  t dƒ}d\}}}| tv rdnd}|dkrtj||d�ntj||d�}tj|| d�}t|d |d f|gƒ\}}t||||ƒ}	|dkrGd	|	int	t
d	d
g|	ƒƒ}
||d |…d |…f |d |…|d …f ||d …d |…f ||d …|d …f fi |
¤Ž�^ }}}}}}}t|||dd�\\}}}\}}t||ddt | ¡j d� t||ddt | ¡j d� t||ddt | ¡j d� t||ddt | ¡j d� t||ddt | ¡j d� 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Úlwvalsr0   ÚthetaÚu1r3   Úv1tÚv2tÚu1_2Úu2_2Útheta2Úv1t_2Úv2t_2r4   r4   r5   Útest_cossin_separate…   s,   
ÿÿþTÿ rj   r(   )r   r=   r   é   r   r)   )r   r   rB   é   é   r*   c           (      C   s&  || ks|| krt  d¡ tj d¡}tj| |d�}tjj|| 	¡ j
 t | ¡dd� tj|||d|d�\}}}|\}	}
|\}}| 	¡ j
| 	¡ j
}}tjj|	|	 	¡ j
 t |¡dd� tjj|
|
 	¡ j
 t | | ¡dd� tjj|| 	¡ j
 t |¡dd� tjj|| 	¡ j
 t | | ¡dd� t t |¡¡}t t |¡¡}t|| | || | ƒ}tj |d	 |d	  t |¡¡ t t||ƒ| ¡}t t|| | ƒ| ¡}t t| | |ƒ| ¡}t t| | | | ƒ| ¡}t |	|
¡}t ||¡}t |	jd
 |jd f¡}t ||¡}||d |jd …d |jd
 …f< t |	jd
 |jd f¡}|�r3t ||¡nt | | ¡}|||jd  d …|jd
  d …f< t |
jd
 |jd f¡}|�ret | | ¡nt ||¡}|||jd  d …|jd
  d …f< t |
jd
 |jd f¡}t ||¡}||d |jd …d |jd
 …f< t ||g||gg¡}tj ||| | 	¡ j
 ¡ tj||||d�\}} }!tj ||¡ tj || ¡ tj ||! 	¡ j
¡ t|||d�}"tj|fdddœ|"¤Ž\}#}$}%|#d jdk�sýJ ‚|#d
 jdk�sJ ‚t|$|dd� t|%d |d dd� t|%d
 |d
 dd� tj|fddi|"¤Ž\}}&}'|jdk�s:J ‚t|&| dd� t|'|!dd� tj|fdddœ|"¤Ž\}#}$}%t|#d |#d dd� t|#d
 |#d
 dd� t|$|dd� |%d jdk�s~J ‚|%d
 jdk�sˆJ ‚tj|fddi|"¤Ž\}}&}'t||dd� t|&| d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� |%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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*   rW   r   g‚vIhÂ%<=r   r   r   )r)   r*   r   F)rW   r   )r   r   )r   r   )rW   r    r    )rW   r   r    )r   r    )rD   Úskipr"   Úrandomr   r   r$   Útestingr   ÚconjÚTÚeyer   r   ÚdiagÚcosÚsinÚminÚ
block_diagÚzerosÚshapeÚblockrY   )(r(   r)   r*   r   r+   r\   Úu0Úcs0Úvh0rb   r3   Úv1Úv2ÚCÚSÚrÚI11ÚI12ÚI21ÚI22ÚUÚVÚQ11ÚIC11ÚQ12ÚSI12ÚQ21ÚSI21ÚQ22ÚIC22ÚQÚU0ÚCS0ÚVh0Úkwargsr-   r.   r/   ÚCSÚVhr4   r4   r5   Útest_properties¡   s˜   
""&"&  "$"$ ÿÿr™   c                  C   s€   t j d¡} | jddd�}|  dd¡}|  || d |d ¡}tj|| d�}tj|||d	d
�\}}}t  || | |¡s>J ‚d S )Nl   u\ŠIãwr   r   )Úhighr   r   r   r   F)r)   r*   rW   )	r"   ro   r   Úintegersr   r$   r   r   Úallclose)r+   r(   r)   r*   r\   rˆ   ÚDÚVtr4   r4   r5   Útest_indexing_bug_gh19365$  s   rŸ   )%rD   Únumpyr"   Únumpy.randomr   Únumpy.testingr   Úscipyr   Úscipy.linalg.lapackr   Úscipy.statsr   r   Úscipy.linalgr   r	   Úfloat32r7   rX   Ú	complex64r8   r!   ÚDTYPESÚmarkÚparametrizer6   r9   rG   rH   rI   rJ   rK   rM   rj   r™   rŸ   r4   r4   r4   r5   Ú<module>   s@    ÿ)
