
    >qj|B                         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
 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  G d	 d
      Z G d d      Z G d d      Z G d d      Zy)    N)assert_allclose)raises)array	transpose
zeros_likeempty)choleskycholesky_bandedcho_solve_banded
cho_factor	cho_solveLinAlgError)assert_no_overwrite   )parametrize_overwrite_argc            	          e Zd Zd Zd Zd Zej                  j                  dg d      ej                  j                  de	j                  e	j                  e	j                  e	j                  g      ej                  j                  ddd	g      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ej                  j                  dg d      d        Zej                  j                  de	j                  e	j                  e	j                  e	j                  g      ej                  j                  dd	dg      d               Zeej                  j                  deeg      ej                  j                  dd	dg      d                      Zej                  j                  dddg      d        Zej                  j                  dddg      ej                  j                  dg d      ej                  j                  dddg      ej                  j                  de	j                  e	j                  g      d                             Zy)TestCholeskyc                     g dg dg dg}t        |      }t        |j                  |z  |d       t        |      }||j                  z  }t        t        |d      |d       y )N         r   	   r   r   r      +=atolr   lowerr	   r   Tr   selfacs      f/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/linalg/tests/test_decomp_cholesky.pytest_simplezTestCholesky.test_simple   sT    	9-QKa/aLG!,ae<    c                     g dg dg dg}t        |d      }t        |j                  |z  |d       t        |      }||j                  z  }t        t        |dd	      |d       y )
Nr   r   r   Fcheck_finiter   r   r   r!   r-   r"   r$   s      r(   test_check_finitezTestCholesky.test_check_finite   sY    	9-QU+a/aLG!%@!%Pr*   c                 n   t        g dg dg dg      }t        j                  |j                        |z  }t	        |      }t        j                  |j                        |z  }t        ||       t        |      }|t        j                  |j                        z  }t        t	        |d      |d       y )N)y      @      ?y      @      @   )r   y       @       @y       @      @)r   r   y      @      @r   r    r   r   )r   npconjr#   r	   r   r   )r%   mr&   r'   a1s        r(   test_simple_complexz TestCholesky.test_simple_complex    s    ?O\BCGGACCL1QKWWQSS\A2aL!,ae<r*   nr1   
      dtypeorderFCc                 L   |t         j                  t         j                  fv rdnd}t         j                  j	                  d      }t        d      D ]O  }|j                  ||f      j                  |      }t        j                  |t         j                        r)|d|j                  ||f      j                  |      z  z  }t        |      D ]  }dd	|||f   z   z  |||f<    t        j                  t        j                  |j                        |z  |
      }	t        |	d      }
t        j                  |
j                        |
z  }t        |	||       t        |
      }
|
t        j                  |
j                        z  }	t        t        |	d      |
|       R y )NgMb@?-q=90  seedr   size              ?r:   g?r<   r   r    r   r   )r2   float32	complex64randomdefault_rngrangenormalastype
issubdtypecomplexfloatingasarrayr3   r#   r	   r   r   )r%   r7   r;   r<   r   rngkr4   ir&   r'   r5   s               r(   test_randomzTestCholesky.test_random*   sZ   
 R\\ ::tii###/q 	@A

A
'..u5A}}UB$6$67R#**1a&*188???1X *b1a4j/!Q$* 

277133<!+59A!$A!BAr-!ABGGACCL AHQa0!$?	@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  r=   r;   r<   )   r   )rY   rX   r   )r   r[   r1   r   )rZ   r   r   r1   rX   FT)r-   overwrite_a)r2   eyefloat64r   r	   )r%   r7   xs      r(   test_int_overflowzTestCholesky.test_int_overflowC   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   r;   r   Tr   )r   r	   shaper;   r2   r]   rQ   r   onesr   assert_raises
ValueError)r%   ra   rb   r&   r'   c_and_lowerbr_   r5   a2a3a4s               r(   
test_emptyzTestCholesky.test_emptyR   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" 	3A*h2	3r*   rg   )r   r   r   r   r   c                     t         j                  j                  d      }|j                  |      }t	        j
                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)NrA   rB   rD   zExpected a square matrixmatch)r2   rJ   rK   rM   pytestr   rj   r	   r%   rg   rR   r&   s       r(   test_invalid_shapezTestCholesky.test_invalid_shapeo   sT    ii###/JJEJ"]]:-GH 	QK	 	 	   A##A,c                    d}t         j                  j                  d      }t        j                  t        j                  |j                  |f            j                  |             }|j                  ||f      j                  |      }t        j                  |t         j                        r)|d|j                  ||f      j                  |      z  z  }t        j                  ||z  t        j                  |j                        z  |      }t        j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w	Nr9   rA   rB   rD   rF   rG   zInternal potrf return inforu   )r2   rJ   rK   diagabsrM   rN   rO   rP   rQ   r3   r#   rw   r   r   r	   r%   r;   r<   r7   rR   lmbdr_   r&   s           r(   test_non_posdefzTestCholesky.test_non_posdefw   s     ii###/wwszztz45<<UCCDJJQFJ#**51== 2 23cjjq!fj-44U;;;AJJq4x"''!##,.e<]];.JK 	QK	 	 	   1EEc                    t         j                  j                  d      }d}|j                  ||f      }|j	                  |      }||j
                  z  }|j	                  ||      }t        j                  |      }t        |fi |}	|j                  dd      }
|
xr* |t        uxr  |j                  d   xs |j                  d	   }t        j                  ||	      |k(  sJ t        j                  ||k(        |k7  sJ y )
NrA   rB   r1   rD   rG   r\   FF_CONTIGUOUSC_CONTIGUOUS)r2   rJ   rK   rM   rN   r#   copyr	   getintflagsshares_memoryall)r%   overwrite_kwr;   r<   rR   r7   r_   r&   a_refr'   r\   	a_inplaces               r(   test_overwrite_argsz TestCholesky.test_overwrite_args   s     ii###/JJQFJ#HHUOGHHU%H(
Q','"&&}e<  Ne3&6 N''.1LQWW^5L 	 1%222vva5j!Y...r*   r!   TFc                 D   t         j                  j                  d      }d}|j                  ||f      }t        j                  ||j
                  z        }t        j                  |      }t        ||d      }|rRt        t        j                  |d      t        j                  |      d	
       t        ||j
                  z  |d	
       y t        t        j                  |d      t        j                  |      d	
       t        |j
                  |z  |d	
       y )NrA   rB   r1   rD   T)r!   r\   r   )rS   r   r   rZ   )r2   rJ   rK   rM   asfortranarrayr#   r   r	   r   triur   tril)r%   r!   rR   r7   r_   r&   r   r'   s           r(   test_overwrite_cleaningz$TestCholesky.test_overwrite_cleaning   s     ii###/JJQFJ#a!##g&
Qe6BGGAOR]]1-=EJAGU7BGGA,bmmA.>UKACC!GU7r*   )r>   r=   noncontig_Cnoncontig_Fr\   c                 H   t         j                  j                  d      }d}|j                  ||f      }t        j                  |t         j
                        r|d|j                  ||f      z  z   }||j                         j                  z  |t        j                  |      z  z   j                  |      }t        ||      }	|j                  d      rq|j                  d      rd	nd
}
t        j                  d|z  d|z  f||
      }||d d dd d df<   |d d dd d df   }|j                  d   rJ |j                  d   rJ t        j                  ||      }|r(t         j                   |t        j"                  |d      <   n't         j                   |t        j$                  |d      <   t        |||d      }t'        ||	d       |r*t'        ||j                         j                  z  |d       y t'        |j                         j                  |z  |d       y )NrA   rB   r1   rD   rF   r    	noncontig_Fr=   r>   r   r   rW   r   r   rG   r   rZ   F)r!   r\   r-   r   r   gvIh%<=)r2   rJ   rK   rM   rO   rP   r3   r#   r]   rN   r	   
startswithendswithzerosr   r   nantriu_indicestril_indicesr   )r%   r!   r<   r\   r;   rR   r7   r_   r&   c_ref	big_ordera_biga_nanr'   s                 r(   test_nan_in_unused_trianglez(TestCholesky.test_nan_in_unused_triangle   s    ii###/JJQFJ#== 2 23B!Q000A^a"&&)m+33E:%( K($~~d3IHHac1Q3ZuIFEE#A#ss(O#A#ss(OE{{>222{{>222HHQe,E +-66E"//!Q'(,.FFE"//!R()U%["')5u-A

NAE:AFFHJJNAE:r*   N)__name__
__module____qualname__r)   r/   r6   rw   markparametrizer2   rH   r^   rI   
complex128rU   xslowr`   r   floatcomplexrp   ry   r   r   r   r   r    r*   r(   r   r      s   =Q= [[S+.[[Wrzz2::(*bmm'E F[[WsCj1@ 2F /@* [[9 9 [[TC

GR\\#RS[[Vc5"**gr||%TU3 V T36 [[W&<= > [[Wrzz2::\\2==': ;[[WsCj1 2; [[WsEl3[[WsCj1/ 2 4 /$ [[WtUm48 58& [[WtUm4[[W&NO[[]T5M:[[Wrzz2==&AB$; C ; P 5$;r*   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        ||j                  |z  d       t        g d      }t        |df|d      }t        |g dd       y )N      @      ?        r   r   r         ?r   r   r   r   皙?r   r   r   r         r   r   r   r   r   r   r   Fr.   rZ   rX   r   r   r   r   r   r   r   r   r   r   r   r   @r   r,   r   r   r   r   r   r
   r   listrL   r   r#   r   r%   r&   abr'   ufacrl   r_   s          r(   r/   z$TestCholeskyBanded.test_check_finite   s    '''') *
 )(* +Be%@!}/0uT%(^T%(^+,%&q!"uX!"466D=u5&'aZ?/e<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        ||j                  |z  d       t        g d      }t        |df|      }t        |g dd       y )Nr   r   r   r   r   r   Fr    rZ   rX   r   r   r   r   r   r   r   r   r   s          r(   test_upper_realz"TestCholeskyBanded.test_upper_real   s    '''') *
 )(* +Be,!}/0uT%(^T%(^+,%&q!"uX!"466D=u5&'aZ+/e<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                        |z  d       t        g d      }t        |df|      }t        |g dd       y )Nr   r   r   r   r          ɿr   r           ?r   )r   r   r   r   r   Fr    rZ   rX   r   r   r   r   r   )r   r   y      @ɿy      @?r   
r   r
   r   r   rL   r   r2   r3   r#   r   r   s          r(   test_upper_complexz%TestCholeskyBanded.test_upper_complex  s    '')(* +
 +(* +Be,!}/0uT%(^T%(^+,%&q!"uX!"277466?T1>23aZ+/e<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        |||j                  z  d       t        g d      }t        |df|      }t        |g dd       y )Nr   r   r   r   r   )r   r   r   r   Tr    r   rX   r   r   r   r   r   r   r   r   r   r%   r&   r   r'   lfacrl   r_   s          r(   test_lower_realz"TestCholeskyBanded.test_lower_real  s    '''') *
 ()+ ,Bd+!}/0tT%(^T%(^+,%&q"1"uX!"4$&&=u5&'aY*/e<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                        z  d       t        g d      }t        |df|      }t        |g dd       y )Nr   r   r   r   r   )r   r   r   r   Tr    r   rX   r   r   r   r   r   )r   y              ?y        ffffff@gffffff@)r   r   rF   r   r   r   s          r(   test_lower_complexz%TestCholeskyBanded.test_lower_complex+  s    '')(* +
 (*, -Bd+!}/0tT%(^T%(^+,%&q"1"uX!"4"''$&&/1>()aY*0u=r*   ra   rb   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 )Nrd   re   r   r   Trf   r   )	r   r
   rg   r2   r   r;   rQ   r   rh   )
r%   ra   rb   r   cbr4   cb_and_lowerrl   r_   dtype_nonemptys
             r(   rp   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   rw   r   r   r   r   r2   rH   r   rI   rp   r   r*   r(   r   r      s    ;=&=&=&=&>& [[TC

GR\\#RS[[Vc5"**gr||%TU) V T)r*   r   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_choleskyX  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   rZ   r   )rZ   r   rZ   )r   rZ   r   c                     t        |       S )N)r   rl   xchos    r(   <lambda>z.TestOverwrite.test_cho_solve.<locals>.<lambda>a  s    ia&8 r*   rq   )r   r   r   r%   r_   r   s     @r(   test_cho_solvezTestOverwrite.test_cho_solve^  s*    :{J78!}84&Ar*   c                 &    t        t        dg       y )Nrr   )r   r
   r   s    r(   test_cholesky_bandedz"TestOverwrite.test_cholesky_bandedc  s    OfX6r*   c                 ^    t        g dg dg      }t        |      t        fddg       y )N)r   rZ   rZ   )r   r   r   c                      t        df|       S )NF)r   r   s    r(   r   z5TestOverwrite.test_cho_solve_banded.<locals>.<lambda>i  s    &6e}a&H r*   rq   )r   r
   r   r   s     @r(   test_cho_solve_bandedz#TestOverwrite.test_cho_solve_bandedf  s,    ;	*+q!H!F	$r*   N)r   r   r   r   r   r   r   r   r   r*   r(   r   r   W  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ej                  j                  dg d      ej                  j                  dej                  ej                  ej                  ej                  g      ej                  j                  dddg      ej                  j                  d	d
dg      d                             Zej                  j                  dg d      d        Zej                  j                  dej                  ej                  ej                  ej                  g      ej                  j                  dddg      d               Zeej                  j                  deeg      ej                  j                  dddg      ej                  j                  d	d
dg      d                             Zy)TestChoFactorra   c                     t        j                  d|      }t        |      \  }}|j                  dk(  sJ t        t        j                  d|            \  }}|j
                  |j
                  k(  sJ y )Nrd   re   r   )r2   r   r   rg   r]   r;   )r%   ra   r&   r_   r!   xxs         r(   rp   zTestChoFactor.test_emptyn  s`    HHV2&a=5ww&   rvvar23	Eww"(("""r*   r7   r8   r;   r<   r>   r=   r!   TFc                    |t         j                  t         j                  fv rdnd}t         j                  j	                  d      }t        j
                  t        j                  |j                  |f      j                  |                  }|j                  ||f      j                  |      }t        j                  |t         j                        r)|d|j                  ||f      j                  |      z  z  }t        j                  ||z  t        j                  |j                        z  |      }	t        |	|      }
t        |	|      \  }}||k(  sJ |rRt        j                   |      }t#        |
||	       t#        |	|t        j                  |j                        z  |	       y t        j$                  |      }t#        |
||	       t#        |	t        j                  |j                        |z  |	       y )
Ngh㈵>r@   rA   rB   rD   rF   rG   r    r   )r2   rH   rI   rJ   rK   r}   r~   rM   rN   rO   rP   rQ   r3   r#   r	   r   r   r   r   )r%   r7   r;   r<   r!   r   rR   r   r_   r&   r'   c_f	lower_outlus                  r(   rU   zTestChoFactor.test_randomx  s    R\\ ::tii###/wwrvvcjjqdj3::5ABCJJQFJ#**51== 2 23cjjq!fj-44U;;;AJJq4x"''!##,.e<Qe$#AU3YE!!! AAqt,Aq277133</d;AAqt,Arwwqss|a/d;r*   rg   )rq   rs   rr   c                     t         j                  j                  d      }|j                  |      }t	        j
                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)NrA   rB   rD   z!Expected a square matrix or batchru   )r2   rJ   rK   rM   rw   r   rj   r   rx   s       r(   ry   z TestChoFactor.test_invalid_shape  sT    ii###/JJEJ"]]:-PQ 	qM	 	 	rz   c                    d}t         j                  j                  d      }t        j                  t        j                  |j                  |f            j                  |             }|j                  ||f      j                  |      }t        j                  |t         j                        r)|d|j                  ||f      j                  |      z  z  }t        j                  ||z  t        j                  |j                        z  |      }t        j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY wr|   )r2   rJ   rK   r}   r~   rM   rN   rO   rP   rQ   r3   r#   rw   r   r   r   r   s           r(   r   zTestChoFactor.test_non_posdef  s     ii###/wwszztz45<<UCCDJJQFJ#**51== 2 23cjjq!fj-44U;;;AJJq4x"''!##,.e<]];.JK 	qM	 	 	r   c                    t         j                  j                  d      }d}|j                  ||f      }|j	                  |      }||j
                  z  }|j	                  ||      }t        j                  |      }	t        |fi |d|i\  }
}|j                  dd      }|xr* |t        uxr  |j                  d	   xs |j                  d
   }t        j                  ||
      |k(  sJ t        j                  ||	k(        |k7  sJ y )NrA   rB   r1   rD   rG   r!   r\   Fr   r   )r2   rJ   rK   rM   rN   r#   r   r   r   r   r   r   r   )r%   r   r;   r<   r!   rR   r7   r_   r&   r   r'   r\   r   s                r(   r   z!TestChoFactor.test_overwrite_args  s   
 ii###/JJQFJ#HHUOGHHU%H(
a=<=u=5"&&}e<  Ne3&6 N''.1LQWW^5L 	 1%222vva5j!Y...r*   N)r   r   r   rw   r   r   r   r   r2   rH   r   rI   rp   r^   r   rU   ry   r   r   r   r   r*   r(   r   r   m  s   [[TC

GR\\#RS# T# [[S+.[[Wrzz2:: "bmm'= >[[WsCj1[[WtUm4< 5 2> /
<4 [[W&<= > [[Wrzz2::\\2==': ;[[WsCj1 2; [[WsEl3[[WsCj1[[WtUm4/ 5 2 4 /r*   r   )rw   numpyr2   numpy.testingr   r   ri   r   r   r   r   scipy.linalgr	   r
   r   r   r   r   scipy.linalg._testutilsr   
test_basicr   r   r   r   r   r   r*   r(   <module>r     sY      ) * 5 5) ) 8 1K; K;\x) x)v$ $,W/ W/r*   