o
    5Bi                     @   s   d dl Z d dlmZmZ d dl mZ d dl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assert_array_equal)raises)array	transposedot	conjugate
zeros_likeempty)random)choleskycholesky_bandedcho_solve_banded
cho_factor	cho_solve)assert_no_overwritec                   @   sD   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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#   g/var/www/html/Trade-python/venv/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   )r0   r   absr   r   r   r   r   r1   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    r2   xr#   r#   r$   test_int_overflowF   s   
zTestCholesky.test_int_overflowN)__name__
__module____qualname__r%   r)   r-   r5   r8   pytestmarkxslowrE   r#   r#   r#   r$   r      s    
r   c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Z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      @      ?        rP   rO   rN         ?rP   rP   rR   rN   皙?rP   rP   rT   rN         rO   rR   rT   rN   rN   rN   rN   Fr(   r>   r<   r   r   r   r   r   r   r   r   rP   rR   @r]   r&   rP   rP   rO   rO   	r   r   r	   listr0   r   r   Tr   r    r!   abr"   ufacbrD   r#   r#   r$   r)   Y   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 )NrM   rQ   rS   rU   rV   rX   Fr   r>   r<   r   r   rY   r\   r^   r_   rb   r#   r#   r$   test_upper_reall        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 )NrM   rQ   rP   rR   rN          ɿrP   rP           ?rN   )rW   rO   rR   ri   rX   Fr   r>   r<   r   r   rY   )rP   rR   y      @ɿy      @?r^   
r   r   r	   r`   r0   r   r   conjra   r   rb   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 )NrM   rQ   rS   rU   rX   )rO   rR   rT   rW   Tr   r   r<   r   r   r[   rZ   r\   r^   r_   r    r!   rc   r"   lfacre   rD   r#   r#   r$   test_lower_real   rg   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 )NrM   rQ   rh   rj   rX   )rO   rR   rk   rW   Tr   r   r<   r   r   rp   )rP   y              ?y        ffffff@gffffff@)rP   rP   r6   rO   rl   rq   r#   r#   r$   test_lower_complex   ro   z%TestCholeskyBanded.test_lower_complexN)	rF   rG   rH   __doc__r)   rf   rn   rs   rt   r#   r#   r#   r$   rL   V   s    rL   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   rw   rx   )r   r   ry   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   re   xchor#   r$   <lambda>   s   
 z.TestOverwrite.test_cho_solve.<locals>.<lambda>r   )r   r   r   r    rD   r#   r~   r$   test_cho_solve   s   zTestOverwrite.test_cho_solvec                 C   rw   )N)r   r   )r   r   ry   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)rF   rG   rH   rz   r|   r   r   r   r#   r#   r#   r$   rv      s    rv   c                   @   s   e Zd Zdd ZdS )TestEmptyArrayc                 C   s\   t d}tg }tg g}g }g g}t|\}}t|| ||||fD ]}ttt| q#d S )N)r   r   )r
   r   r   r   assert_raises
ValueError)r    r!   re   r"   derD   _r#   r#   r$   test_cho_factor_empty_square   s   

z+TestEmptyArray.test_cho_factor_empty_squareN)rF   rG   rH   r   r#   r#   r#   r$   r      s    r   )rI   numpy.testingr   r   r   r   numpyrA   r   r   r   r   r	   r
   numpy.randomr   scipy.linalgr   r   r   r   r   scipy.linalg._testutilsr   r   rL   rv   r   r#   r#   r#   r$   <module>   s     Hc