
    BpjI                        S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
JrJrJrJrJrJrJr  S SKJrJrJrJr  S SKr\R0                  " SS9S   S   r\S	   (       a  \R4                  " S
SS9rS SKJr  SrS r  " S S5      r!  " S S\!5      r" " S S\!5      r$  " S S\!5      r% " S S\!5      r& " S S5      r'  " S S\'5      r( " S! S"\'5      r)  " S# S$\'5      r* " S& S'\'5      r+ " S( S)5      r,  " S* S+\,5      r- " S- S.\,5      r.  " S/ S0\,5      r/ " S2 S3\,5      r0 " S4 S55      r1  " S6 S7\15      r2 " S9 S:\15      r3  " S; S<\15      r4 " S> S?\15      r5 " S@ SA5      r6  " SB SC\65      r7 " SE SF\65      r8  " SG SH\65      r9 " SJ SK\65      r: g! \# a     " S S5      r" GNf = f! \# a     " S S5      r% GNf = f! \# a     " S  S5      r( GNf = f! \# a     " S% S$5      r* GNf = f! \# a     " S, S+5      r- GNf = f! \# a     " S1 S05      r/ GNf = f! \# a     " S8 S75      r2 Nf = f! \# a     " S= S<5      r4 Nf = f! \# a     " SD SC5      r7 Nf = f! \# a     " SI SH5      r9 Nf = f)L    )productN)float32float64	complex64
complex128arangearrayzerosshape	transposenewaxiscommon_type	conjugate)assert_array_equalassert_allcloseassert_array_almost_equalassert_dicts)modezBuild Dependenciesblaszcython blas ilp64TzLP64 _fblas wasn't built)allow_module_levelreason)_fblas   c                 @   [        UR                  5      S:X  a  SnUS S 2[        4   nOSn[        U R                  S   UR                  S   :H  5        [	        U R                  S   UR                  S   4[        X5      5      n[        U R                  S   5       HW  n[        UR                  S   5       H8  nSn[        U R                  S   5       H  nX`XG4   XU4   -  -  nM     XcXE4'   M:     MY     U(       a  UR                  U R                  S   45      nU$ )N   TFr   )lenr   r   r   r
   r   rangereshape)abb_is_vectorcijsks           Y/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_fblas.pymatrixmultiplyr)   %   s    
177|qajMAGGAJ!''!*$%qwwqz1771:&A(9:A1771:qwwqz"AA1771:&qtWqAw&& 'adG	 #  IIqwwqzm$H    c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)BaseAxpy;   zMixin class for axpy tests c                     [        SU R                  S9n[        SUR                  S9nUS-  U-   nU R                  X5      n[        X25        g )N      @dtype      ?r   r1   	blas_funcr   selfxyreal_ys       r(   test_default_aBaseAxpy.test_default_a>   sE    2TZZ(2QWW%2aNN1 6%r*   c                     [        SU R                  S9n[        SUR                  S9nUS-  U-   nU R                  XSS9n[        X25        g )Nr/   r0   )r    r3   r5   s       r(   test_simpleBaseAxpy.test_simpleE   sI    2TZZ(2QWW%2aNN12N&6%r*   c                     [        SU R                  S9n[        SUR                  5      n[        SUR                  S9nUS S S2   S-  U-   nU R                  XSSSS9n[	        X25        g )N      @r0      r/      )r    nincxr   r1   r
   r4   r   r5   s       r(   test_x_strideBaseAxpy.test_x_strideL   se    2TZZ(!QWW2QWW%3Q31NN12N36%r*   c                     [        SU R                  S9n[        SUR                  5      nUS-  US S S2   -   nU R                  XSSSS9n[	        X2S S S2   5        g )Nr/   r0      rB   rA   )r    rC   incyrE   r5   s       r(   test_y_strideBaseAxpy.test_y_strideT   s]    2TZZ(!QWW2a!fNN12N36SqS6*r*   c           	          [        SU R                  S9n[        SUR                  5      nUS S S2   S-  US S S2   -   nU R                  XSSSSS9n[	        X2S S S2   5        g )	N      (@r0   rI      r/   rB   rA   )r    rC   rD   rJ   rE   r5   s       r(   test_x_and_y_strideBaseAxpy.test_x_and_y_stride[   sh    3djj)!QWW3Q31SqS6!NN12N;6SqS6*r*   c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = f	NrN   r0   rI   failed for 1st keywordmatchrO   r   rC   rD   r   r1   r
   pytestraises	Exceptionr4   r6   r7   r8   s      r(   test_x_bad_sizeBaseAxpy.test_x_bad_sizeb   P    3djj)!QWW]]9,DENN111N- FEE   A
A-c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = f	NrN   r0   rI   rT   rU   rA   r   rC   rJ   rX   r\   s      r(   test_y_bad_sizeBaseAxpy.test_y_bad_sizeh   r_   r`    N)__name__
__module____qualname____firstlineno____doc__r:   r=   rF   rK   rP   r]   rd   __static_attributes__rf   r*   r(   r,   r,   ;   s(    &&&&++..r*   r,   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSaxpyp   rf   N)
rg   rh   ri   rj   fblassaxpyr4   r   r1   rl   rf   r*   r(   rn   rn   p       KK	r*   rn   c                       \ rS rSrSrg)rn   t   rf   Nrg   rh   ri   rj   rl   rf   r*   r(   rn   rn   t       r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDaxpyx   rf   N)
rg   rh   ri   rj   rp   daxpyr4   r   r1   rl   rf   r*   r(   rx   rx   x       IEr*   rx   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCaxpy~   rf   N)
rg   rh   ri   rj   rp   caxpyr4   r   r1   rl   rf   r*   r(   r}   r}   ~       KK	r*   r}   c                       \ rS rSrSrg)r}      rf   Nru   rf   r*   r(   r}   r}      rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZaxpy   rf   N)
rg   rh   ri   rj   rp   zaxpyr4   r   r1   rl   rf   r*   r(   r   r          IEr*   r   c                   *    \ rS rSrSrS rS rS rSrg)BaseScal   zMixin class for scal testing c                 p    [        SU R                  S9nUS-  nU R                  SU5      n[        X!5        g Nr/   r0   r3   r6   r7   real_xs      r(   r=   BaseScal.test_simple   s3    2TZZ(2NN2q!6%r*   c                     [        SU R                  S9nUR                  5       nUS S S2   [        SU R                  5      -  US S S2'   U R	                  SUSSS9n[        X!5        g )Nr@   r0   rB   r/   rA   rW   )r   r1   copyr	   r4   r   r   s      r(   rF   BaseScal.test_x_stride   s`    2TZZ(!fU2tzz22ssNN2qAAN.6%r*   c                     [        SU R                  S9n[        R                  " [        SS9   U R                  SUSSS9  S S S 5        g ! , (       d  f       g = f)	NrN   r0   rT   rU   g       @rO   r   rW   )r   r1   rY   rZ   r[   r4   )r6   r7   s     r(   r]   BaseScal.test_x_bad_size   sB    3djj)]]9,DENN2qAAN. FEEs   A


Arf   N)	rg   rh   ri   rj   rk   r=   rF   r]   rl   rf   r*   r(   r   r      s    (&&/r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSscal   rf   N)
rg   rh   ri   rj   rp   sscalr4   r   r1   rl   rf   r*   r(   r   r      rr   r*   r   c                       \ rS rSrSrg)r      rf   Nru   rf   r*   r(   r   r      rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDscal   rf   N)
rg   rh   ri   rj   rp   dscalr4   r   r1   rl   rf   r*   r(   r   r      r{   r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCscal   rf   N)
rg   rh   ri   rj   rp   cscalr4   r   r1   rl   rf   r*   r(   r   r      r   r*   r   c                       \ rS rSrSrg)r      rf   Nru   rf   r*   r(   r   r      rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZscal   rf   N)
rg   rh   ri   rj   rp   zscalr4   r   r1   rl   rf   r*   r(   r   r      r   r*   r   c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)BaseCopy   zMixin class for copy testing c                     [        SU R                  S9n[        [        U5      UR                  5      nU R	                  X5      n[        X5        g r   )r   r1   r
   r   r4   r   r\   s      r(   r=   BaseCopy.test_simple   s<    2TZZ(%(AGG$NN1 1 r*   c                     [        SU R                  S9n[        SUR                  5      nU R                  XSSS9n[	        US S S2   U5        g Nr@   r0   rA   rB   rW   rE   r\   s      r(   rF   BaseCopy.test_x_stride   sH    2TZZ(!QWWNN111N-1SqS61%r*   c                     [        SU R                  S9n[        SUR                  5      nU R                  XSSS9n[	        XS S S2   5        g )Nr/   r0   rI   rA   rB   rc   rE   r\   s      r(   rK   BaseCopy.test_y_stride   sF    2TZZ(!QWWNN111N-1!f%r*   c                     [        SU R                  S9n[        SUR                  5      nU R                  XSSSS9n[	        US S S2   US S S2   5        g )NrN   r0   rI   rA   rO   rB   rC   rD   rJ   rE   r\   s      r(   rP   BaseCopy.test_x_and_y_stride   sR    3djj)!QWWNN1111N51SqS61SqS6*r*   c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = frS   rX   r\   s      r(   r]   BaseCopy.test_x_bad_size   r_   r`   c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = frb   rX   r\   s      r(   rd   BaseCopy.test_y_bad_size   r_   r`   rf   Nrg   rh   ri   rj   rk   r=   rF   rK   rP   r]   rd   rl   rf   r*   r(   r   r      s#    (!&&+..r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestScopy   rf   N)
rg   rh   ri   rj   rp   scopyr4   r   r1   rl   rf   r*   r(   r   r      rr   r*   r   c                       \ rS rSrSrg)r      rf   Nru   rf   r*   r(   r   r      rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDcopy   rf   N)
rg   rh   ri   rj   rp   dcopyr4   r   r1   rl   rf   r*   r(   r   r      r{   r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCcopyi  rf   N)
rg   rh   ri   rj   rp   ccopyr4   r   r1   rl   rf   r*   r(   r   r     r   r*   r   c                       \ rS rSrSrg)r   i  rf   Nru   rf   r*   r(   r   r     rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZcopyi	  rf   N)
rg   rh   ri   rj   rp   zcopyr4   r   r1   rl   rf   r*   r(   r   r   	  r   r*   r   c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)BaseSwapi  zMixin class for swap tests c                     [        SU R                  S9n[        [        U5      UR                  5      nUR	                  5       nUR	                  5       nU R                  X5      u  p[        X15        [        XB5        g r   )r   r1   r
   r   r   r4   r   r6   r7   r8   	desired_x	desired_ys        r(   r=   BaseSwap.test_simple  s\    2TZZ(%(AGG$FFH	FFH	~~a#9(9(r*   c                    [        SU R                  S9n[        SUR                  5      nUR                  5       nUR                  5       S S S2   nU R	                  XSSS9u  p[        X1S S S2   5        [        XB5        g r   r   r1   r
   r   r4   r   r   s        r(   rF   BaseSwap.test_x_stride  sn    2TZZ(!QWWFFH	FFHSqSM	~~aaa~09!f-9(r*   c                    [        SU R                  S9n[        SUR                  5      nUR                  5       S S S2   nUR                  5       nU R	                  XSSS9u  p[        X15        [        XBS S S2   5        g )Nr/   r0   rI   rB   rA   rc   r   r   s        r(   rK   BaseSwap.test_y_stride&  sn    2TZZ(!QWWFFHSqSM	FFH	~~aaa~09(9!f-r*   c                    [        SU R                  S9n[        SUR                  5      nUR                  5       S S S2   nUR                  5       S S S2   nU R	                  XSSSS9u  p[        X1S S S2   5        [        XBS S S2   5        g )NrN   r0   rI   rB   rO   rA   r   r   r   s        r(   rP   BaseSwap.test_x_and_y_stride/  s    3djj)!QWWFFHSqSM	FFHSqSM	~~aaaa~89!f-9!f-r*   c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = frS   rX   r\   s      r(   r]   BaseSwap.test_x_bad_size8  r_   r`   c                     [        SU R                  S9n[        SUR                  5      n[        R                  " [
        SS9   U R                  XSSS9  S S S 5        g ! , (       d  f       g = frb   rX   r\   s      r(   rd   BaseSwap.test_y_bad_size>  r_   r`   rf   Nr   rf   r*   r(   r   r     s#    &))....r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSswapiF  rf   N)
rg   rh   ri   rj   rp   sswapr4   r   r1   rl   rf   r*   r(   r   r   F  rr   r*   r   c                       \ rS rSrSrg)r   iJ  rf   Nru   rf   r*   r(   r   r   J  rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDswapiN  rf   N)
rg   rh   ri   rj   rp   dswapr4   r   r1   rl   rf   r*   r(   r   r   N  r{   r*   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCswapiT  rf   N)
rg   rh   ri   rj   rp   cswapr4   r   r1   rl   rf   r*   r(   r   r   T  r   r*   r   c                       \ rS rSrSrg)r   iX  rf   Nru   rf   r*   r(   r   r   X  rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZswapi\  rf   N)
rg   rh   ri   rj   rp   zswapr4   r   r1   rl   rf   r*   r(   r   r   \  r   r*   r   c                   ^    \ rS rSrSrSS jrS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)BaseGemvie  zMixin class for gemv tests c                     [         R                  R                  S5      n[        SU R                  S9nU R                  [
        [        4;   a  [        SU R                  S9n[        SU R                  S9U-  n[        SU R                  S9U-  nUR                  SSS5      R                  U R                  5      U-  n[        [        U5      S   U-  U R                  S9U-  n[        [        U5      S   U-  U R                  S9U-  n	XVXxU	4$ )	N  r   r0   y      ?      ?r2   g        )rA   rA   r   )nprandomdefault_rngr	   r1   r   r   normalastyper   r   )
r6   x_stridey_striderngmultalphabetar    r7   r8   s
             r(   get_dataBaseGemv.get_datah  s    ii##D)Qdjj)::)Z00TZZ0Db

+d2Rtzz*T1JJr2v&--djj9D@58A;x'tzz:TA58A;x'tzz:TAA!##r*   c                     U R                  5       u  pp4nU[        X45      -  X%-  -   nU R                  XXBU5      n[        Xe5        g Nr   r)   r4   r   r6   r   r   r    r7   r8   r   s          r(   r=   BaseGemv.test_simplet  sD    #}}Q1...tv5	NN5Qa0!)/r*   c                 |    U R                  5       u  pp4n[        X45      nU R                  SX45      n[        Xe5        g )Nr   r   r   s          r(   test_default_beta_yBaseGemv.test_default_beta_yz  s6    #}}Q1"1(	NN1a#!)/r*   c           	          U R                  5       u  pp4nU[        [        U5      U5      -  X%-  -   nU R                  XXBUSS9n[	        Xe5        g )Nr   transr   r)   r   r4   r   r   s          r(   test_simple_transposeBaseGemv.test_simple_transpose  sN    #}}Q1.1q99$&@	NN5QaqN9!)/r*   c           	          U R                  5       u  pp4nU[        [        [        U5      5      U5      -  X%-  -   nU R	                  XXBUSS9n[        Xe5        g )NrB   r  )r   r)   r   r   r4   r   r   s          r(   test_simple_transpose_conj#BaseGemv.test_simple_transpose_conj  sS    #}}Q1.9Q<)@!DDTVK	NN5QaqN9!)/r*   c           	          U R                  SS9u  pp4nU[        X4S S S2   5      -  X%-  -   nU R                  XXBUSS9n[        Xe5        g )NrB   r   )rD   r   r   s          r(   rF   BaseGemv.test_x_stride  sU    #}}a}8Q1.ccF33DF:	NN5QaaN8!)/r*   c           
          U R                  SS9u  pp4nU[        [        U5      US S S2   5      -  X%-  -   nU R                  XXBUSSS9n[	        Xe5        g )NrB   r  r   r  rD   r  r   s          r(   test_x_stride_transpose BaseGemv.test_x_stride_transpose  s]    #}}a}8Q1.1q1v>>tvE	NN5QaqqNA!)/r*   c                 F   U R                  SS9u  pp4n[        R                  " [        SS9   U R	                  SX4SUSSS9nS S S 5        [        R                  " [        SS9   U R	                  SX4SUSSS9nS S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)	NrB   r  zfailed for 3rd argumentrU   r   r   rA   r  r   rY   rZ   r[   r4   r6   r   r   r    r7   r8   s         r(   test_x_stride_assertBaseGemv.test_x_stride_assert  s    #}}a}8Q1]]9,EFq!1AA>A G]]9,EFq!1AA>A GF GFFF   B#B
B
B c           	          U R                  SS9u  pp4nUR                  5       nU[        X45      -  X%S S S2   -  -   US S S2'   U R                  XXBUSS9n[	        Xe5        g )NrB   r   )rJ   )r   r   r)   r4   r   r   s          r(   rK   BaseGemv.test_y_stride  sh    #}}a}8Q1FFH	~a33D3Q3K?	#A#NN5QaaN8!)/r*   c           
          U R                  SS9u  pp4nUR                  5       nU[        [        U5      U5      -  X%S S S2   -  -   US S S2'   U R	                  XXBUSSS9n[        Xe5        g )NrB   r  r   r  rJ   )r   r   r)   r   r4   r   r   s          r(   test_y_stride_transpose BaseGemv.test_y_stride_transpose  sp    #}}a}8Q1FFH	~ilA>>tccF{J	#A#NN5QaqqNA!)/r*   c                 F   U R                  SS9u  pp4n[        R                  " [        SS9   U R	                  SX4SUSSS9nS S S 5        [        R                  " [        SS9   U R	                  SX4SUSSS9nS S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)	NrB   r  zfailed for 2nd keywordrU   r   r   rA   r  r  r  s         r(   test_y_stride_assertBaseGemv.test_y_stride_assert  s    #}}a}8Q1]]9,DEq!1AA>A F]]9,DEq!1AA>A FE FEEEr  rf   N)r   r   )rg   rh   ri   rj   rk   r   r=   r  r	  r  rF   r  r  rK   r   r#  rl   rf   r*   r(   r   r   e  s<    &
$000000?00?r*   r   c                       \ rS rSr\R
                  r\r\	R                  R                  \R                  S:g  SS9S 5       rSrg)	TestSgemvi  darwinzMacOS specific test)r   c                 |  ^ ^ S
S jmS
U4S jjnU 4S jn[        SSSS5      n[        R                  R                  S5      nU Ht  u  pVpxUR                  Xg45      n	UR                  U5      n
[        R                  " X5      nU" X[        R
                  US	9nU" X[        R
                  US	9nU" XU5        Mv     g )Nc                 b   U" 5       n[         R                  " U 5      n[         R                  " XTR                  -  U-   [         R                  S9nUR
                  S   S   n[        U5       H  nXx-   U-  S:X  d  M    O   UWXUR                  -  -    R                  US9nUR                  XS9$ )Nr0   datar   order)	r   prodr
   nbytesuint8__array_interface__r   viewr   )	r   alignr1   r,  dNtmpaddressoffsets	            r(   aligned_array2TestSgemv.test_sgemv_on_osx.<locals>.aligned_array  s    GGGENhhq88|e3288D11&9!<#ElF(E1Q6 + &!((
!2388u8E{{5{66r*   c                 @   > T" U R                   XU5      nU S S  US S & U$ r   )r   )arrr2  r1   r,  alignedr8  s        r(   
as_aligned/TestSgemv.test_sgemv_on_osx.<locals>.as_aligned  s'    '		5G V
r*   c                 >   > [        TR                  SX5      USSS9  g )Nr2   gh㈵>gHz>)rtolatol)r   r4   )AXdesiredr6   s      r(   assert_dot_close5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_close  s    sA 97%)6r*   )       )i'  )   Y   )CFr   r+  )rK  )r   r   r   r   dotr   )r6   r=  rE  testdatar   r2  mrC   a_orderA_dX_drD  A_fX_fr8  s   `             @r(   test_sgemv_on_osxTestSgemv.test_sgemv_on_osx  s    76 x9jIH))''-C(0$!jj!(jjm&&* RZZwG RZZwG 73 )1r*   rf   N)rg   rh   ri   rj   rp   sgemvr4   r   r1   rY   markskipifsysplatformrU  rl   rf   r*   r(   r&  r&    sA    KK				CLLH4=R		S"	4 
T"	4r*   r&  c                       \ rS rSrSrg)r&  i  rf   Nru   rf   r*   r(   r&  r&    rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDgemvi  rf   N)
rg   rh   ri   rj   rp   dgemvr4   r   r1   rl   rf   r*   r(   r^  r^    r{   r*   r^  c                   0    \ rS rSr\R
                  r\rSr	g)	TestCgemvi  rf   N)
rg   rh   ri   rj   rp   cgemvr4   r   r1   rl   rf   r*   r(   ra  ra    r   r*   ra  c                       \ rS rSrSrg)ra  i  rf   Nru   rf   r*   r(   ra  ra    rv   r*   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZgemvi  rf   N)
rg   rh   ri   rj   rp   zgemvr4   r   r1   rl   rf   r*   r(   re  re    r   r*   re  );	itertoolsr   rZ  numpyr   rY   r   r   r   r   r   r	   r
   r   r   r   r   r   numpy.testingr   r   r   r   scipyshow_configblas_configskip
pytestmarkscipy.linalgr   rp   accuracyr)   r,   rn   AttributeErrorrx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&  r^  ra  re  rf   r*   r(   <module>rr     s    
  K K K K  W-.BCFK"#$>@J ) ,1. 1.hH  
H  / /,H  
H  %. %.^H  
H  1. 1.hH  
H  O? O?d,'4H '4\ 
H  
-d7q      N      @      J      T      s   F F, >G G 6G1 H .H H5 &I =I! F)(F),G ?G GGG.-G.1HHHHH21H25IIII!I43I4