
    Bpj|B                         S SK r S SKrS SKJr  S SK Jr  S SKJrJrJ	r	J
r
  S SKJrJrJrJrJrJr  S SKJr  SSKJr   " S	 S
5      r " S S5      r " S S5      r " S S5      rg)    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            	          \ rS rSrS rS rS r\R                  R                  S/ SQ5      \R                  R                  S\
R                  \
R                  \
R                  \
R                  /5      \R                  R                  SS	S
/5      S 5       5       5       r\R                  R                   S 5       r\R                  R                  S\\\
R                  \\
R                  /5      \R                  R                  S\\\
R                  \\
R                  /5      S 5       5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  S\
R                  \
R                  \
R                  \
R                  /5      \R                  R                  SS
S	/5      S 5       5       r\\R                  R                  S\\/5      \R                  R                  SS
S	/5      S 5       5       5       r\R                  R                  SSS/5      S 5       r\R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  SSS/5      \R                  R                  S\
R                  \
R                  /5      S 5       5       5       5       rSrg)TestCholesky   c                     / SQ/ SQ/ SQ/n[        U5      n[        UR                  U-  USS9  [        U5      nX"R                  -  n[        [        USS9USS9  g )N         r   	   r   r   r      +=atolr   lowerr	   r   Tr   selfacs      c/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_decomp_cholesky.pytest_simpleTestCholesky.test_simple   sR    	9-QKa/aLG!,ae<    c                     / SQ/ SQ/ SQ/n[        USS9n[        UR                  U-  USS9  [        U5      nX"R                  -  n[        [        USSS	9USS9  g )
Nr   r   r   Fcheck_finiter   r   r   r"   r/   r#   r%   s      r)   test_check_finiteTestCholesky.test_check_finite   sW    	9-QU+a/aLG!%@!%Pr,   c                 f   [        / SQ/ SQ/ SQ/5      n[        R                  " UR                  5      U-  n[	        U5      n[        R                  " UR                  5      U-  n[        X$5        [        U5      nU[        R                  " UR                  5      -  n[        [	        USS9USS9  g )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_complex TestCholesky.test_simple_complex    s    ?O\BCGGACCL1QKWWQSS\AaL!,ae<r,   nr4   
      dtypeorderFCc                 0   U[         R                  [         R                  4;   a  SOSn[         R                  R	                  SS9n[        S5       GHA  nUR                  X4S9R                  U5      n[         R                  " U[         R                  5      (       a%  USUR                  X4S9R                  U5      -  -  n[        U5       H  nSS	XxU4   -   -  XxU4'   M     [         R                  " [         R                  " UR                  5      U-  US
9n	[        U	SS9n
[         R                  " U
R                  5      U
-  n[        XUS9  [        U
5      n
U
[         R                  " U
R                  5      -  n	[        [        U	SS9XS9  GMD     g )NgMb@?-q=90  seedr   size              ?r>   g?r@   r   r!   r   r   )r5   float32	complex64randomdefault_rngrangenormalastype
issubdtypecomplexfloatingasarrayr6   r$   r	   r   r   )r&   r;   r?   r@   r    rngkr7   ir'   r(   r8   s               r)   test_randomTestCholesky.test_random*   sE   
 R\\ ::tii###/qA

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

277133<!+59A!$A!BA-!ABGGACCL AHQa0!? r,   c                     Sn[         R                  " U[         R                  SS9n[         R                  " / SQ/ SQ/ SQ/ SQ/5      US S2S S24'   [	        US	S
S9  g )Ni  rA   r?   r@   )   r   )r^   r]   r   )r   r`   r4   r   )r_   r   r   r4   r]   FT)r/   overwrite_a)r5   eyefloat64r   r	   )r&   r;   xs      r)   test_int_overflowTestCholesky.test_int_overflowC   s[     q66!2::S1q88^+**, -q!RaRy
 48r,   dtdt_bc           	      ,   [        SUS9n[        U5      nUR                  S:X  d   eUR                  [        [        R
                  " SUS95      R                  :X  d   eUS4n[        R                  " / US9n[        XV5      nUR                  S:X  d   eUR                  [        [        R
                  " SUS9S4[        R                  " SUS95      R                  :X  d   e[        SUS9n[        XV5      nUR                  S:X  d   eUR                  [        [        R
                  " SUS9S4[        R                  " SUS95      R                  :X  d   e[        / 5      n[        / /5      n	/ n
/ /nXX4 H  n[        [        [        U5        M     g )Nr   r   r?   r   Tr   )r   r	   shaper?   r5   rb   rU   r   onesr   assert_raises
ValueError)r&   rg   rh   r'   r(   c_and_lowerbrd   r8   a2a3a4s               r)   
test_emptyTestCholesky.test_emptyR   sw    &#QKww&   ww(266!2#67=====$iJJr&k%ww$ww)RVVAR%8$$?%'WWQd%;==BUC 	C C &%k%ww&   ww)RVVAR%8$$?%'WWQd%;==BUC 	C C 2YB4[T2"A*h2 #r,   rm   )r   r   r   r   r   c                     [         R                  R                  SS9nUR                  US9n[        R
                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f)NrE   rF   rH   zExpected a square matrixmatch)r5   rN   rO   rQ   pytestr   rp   r	   r&   rm   rV   r'   s       r)   test_invalid_shapeTestCholesky.test_invalid_shapeo   sL    ii###/JJEJ"]]:-GHQK IHH   A
A)c                    Sn[         R                  R                  SS9n[         R                  " [         R                  " UR                  U4S95      R                  U5      * 5      nUR                  X34S9R                  U5      n[         R                  " U[         R                  5      (       a%  USUR                  X34S9R                  U5      -  -  n[         R                  " Xe-  [         R                  " UR                  5      -  US9n[        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f	Nr=   rE   rF   rH   rJ   rK   zInternal potrf return infor|   )r5   rN   rO   diagabsrQ   rR   rS   rT   rU   r6   r$   r~   r   r   r	   r&   r?   r@   r;   rV   lmbdrd   r'   s           r)   test_non_posdefTestCholesky.test_non_posdefw   s     ii###/wwszztz45<<UCCDJJQFJ#**51== 2 233cjjqfj-44U;;;AJJqx"''!##,.e<]];.JKQK LKK   'D<<
E
c                    [         R                  R                  SS9nSnUR                  XU4S9nUR	                  U5      nXfR
                  -  nUR	                  X#S9n[         R                  " U5      n[        U40 UD6n	UR                  SS5      n
U
=(       a4    U[        L=(       a%    UR                  S   =(       d    UR                  S	   n[         R                  " Xy5      U:X  d   e[         R                  " Xx:H  5      U:w  d   eg )
NrE   rF   r4   rH   rK   ra   FF_CONTIGUOUSC_CONTIGUOUS)r5   rN   rO   rQ   rR   r$   copyr	   getintflagsshares_memoryall)r&   overwrite_kwr?   r@   rV   r;   rd   r'   a_refr(   ra   	a_inplaces               r)   test_overwrite_args TestCholesky.test_overwrite_args   s     ii###/JJQFJ#HHUOGHHUH(
Q','"&&}e<  Ne3&6 N''.1LQWW^5L 	 %222vvaj!Y...r,   r"   TFc                    [         R                  R                  SS9nSnUR                  X34S9n[         R                  " XDR
                  -  5      n[         R                  " U5      n[        XQSS9nU(       aJ  [        [         R                  " USS9[         R                  " U5      S	S
9  [        XwR
                  -  US	S
9  g [        [         R                  " USS9[         R                  " U5      S	S
9  [        UR
                  U-  US	S
9  g )NrE   rF   r4   rH   T)r"   ra   r   )rW   r   r   r_   )r5   rN   rO   rQ   asfortranarrayr$   r   r	   r   triur   tril)r&   r"   rV   r;   rd   r'   r   r(   s           r)   test_overwrite_cleaning$TestCholesky.test_overwrite_cleaning   s     ii###/JJQFJ#a##g&
Q6BGGAOR]]1-=EJAGU7BGGA,bmmA.>UKACC!GU7r,   )rB   rA   noncontig_Cnoncontig_Fra   c                 L   [         R                  R                  SS9nSnUR                  Xf4S9n[         R                  " U[         R
                  5      (       a  USUR                  Xf4S9-  -   nXwR                  5       R                  -  U[         R                  " U5      -  -   R                  U5      n[        XS9n	UR                  S5      (       a}  UR                  S5      (       a  S	OS
n
[         R                  " SU-  SU-  4XJS9nXS S S2S S S24'   US S S2S S S24   nUR                  S   (       a   eUR                  S   (       a   eO[         R                  " XS9nU(       a)  [         R                   U[         R"                  " US5      '   O([         R                   U[         R$                  " US5      '   [        XUSS9n['        XSS9  U(       a&  ['        XR                  5       R                  -  USS9  g ['        UR                  5       R                  U-  USS9  g )NrE   rF   r4   rH   rJ   r!   	noncontig_FrA   rB   r   r   r\   r   r   rK   r   r_   F)r"   ra   r/   r   r   gvIh%<=)r5   rN   rO   rQ   rS   rT   r6   r$   rb   rR   r	   
startswithendswithzerosr   r   nantriu_indicestril_indicesr   )r&   r"   r@   ra   r?   rV   r;   rd   r'   c_ref	big_ordera_biga_nanr(   s                 r)   test_nan_in_unused_triangle(TestCholesky.test_nan_in_unused_triangle   s    ii###/JJQFJ#== 2 233B!000A^a"&&)m+33E:( K(($~~d33IHHac1Q3ZuFE#A#ss(O#A#ss(OE{{>222{{>2222HHQ,E +-66E"//!Q'(,.FFE"//!R()U["')u-A

NAE:AFFHJJNAE:r,    N)__name__
__module____qualname____firstlineno__r*   r1   r9   r~   markparametrizer5   rL   rc   rM   
complex128rY   xslowre   r   floatcomplexrv   r   r   r   r   r   r   __static_attributes__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            	          \ rS rSrSrS rS rS rS rS r	\
R                  R                  S\\\R                   \\R$                  /5      \
R                  R                  S	\\\R                   \\R$                  /5      S
 5       5       rSrg)TestCholeskyBanded   z1Tests for cholesky_banded() and cho_solve_banded.c                 p   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        USSS9n[        U5      nUS	   U[        [	        S
5      5      [        [	        S
5      5      4'   USSS 24   US'   [        XR                  U-  SS9  [        / SQ5      n[        US4USS9n[        U/ SQSS9  g )N      @      ?        r   r   r         ?r   r   r   r   皙?r   r   r   r         r   r   r   r   r   r   r   Fr0   r_   r]   r   r   r   r   r   r   r   r   r   r   r   r   @r   r.   r   r   r   r   r   r
   r   listrP   r   r$   r   r&   r'   abr(   ufacrr   rd   s          r)   r1   $TestCholeskyBanded.test_check_finite   s    '''') *
 )(* +Be%@!}/0uT%(^T%(^+,%&q!"uX!"66D=u5&'aZ?/e<r,   c                 p   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        USS9n[        U5      nUS	   U[        [	        S
5      5      [        [	        S
5      5      4'   USSS 24   US'   [        XR                  U-  SS9  [        / SQ5      n[        US4U5      n[        U/ SQSS9  g )Nr   r   r   r   r   r   Fr!   r_   r]   r   r   r   r   r   r   r   r   r   s          r)   test_upper_real"TestCholeskyBanded.test_upper_real   s    '''') *
 )(* +Be,!}/0uT%(^T%(^+,%&q!"uX!"66D=u5&'aZ+/e<r,   c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        USS9n[        U5      nUS	   U[        [	        S
5      5      [        [	        S
5      5      4'   USSS 24   US'   [        U[        R                  " UR                  5      U-  SS9  [        / SQ5      n[        US4U5      n[        U/ SQSS9  g )Nr   r   r   r   r          ɿr   r           ?r   )r   r   r   r   r   Fr!   r_   r]   r   r   r   r   r   )r   r   y      @ɿy      @?r   
r   r
   r   r   rP   r   r5   r6   r$   r   r   s          r)   test_upper_complex%TestCholeskyBanded.test_upper_complex  s    '')(* +
 +(* +Be,!}/0uT%(^T%(^+,%&q!"uX!"277466?T1>23aZ+/e<r,   c                 p   [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        USS9n[        U5      nUS	   U[        [	        S
5      5      [        [	        S
5      5      4'   USS S24   US'   [        XUR                  -  SS9  [        / SQ5      n[        US4U5      n[        U/ SQSS9  g )Nr   r   r   r   r   )r   r   r   r   Tr!   r   r]   r   r   r   r   r   r   r   r   r   r&   r'   r   r(   lfacrr   rd   s          r)   test_lower_real"TestCholeskyBanded.test_lower_real  s    '''') *
 ()+ ,Bd+!}/0tT%(^T%(^+,%&q"1"uX!"$&&=u5&'aY*/e<r,   c                    [        / SQ/ SQ/ SQ/ SQ/5      n[        / SQ/ SQ/5      n[        USS9n[        U5      nUS	   U[        [	        S
5      5      [        [	        S
5      5      4'   USS S24   US'   [        X[        R                  " UR                  5      -  SS9  [        / SQ5      n[        US4U5      n[        U/ SQSS9  g )Nr   r   r   r   r   )r   r   r   r   Tr!   r   r]   r   r   r   r   r   )r   y              ?y        ffffff@gffffff@)r   r   rJ   r   r   r   s          r)   test_lower_complex%TestCholeskyBanded.test_lower_complex+  s    '')(* +
 (*, -Bd+!}/0tT%(^T%(^+,%&q"1"uX!""''$&&/1>()aY*0u=r,   rg   rh   c                 *   [        SUS9n[        U5      nUR                  S:X  d   e[        [        R                  " SS/SS//US95      nUR
                  UR
                  :X  d   eUS4n[        R                  " / US9n[        Xg5      nUR                  S:X  d   e[        US4[        R                  " SUS95      R
                  n	UR
                  U	:X  d   e[        SUS9n[        Xg5      nUR                  S:X  d   eUR
                  U	:X  d   eg )Nrj   rk   r   r   Trl   r   )	r   r
   rm   r5   r   r?   rU   r   rn   )
r&   rg   rh   r   cbr7   cb_and_lowerrr   rd   dtype_nonemptys
             r)   rv   TestCholeskyBanded.test_empty>  s    6$R xx6!!!BHHq!fq!f%5R@Axx177"""DzJJr&\-ww$)1d)RWWQd5KLRRww.(((&%\-ww&   ww.(((r,   r   N)r   r   r   r   __doc__r1   r   r   r   r   r~   r   r   r   r   r5   rL   r   rM   rv   r   r   r,   r)   r   r      s    ;=&=&=&=&>& [[TC

GR\\#RS[[Vc5"**gr||%TU) V T)r,   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestOverwriteiW  c                 &    [        [        S/5        g N)r   r   )r   r	   r&   s    r)   test_choleskyTestOverwrite.test_choleskyX  s    Hvh/r,   c                 &    [        [        S/5        g r   )r   r   r   s    r)   test_cho_factorTestOverwrite.test_cho_factor[  s    J1r,   c                 f   ^ [        / SQ/ SQ/ SQ/5      n[        U5      m[        U4S jS/5        g )N)r   r_   r   )r_   r   r_   )r   r_   r   c                    > [        TU 5      $ )N)r   rr   xchos    r)   <lambda>.TestOverwrite.test_cho_solve.<locals>.<lambda>a  s    ia&8r,   rx   )r   r   r   r&   rd   r   s     @r)   test_cho_solveTestOverwrite.test_cho_solve^  s*    :{J78!}84&Ar,   c                 &    [        [        S/5        g )Nry   )r   r
   r   s    r)   test_cholesky_banded"TestOverwrite.test_cholesky_bandedc  s    OfX6r,   c                 `   ^ [        / SQ/ SQ/5      n[        U5      m[        U4S jS/5        g )N)r   r_   r_   )r   r   r   c                     > [        TS4U 5      $ )NF)r   r   s    r)   r  5TestOverwrite.test_cho_solve_banded.<locals>.<lambda>i  s    &6e}a&Hr,   rx   )r   r
   r   r  s     @r)   test_cho_solve_banded#TestOverwrite.test_cho_solve_bandedf  s,    ;	*+q!H!F	$r,   r   N)
r   r   r   r   r   r   r  r  r  r   r   r,   r)   r   r   W  s    02B
7$r,   r   c                      \ rS rSr\R
                  R                  S\\\	R                  \\	R                  /5      S 5       r\R
                  R                  S/ SQ5      \R
                  R                  S\	R                  \	R                  \	R                  \	R                  /5      \R
                  R                  SSS	/5      \R
                  R                  S
SS/5      S 5       5       5       5       r\R
                  R                  S/ SQ5      S 5       r\R
                  R                  S\	R                  \	R                  \	R                  \	R                  /5      \R
                  R                  SSS	/5      S 5       5       r\\R
                  R                  S\\/5      \R
                  R                  SSS	/5      \R
                  R                  S
SS/5      S 5       5       5       5       rSrg)TestChoFactorim  rg   c                     [         R                  " SUS9n[        U5      u  p4UR                  S:X  d   e[        [         R                  " SUS95      u  pTUR
                  UR
                  :X  d   eg )Nrj   rk   r   )r5   r   r   rm   rb   r?   )r&   rg   r'   rd   r"   xxs         r)   rv   TestChoFactor.test_emptyn  s\    HHV2&a=ww&   rvvar23	ww"(("""r,   r;   r<   r?   r@   rB   rA   r"   TFc                    U[         R                  [         R                  4;   a  SOSn[         R                  R	                  SS9n[         R
                  " [         R                  " UR                  U4S9R                  U5      5      5      nUR                  X4S9R                  U5      n[         R                  " U[         R                  5      (       a%  USUR                  X4S9R                  U5      -  -  n[         R                  " X-  [         R                  " UR                  5      -  US9n	[        XS9n
[        XS9u  pX:X  d   eU(       aL  [         R                   " U5      n[#        XUS	9  [#        X[         R                  " UR                  5      -  US	9  g [         R$                  " U5      n[#        XUS	9  [#        U	[         R                  " UR                  5      U-  US	9  g )
Ngh㈵>rD   rE   rF   rH   rJ   rK   r!   r   )r5   rL   rM   rN   rO   r   r   rQ   rR   rS   rT   rU   r6   r$   r	   r   r   r   r   )r&   r;   r?   r@   r"   r    rV   r   rd   r'   r(   c_f	lower_outlus                  r)   rY   TestChoFactor.test_randomx  sp    R\\ ::tii###/wwrvvcjjqdj3::5ABCJJQFJ#**51== 2 233cjjqfj-44U;;;AJJqx"''!##,.e<Q$#A3!!! AAt,A277133</d;AAt,Arwwqss|a/d;r,   rm   )rx   rz   ry   c                     [         R                  R                  SS9nUR                  US9n[        R
                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f)NrE   rF   rH   z!Expected a square matrix or batchr|   )r5   rN   rO   rQ   r~   r   rp   r   r   s       r)   r    TestChoFactor.test_invalid_shape  sL    ii###/JJEJ"]]:-PQqM RQQr   c                    Sn[         R                  R                  SS9n[         R                  " [         R                  " UR                  U4S95      R                  U5      * 5      nUR                  X34S9R                  U5      n[         R                  " U[         R                  5      (       a%  USUR                  X34S9R                  U5      -  -  n[         R                  " Xe-  [         R                  " UR                  5      -  US9n[        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = fr   )r5   rN   rO   r   r   rQ   rR   rS   rT   rU   r6   r$   r~   r   r   r   r   s           r)   r   TestChoFactor.test_non_posdef  s     ii###/wwszztz45<<UCCDJJQFJ#**51== 2 233cjjqfj-44U;;;AJJqx"''!##,.e<]];.JKqM LKKr   c                     [         R                  R                  SS9nSnUR                  Xf4S9nUR	                  U5      nXwR
                  -  nUR	                  X#S9n[         R                  " U5      n	[        U40 UDSU0D6u  pUR                  SS5      nU=(       a4    U[        L=(       a%    UR                  S	   =(       d    UR                  S
   n[         R                  " X5      U:X  d   e[         R                  " X:H  5      U:w  d   eg )NrE   rF   r4   rH   rK   r"   ra   Fr   r   )r5   rN   rO   rQ   rR   r$   r   r   r   r   r   r   r   )r&   r   r?   r@   r"   rV   r;   rd   r'   r   r(   ra   r   s                r)   r   !TestChoFactor.test_overwrite_args  s    
 ii###/JJQFJ#HHUOGHHUH(
a=<=u="&&}e<  Ne3&6 N''.1LQWW^5L 	 %222vvaj!Y...r,   r   N)r   r   r   r   r~   r   r   r   r   r5   rL   r   rM   rv   rc   r   rY   r   r   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  )r~   numpyr5   numpy.testingr   r   ro   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,   