
    gea                         d dl mZ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          Z G d	 d
          Z G d d          Z G d d          ZdS )    )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                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestCholeskyc                 &   g dg dg dg}t          |          }t          t          t          |          |          |           t          |          }t          |t          |                    }t          t          |d          |           d S )N         r   	   r   r   r         lowerr   r   r   r   selfacs      Glib/python3.11/site-packages/scipy/linalg/tests/test_decomp_cholesky.pytest_simplezTestCholesky.test_simple   s    YY			999-QKK!#illA"6"6:::aLL9Q<<  !(1A"6"6"6:::::    c                 ,   g dg dg dg}t          |d          }t          t          t          |          |          |           t          |          }t          |t          |                    }t          t          |dd          |           d S )Nr   r   r   Fcheck_finiter   r    r+   r!   r"   s      r&   test_check_finitezTestCholesky.test_check_finite   s    YY			999-QU+++!#illA"6"6:::aLL9Q<<  !(1AE"J"J"JANNNNNr(   c                    t          g dg dg dg          }t          t          t          |                    |          }t	          |          }t          t          t          |                    |          }t          ||           t          |          }t          |t          t          |                              }t          t	          |d          |           d S )N)y      @      ?y      @      @   )r   y       @       @y       @      @)r   r   y      @      @r   r   )r   r   r   r	   r   r   )r#   mr$   r%   a1s        r&   test_simple_complexz TestCholesky.test_simple_complex   s    ???OOO\\\BCC	)A,,''++QKK9Q<<((!,,!!R(((aLL9Yq\\**++!(1A"6"6"6:::::r(   c                    d}t          d          D ]}t          ||g          }t          |          D ]}dd|||f         z   z  |||f<   t          t          |          |          }t	          |          }t          t          |          |          }t          ||           t          |          }t          |t          |                    }t          t	          |d          |           d S )N   r   皙?r   r   )ranger   r   r   r   r   r#   nkr0   ir$   r%   r1   s           r&   test_randomzTestCholesky.test_random(   s    q 
	? 
	?A1vA1XX * *b1a4j/!Q$IaLL!$$AAYq\\1%%B%a,,,!AAy||$$A%hq&:&:&:A>>>>
	? 
	?r(   c           	      |   d}t          d          D ](}t          ||g          dt          ||g          z  z   }t          |          D ]$}ddt          |||f                   z   z  |||f<   %t          t	          t          |                    |          }t          |          }t          t	          t          |                    |          }t          ||           t	          |          }t          |t	          t          |                              }t          t          |d          |           *d S )Nr4   r                 ?r5   r   r   )r6   r   absr   r   r	   r   r   r7   s           r&   test_random_complexz TestCholesky.test_random_complex6   s!   q 
	? 
	?A1vr&!Q..00A1XX / /bQq!tWo.!Q$Iill++Q//AAYy||,,a00B%a,,,!AAy1..//A%hq&:&:&:A>>>>
	? 
	?r(   N)__name__
__module____qualname__r'   r-   r2   r;   r?    r(   r&   r   r      sb        ; ; ;O O O; ; ;? ? ?? ? ? ? ?r(   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestCholeskyBandedz1Tests for cholesky_banded() and cho_solve_banded.c                    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|d          }t          |g d           d S )N      @      ?        rJ   rI   rH         ?rJ   rJ   rL   rH   皙?rJ   rJ   rN   rH         rI   rL   rN   rH   rH   rH   rH   Fr,      r   r   r   r   r   r   r   r   rJ   rL   @rY   r*   rJ   rJ   rI   rI   	r   r   r
   listr6   r   r   Tr   r#   r$   abr%   ufacbxs          r&   r-   z$TestCholeskyBanded.test_check_finiteH   s(   '''''''''''') * *
 )))(((* + +Be%@@@!}}/0uT%((^^T%((^^+,%&q!""uX!"!!S%6%6777&&&''aZ???!!%9%9%9:::::r(   c                    t          g dg dg dg dg          }t          g dg dg          }t          |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 )NrG   rK   rM   rO   rP   rR   Fr   rS   rT   r   r   rU   rX   rZ   r[   r^   s          r&   test_upper_realz"TestCholeskyBanded.test_upper_real[   s!   '''''''''''') * *
 )))(((* + +Be,,,!}}/0uT%((^^T%((^^+,%&q!""uX!"!!S%6%6777&&&''aZ++!!%9%9%9:::::r(   c                    t          g dg dg dg dg          }t          g dg dg          }t          |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 )NrG   rK   rJ   rL   rH          ɿrJ   rJ           ?rH   )rQ   rI   rL   rg   rR   Fr   rS   rT   r   r   rU   )rJ   rL   y      @ɿy      @?rZ   
r   r   r
   r\   r6   r   r   conjr]   r   r^   s          r&   test_upper_complexz%TestCholeskyBanded.test_upper_complexn   s)   '''''')))(((* + +
 +++(((* + +Be,,,!}}/0uT%((^^T%((^^+,%&q!""uX!"!!S%=%=>>>22233aZ++!!%9%9%9:::::r(   c                    t          g dg dg dg dg          }t          g dg dg          }t          |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 )NrG   rK   rM   rO   rR   )rI   rL   rN   rQ   Tr   r   rT   r   r   rW   rV   rX   rZ   r[   r#   r$   r_   r%   lfacra   rb   s          r&   test_lower_realz"TestCholeskyBanded.test_lower_real   s!   '''''''''''') * *
 ((()))+ , ,Bd+++!}}/0tT%((^^T%((^^+,%&q"1"uX!"!!Stv%6%6777&&&''aY**!!%9%9%9:::::r(   c                    t          g dg dg dg dg          }t          g dg dg          }t          |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 )NrG   rK   rf   rh   rR   )rI   rL   ri   rQ   Tr   r   rT   r   r   rn   )rJ   y              ?y        ffffff@gffffff@)rJ   rJ   r=   rI   rj   ro   s          r&   test_lower_complexz%TestCholeskyBanded.test_lower_complex   s)   '''''')))(((* + +
 (((***, - -Bd+++!}}/0tT%((^^T%((^^+,%&q"1"uX!"!!Styy{{}%=%=>>>((())aY**!!%:%:%:;;;;;r(   N)	r@   rA   rB   __doc__r-   rd   rl   rq   rs   rC   r(   r&   rE   rE   E   se        ;;; ; ;&; ; ;&; ; ;&; ; ;&< < < < <r(   rE   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestOverwritec                 2    t          t          dg           d S N)r   r   )r   r   r#   s    r&   test_choleskyzTestOverwrite.test_cholesky   s    Hvh/////r(   c                 2    t          t          dg           d S rx   )r   r   ry   s    r&   test_cho_factorzTestOverwrite.test_cho_factor   s    J11111r(   c                 ~    t          g dg dg dg          }t          |          t          fddg           d S )N)r   rS   r   )rS   r   rS   )r   rS   r   c                 $    t          |           S )N)r   ra   xchos    r&   <lambda>z.TestOverwrite.test_cho_solve.<locals>.<lambda>   s    ia&8&8 r(   r   )r   r   r   r#   rb   r   s     @r&   test_cho_solvezTestOverwrite.test_cho_solve   sP    :::{{{JJJ788!}}88884&AAAAAr(   c                 2    t          t          dg           d S )N)r   r   )r   r   ry   s    r&   test_cholesky_bandedz"TestOverwrite.test_cholesky_banded   s    OfX66666r(   c                 x    t          g dg dg          }t          |          t          fddg           d S )N)r   rS   rS   )r   r   r   c                 (    t          df|           S )NF)r   r   s    r&   r   z5TestOverwrite.test_cho_solve_banded.<locals>.<lambda>   s    &6e}a&H&H r(   r   )r   r   r   r   s     @r&   test_cho_solve_bandedz#TestOverwrite.test_cho_solve_banded   sW    ;;;			*++q!!HHHH!F	$ 	$ 	$ 	$ 	$r(   N)r@   rA   rB   rz   r|   r   r   r   rC   r(   r&   rv   rv      sb        0 0 02 2 2B B B
7 7 7$ $ $ $ $r(   rv   c                       e Zd Zd ZdS )TestEmptyArrayc                     t          d          }t          g           }t          g g          }g }g g}t          |          \  }}t          ||           ||||fD ]}t	          t
          t          |           d S )N)r   r   )r   r   r   r   assert_raises
ValueError)r#   r$   ra   r%   derb   _s           r&   test_cho_factor_empty_squarez+TestEmptyArray.test_cho_factor_empty_square   s    &MM"II2$KKD!}}11a   aA, 	5 	5A*j!4444	5 	5r(   N)r@   rA   rB   r   rC   r(   r&   r   r      s#        5 5 5 5 5r(   r   N)numpy.testingr   r   pytestr   r   numpyr   r   r   r	   r
   r   numpy.randomr   scipy.linalgr   r   r   r   r   scipy.linalg._testutilsr   r   rE   rv   r   rC   r(   r&   <module>r      s   G G G G G G G G * * * * * * E E E E E E E E E E E E E E E E                    8 7 7 7 7 76? 6? 6? 6? 6? 6? 6? 6?r`< `< `< `< `< `< `< `<F$ $ $ $ $ $ $ $,5 5 5 5 5 5 5 5 5 5r(   