
    ^Mh&                         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	          Z G d
 d          Z G d d          Z G 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            	          e Zd Zd Zd Zd Zd Zd Zej	        j
        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	                         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      g/var/www/html/test/jupyter/venv/lib/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kr/   ir#   r$   r0   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 )Nr3   r                 ?r4   r   r   )r5   r   absr   r   r   r   r   r6   s           r%   test_random_complexz TestCholesky.test_random_complex8   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'   c                     d}t          j        |t           j        d          }t          j        g dg dg dg dg          |d dd df<   t	          |d	d
           d S )Ni  F)dtypeorder)   r   )rD   rC   r   )r   rF   r.   r   )rE   r   r   r.   rC   FT)r*   overwrite_a)npeyefloat64r   r   )r"   r7   xs      r%   test_int_overflowzTestCholesky.test_int_overflowF   s     q6!2:S111q8^^^+^^*]]*]], - -q!RaRy
 4888888r'   dtdt_bc                 H   t          d|          }t          |          }|j        dk    sJ |j        t          t	          j        d|                    j        k    sJ |df}t	          j        g |          }t          ||          }|j        dk    sJ |j        t          t	          j        d|          dft	          j        d|                    j        k    sJ t          d|          }t          ||          }|j        dk    sJ |j        t          t	          j        d|          dft	          j        d|                    j        k    sJ t          g           }t          g g          }	g }
g g}||	|
|fD ]}t          t          t          |           d S )Nr   r   rA   r   Tr   )r
   r   shaperA   rH   rI   asarrayr   onesr   assert_raises
ValueError)r"   rM   rN   r#   r$   c_and_lowerbrK   r0   a2a3a4s               r%   
test_emptyzTestCholesky.test_emptyU   s    &###QKKw&    w(26!2#6#6#677=====$iJr&&&k1%%w$w)RVAR%8%8%8$$?%'WQd%;%;%;= ==BC C C C &%%%k1%%w&    w)RVAR%8%8%8$$?%'WQd%;%;%;= ==BC C C C 2YYB4[[Tr2r" 	3 	3A*h2222	3 	3r'   N)__name__
__module____qualname__r&   r,   r1   r:   r>   pytestmarkxslowrL   parametrizeintfloatrH   float32complex	complex64r]    r'   r%   r   r      s        ; ; ;O O O; ; ;? ? ?? ? ? [9 9 9 [TC
GR\#RSS[Vc5"*gr|%TUU3 3 VU TS3 3 3r'   r   c            	           e Zd ZdZd Zd Zd Zd Z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	                         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      @      ?        rq   rp   ro         ?rq   rq   rs   ro   皙?rq   rq   ru   ro         rp   rs   ru   ro   ro   ro   ro   Fr+   rE   rC   r   r   r   r   r   r   r   r   rq   rs   @r~   r)   rq   rq   rp   rp   	r   r   r	   listr5   r   r   Tr   r"   r#   abr$   ufacrY   rK   s          r%   r,   z$TestCholeskyBanded.test_check_finitev   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 )Nrn   rr   rt   rv   rw   ry   Fr   rE   rC   r   r   rz   r}   r   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 )Nrn   rr   rq   rs   ro          ɿrq   rq           ?ro   )rx   rp   rs   r   ry   Fr   rE   rC   r   r   rz   )rq   rs   y      @ɿy      @?r   
r   r   r	   r   r5   r   r   conjr   r   r   s          r%   test_upper_complexz%TestCholeskyBanded.test_upper_complex   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 )Nrn   rr   rt   rv   ry   )rp   rs   ru   rx   Tr   r   rC   r   r   r|   r{   r}   r   r   r"   r#   r   r$   lfacrY   rK   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 )Nrn   rr   r   r   ry   )rp   rs   r   rx   Tr   r   rC   r   r   r   )rq   y              ?y        ffffff@gffffff@)rq   rq   r<   rp   r   r   s          r%   test_lower_complexz%TestCholeskyBanded.test_lower_complex   s)   '''''')))(((* + +
 (((***, - -Bd+++!}}/0tT%((^^T%((^^+,%&q"1"uX!"!!Styy{{}%=%=>>>((())aY**!!%:%:%:;;;;;r'   rM   rN   c                 *   t          d|          }t          |          }|j        dk    sJ t          t          j        ddgddgg|                    }|j        |j        k    sJ |df}t          j        g |          }t          ||          }|j        dk    sJ t          |dft          j        d|                    j        }	|j        |	k    sJ t          d|          }t          ||          }|j        dk    sJ |j        |	k    sJ d S )NrP   rQ   r   r   TrR   r   )	r
   r   rS   rH   r   rA   rT   r   rU   )
r"   rM   rN   r   cbr/   cb_and_lowerrY   rK   dtype_nonemptys
             r%   r]   zTestCholeskyBanded.test_empty   s4    6$$$R  x6!!!!BHq!fq!f%5R@@@AAx17""""DzJr&&&\1--w$)1d)RWQd5K5K5KLLRw.((((&%%%\1--w&    w.((((((r'   N)r^   r_   r`   __doc__r,   r   r   r   r   ra   rb   rd   re   rf   rH   rg   rh   ri   r]   rj   r'   r%   rl   rl   s   s        ;;; ; ;&; ; ;&; ; ;&; ; ;&< < <& [TC
GR\#RSS[Vc5"*gr|%TUU) ) VU TS) ) )r'   rl   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 r   )r   r   r   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   rE   r   )rE   r   rE   )r   rE   r   c                 $    t          |           S )N)r   rY   xchos    r%   <lambda>z.TestOverwrite.test_cho_solve.<locals>.<lambda>   s    ia&8&8 r'   r   )r   r   r   r"   rK   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   r   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   rE   rE   )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^   r_   r`   r   r   r   r   r   rj   r'   r%   r   r      sb        0 0 02 2 2B B B
7 7 7$ $ $ $ $r'   r   c                   t    e Zd Zej                            deeej	        e
ej        g          d             ZdS )TestChoFactorrM   c                     t          j        d|          }t          |          \  }}|j        dk    sJ t          t          j        d|                    \  }}|j        |j        k    sJ d S )NrP   rQ   r   )rH   r
   r   rS   rI   rA   )r"   rM   r#   rK   r   xxs         r%   r]   zTestChoFactor.test_empty  ss    HV2&&&a==5w&    rvar22233	Ew"(""""""r'   N)r^   r_   r`   ra   rb   rd   re   rf   rH   rg   rh   ri   r]   rj   r'   r%   r   r     sP        [TC
GR\#RSS# # TS# # #r'   r   )ra   numpyrH   numpy.testingr   r   rV   r   r   r   r   r	   r
   numpy.randomr   scipy.linalgr   r   r   r   r   scipy.linalg._testutilsr   r   rl   r   r   rj   r'   r%   <module>r      s        3 3 3 3 3 3 * * * * * * E E E E E E E E E E E E E E E E                    8 7 7 7 7 7b3 b3 b3 b3 b3 b3 b3 b3Jx) x) x) x) x) x) x) x)v$ $ $ $ $ $ $ $*	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r'   