o
    h&                     @   s   d dl Z d dlZd dlmZ d dl mZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ G dd	 d	ZG d
d dZG dd dZG dd dZdS )    N)assert_array_almost_equal)raises)array	transposedot	conjugate
zeros_likeempty)random)choleskycholesky_bandedcho_solve_banded
cho_factor	cho_solve)assert_no_overwritec                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dd Zej	deeejeejgej	deeejeejgdd ZdS )TestCholeskyc                 C   s^   g dg dg dg}t |}ttt||| t|}t|t|}tt |dd| d S )N         r   	   r   r   r         lowerr   r   r   r   selfac r"   [/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/linalg/tests/test_decomp_cholesky.pytest_simple   s   zTestCholesky.test_simplec                 C   sd   g dg dg dg}t |dd}ttt||| t|}t|t|}tt |ddd| d S )Nr   r   r   Fcheck_finiter   r   r&   r   r   r"   r"   r#   test_check_finite   s   zTestCholesky.test_check_finitec                 C   s   t g dg dg dg}ttt||}t|}ttt||}t|| t|}t|tt|}tt|dd| d S )N)y      @      ?y      @      @   )r   y       @       @y       @      @)r   r   y      @      @r   r   )r   r   r   r   r   r   )r   mr    r!   a1r"   r"   r#   test_simple_complex    s   
z TestCholesky.test_simple_complexc                 C   s   d}t dD ]H}t||g}t |D ]}dd|||f   |||f< qtt||}t|}tt||}t|| t|}t|t|}tt|dd| qd S )N   r   皙?r   r   )ranger
   r   r   r   r   r   nkr*   ir    r!   r+   r"   r"   r#   test_random*   s   
zTestCholesky.test_randomc                 C   s   d}t dD ]X}t||gdt||g  }t |D ]}ddt|||f   |||f< qttt||}t|}ttt||}t|| t|}t|tt|}tt|dd| qd S )Nr-   r                 ?r.   r   r   )r/   r
   absr   r   r   r   r   r0   r"   r"   r#   test_random_complex8   s   "
z TestCholesky.test_random_complexc                 C   sZ   d}t j|t jdd}t g dg dg dg dg|d dd df< t|d	d
d d S )Ni  F)dtypeorder)   r   )r<   r;   r   )r   r>   r)   r   )r=   r   r   r)   r;   FT)r&   overwrite_a)npeyefloat64r   r   )r   r1   xr"   r"   r#   test_int_overflowF   s   
zTestCholesky.test_int_overflowdtdt_bc                 C   s,  t d|d}t|}|jdksJ |jttjd|djks J |df}tjg |d}t||}|jdks7J |jttjd|ddftjd|djksNJ t d|d}t||}|jdks`J |jttjd|ddftjd|djkswJ t	g }t	g g}	g }
g g}||	|
|fD ]}t
tt| qd S )Nr   r   r9   r   Tr   )r	   r   shaper9   r@   rA   asarrayr   onesr   assert_raises
ValueError)r   rE   rF   r    r!   c_and_lowerbrC   r+   a2a3a4r"   r"   r#   
test_emptyU   s8   


zTestCholesky.test_emptyN)__name__
__module____qualname__r$   r(   r,   r4   r7   pytestmarkxslowrD   parametrizeintfloatr@   float32complex	complex64rT   r"   r"   r"   r#   r      s    

r   c                	   @   sx   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	j
deeejeejge	j
deeejeejgdd ZdS )TestCholeskyBandedz1Tests for cholesky_banded() and cho_solve_banded.c                 C   s   t g dg dg dg dg}t g dg dg}t|ddd}t|}|d	 |ttd
ttd
f< |ddd f |d< t|t|j| t g d}t|df|dd}t|g d d S )N      @      ?        re   rd   rc         ?re   re   rg   rc   皙?re   re   ri   rc         rd   rg   ri   rc   rc   rc   rc   Fr'   r=   r;   r   r   r   r   r   r   r   r   re   rg   @rr   r%   re   re   rd   rd   	r   r   r   listr/   r   r   Tr   r   r    abr!   ufacrP   rC   r"   r"   r#   r(   v   s     z$TestCholeskyBanded.test_check_finitec                 C   s   t g dg dg dg dg}t g dg dg}t|dd}t|}|d	 |ttd
ttd
f< |ddd f |d< t|t|j| t g d}t|df|}t|g d d S )Nrb   rf   rh   rj   rk   rm   Fr   r=   r;   r   r   rn   rq   rs   rt   rw   r"   r"   r#   test_upper_real        z"TestCholeskyBanded.test_upper_realc                 C   s   t g dg dg dg dg}t g dg dg}t|dd}t|}|d	 |ttd
ttd
f< |ddd f |d< t|t| j| t g d}t	|df|}t|g d d S )Nrb   rf   re   rg   rc          ɿre   re           ?rc   )rl   rd   rg   r}   rm   Fr   r=   r;   r   r   rn   )re   rg   y      @ɿy      @?rs   
r   r   r   ru   r/   r   r   conjrv   r   rw   r"   r"   r#   test_upper_complex        z%TestCholeskyBanded.test_upper_complexc                 C   s   t g dg dg dg dg}t g dg dg}t|dd}t|}|d	 |ttd
ttd
f< |dd df |d< t|t||j t g d}t|df|}t|g d d S )Nrb   rf   rh   rj   rm   )rd   rg   ri   rl   Tr   r   r;   r   r   rp   ro   rq   rs   rt   r   r    rx   r!   lfacrP   rC   r"   r"   r#   test_lower_real   r{   z"TestCholeskyBanded.test_lower_realc                 C   s   t g dg dg dg dg}t g dg dg}t|dd}t|}|d	 |ttd
ttd
f< |dd df |d< t|t|| j t g d}t	|df|}t|g d d S )Nrb   rf   r|   r~   rm   )rd   rg   r   rl   Tr   r   r;   r   r   r   )re   y              ?y        ffffff@gffffff@)re   re   r5   rd   r   r   r"   r"   r#   test_lower_complex   r   z%TestCholeskyBanded.test_lower_complexrE   rF   c           
      C   s   t d|d}t|}|jdksJ ttjddgddgg|d}|j|jks(J |df}tjg |d}t||}|jdks?J t|dftjd|dj}	|j|	ksSJ t d|d}t||}|jdkseJ |j|	kslJ d S )NrG   rH   r   r   TrI   r   )	r	   r   rJ   r@   r   r9   rK   r   rL   )
r   rE   rF   rx   cbr*   cb_and_lowerrP   rC   dtype_nonemptyr"   r"   r#   rT      s   

zTestCholeskyBanded.test_emptyN)rU   rV   rW   __doc__r(   rz   r   r   r   rX   rY   r[   r\   r]   r@   r^   r_   r`   rT   r"   r"   r"   r#   ra   s   s    ra   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestOverwritec                 C      t tdg d S N)r   r   )r   r   r   r"   r"   r#   test_cholesky      zTestOverwrite.test_choleskyc                 C   r   r   )r   r   r   r"   r"   r#   test_cho_factor   r   zTestOverwrite.test_cho_factorc                    s:   t g dg dg dg}t| t fdddg d S )N)r   r=   r   )r=   r   r=   )r   r=   r   c                    s
   t  | S )N)r   rP   xchor"   r#   <lambda>   s   
 z.TestOverwrite.test_cho_solve.<locals>.<lambda>r   )r   r   r   r   rC   r"   r   r#   test_cho_solve   s   zTestOverwrite.test_cho_solvec                 C   r   )N)r   r   )r   r   r   r"   r"   r#   test_cholesky_banded   r   z"TestOverwrite.test_cholesky_bandedc                    s4   t g dg dg}t| t fdddg d S )N)r   r=   r=   )r   r   r   c                    s   t  df| S )NF)r   r   r   r"   r#   r      s    z5TestOverwrite.test_cho_solve_banded.<locals>.<lambda>r   )r   r   r   r   r"   r   r#   test_cho_solve_banded   s
   z#TestOverwrite.test_cho_solve_bandedN)rU   rV   rW   r   r   r   r   r   r"   r"   r"   r#   r      s    r   c                   @   s0   e Zd Zejdeeej	e
ejgdd ZdS )TestChoFactorrE   c                 C   sR   t jd|d}t|\}}|jdksJ tt jd|d\}}|j|jks'J d S )NrG   rH   r   )r@   r	   r   rJ   rA   r9   )r   rE   r    rC   r   xxr"   r"   r#   rT     s
   zTestChoFactor.test_emptyN)rU   rV   rW   rX   rY   r[   r\   r]   r@   r^   r_   r`   rT   r"   r"   r"   r#   r     s    r   )rX   numpyr@   numpy.testingr   r   rM   r   r   r   r   r   r	   numpy.randomr
   scipy.linalgr   r   r   r   r   scipy.linalg._testutilsr   r   ra   r   r   r"   r"   r"   r#   <module>   s     e{