
    tKg&                         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y)    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            	       H   e Zd Zd Zd Zd Zd Zd Zej                  j                  d        Zej                  j                  deeej                   eej$                  g      ej                  j                  deeej                   eej$                  g      d	               Zy
)TestCholeskyc                     g dg dg dg}t        |      }t        t        t        |      |      |       t        |      }t        |t        |            }t        t        |d      |       y )N         r   	   r   r   r         lowerr   r   r   r   selfacs      k/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp_cholesky.pytest_simplezTestCholesky.test_simple   sV    	9-QK!#ilA"6:aL9Q< !(1A"6:    c                     g dg dg dg}t        |d      }t        t        t        |      |      |       t        |      }t        |t        |            }t        t        |dd      |       y )Nr   r   r   Fcheck_finiter   r   r*   r    r!   s      r%   test_check_finitezTestCholesky.test_check_finite   s[    	9-QU+!#ilA"6:aL9Q< !(1AE"JANr'   c                 R   t        g dg dg dg      }t        t        t        |            |      }t	        |      }t        t        t        |            |      }t        ||       t        |      }t        |t        t        |                  }t        t	        |d      |       y )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    ?O\BC	)A,'+QK9Q<(!,!!R(aL9Yq\*+!(1A"6:r'   c                 v   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      |        y )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1Xb1a4j/!Q$ IaL!$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      |        y )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1XbQq!tWo.!Q$ Iil+Q/AAYy|,a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
       y )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66!2::S1q88^+**, -q!RaRy
 4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        |        y )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    &#QKww&   ww(266!2#67=====$iJJr&k1%ww$ww)RVVAR%8$$?%'WWQd%;==BUC 	C C &%k1%ww&   ww)RVVAR%8$$?%'WWQd%;==BUC 	C C 2YB4[Tr2r"A*h2 #r'   N)__name__
__module____qualname__r&   r,   r1   r:   r>   pytestmarkxslowrL   parametrizeintfloatrH   float32complex	complex64r]    r'   r%   r   r      s    ;O;?? [[9 9 [[TC

GR\\#RS[[Vc5"**gr||%TU3 V T3r'   r   c            	          e Zd ZdZd Zd Zd Zd Zd Ze	j                  j                  deeej                  eej"                  g      e	j                  j                  deeej                  eej"                  g      d	               Zy
)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       y )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7&'aZ?!!%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       y )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7&'aZ+!!%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                         j                  |             t        g d      }t        |df|      }t        |g d       y )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3aZ+!!%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       y )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tvv%67&'aY*!!%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                         j                               t        g d      }t        |df|      }t        |g d       y )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 y )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   s    6$R xx6!!!BHHq!fq!f%5R@Axx177"""DzJJr&\1-ww$)1d)RWWQd5KLRRww.(((&%\1-ww&   ww.(((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[[Vc5"**gr||%TU) V T)r'   rl   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestOverwritec                 &    t        t        dg       y N)r   r   )r   r   r"   s    r%   test_choleskyzTestOverwrite.test_cholesky   s    Hvh/r'   c                 &    t        t        dg       y r   )r   r   r   s    r%   test_cho_factorzTestOverwrite.test_cho_factor   s    J1r'   c                 d    t        g dg dg dg      }t        |      t        fddg       y )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&8r'   r   )r   r   r   r"   rK   r   s     @r%   test_cho_solvezTestOverwrite.test_cho_solve   s*    :{J78!}84&Ar'   c                 &    t        t        dg       y )N)r   r   )r   r   r   s    r%   test_cholesky_bandedz"TestOverwrite.test_cholesky_banded   s    OfX6r'   c                 ^    t        g dg dg      }t        |      t        fddg       y )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&Hr'   r   )r   r   r   r   s     @r%   test_cho_solve_bandedz#TestOverwrite.test_cho_solve_banded   s,    ;	*+q!H!F	$r'   N)r^   r_   r`   r   r   r   r   r   rj   r'   r%   r   r      s    02B
7$r'   r   c                       e Zd Zej                  j                  deeej                  e
ej                  g      d        Zy)TestChoFactorrM   c                     t        j                  d|      }t        |      \  }}|j                  dk(  sJ t        t        j                  d|            \  }}|j
                  |j
                  k(  sJ y )NrP   rQ   r   )rH   r
   r   rS   rI   rA   )r"   rM   r#   rK   r   xxs         r%   r]   zTestChoFactor.test_empty  s`    HHV2&a=5ww&   rvvar23	Eww"(("""r'   N)r^   r_   r`   ra   rb   rd   re   rf   rH   rg   rh   ri   r]   rj   r'   r%   r   r     s9    [[TC

GR\\#RS# T#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      sW      3 * E E   8b3 b3Jx) x)v$ $*	# 	#r'   