
    (phH                     h   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  S SKJrJrJrJr  S SK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& S'\#5      r& " S) S*\#5      r' " S+ S,5      r(  " S- S.\(5      r) " S0 S1\(5      r*  " S2 S3\(5      r+ " S5 S6\(5      r, " S7 S85      r-  " S9 S:\-5      r. " S< S=\-5      r/  " S> S?\-5      r0 " SA SB\-5      r1 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     " S( S'5      r& GNf = f! \ a     " S/ S.5      r) Nf = f! \ a     " S4 S35      r+ Nf = f! \ a     " S; S:5      r. Nf = f! \ a     " S@ S?5      r0 Nf = f)C    )float32float64	complex64
complex128arangearrayzerosshape	transposenewaxiscommon_type	conjugate)_fblas)assert_array_equalassert_allcloseassert_array_almost_equalassert_N   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           P/var/www/html/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)BaseAxpy0   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   r+   	blas_funcr   selfxyreal_ys       r"   test_default_aBaseAxpy.test_default_a3   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)   r*   )r   r-   r/   s       r"   test_simpleBaseAxpy.test_simple:   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      @r*      r)      )r   nincxr   r+   r	   r.   r   r/   s       r"   test_x_strideBaseAxpy.test_x_strideA   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)   r*      r<   r;   )r   r=   incyr?   r/   s       r"   test_y_strideBaseAxpy.test_y_strideI   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      (@r*   rC      r)   r<   r;   )r   r=   r>   rD   r?   r/   s       r"   test_x_and_y_strideBaseAxpy.test_x_and_y_strideP   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	NrH   r*   rC   failed for 1st keywordmatchrI   r   r=   r>   r   r+   r	   pytestraises	Exceptionr.   r0   r1   r2   s      r"   test_x_bad_sizeBaseAxpy.test_x_bad_sizeW   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	NrH   r*   rC   rN   rO   r;   r   r=   rD   rR   rV   s      r"   test_y_bad_sizeBaseAxpy.test_y_bad_size]   rY   rZ    N)__name__
__module____qualname____firstlineno____doc__r4   r7   r@   rE   rJ   rW   r^   __static_attributes__r`   r$   r"   r&   r&   0   s(    &&&&++..r$   r&   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSaxpye   r`   N)
ra   rb   rc   rd   fblassaxpyr.   r   r+   rf   r`   r$   r"   rh   rh   e       KK	r$   rh   c                       \ rS rSrSrg)rh   i   r`   Nra   rb   rc   rd   rf   r`   r$   r"   rh   rh   i       r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDaxpym   r`   N)
ra   rb   rc   rd   rj   daxpyr.   r   r+   rf   r`   r$   r"   rr   rr   m       IEr$   rr   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCaxpys   r`   N)
ra   rb   rc   rd   rj   caxpyr.   r   r+   rf   r`   r$   r"   rw   rw   s       KK	r$   rw   c                       \ rS rSrSrg)rw   w   r`   Nro   r`   r$   r"   rw   rw   w   rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZaxpy{   r`   N)
ra   rb   rc   rd   rj   zaxpyr.   r   r+   rf   r`   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)   r*   r-   r0   r1   real_xs      r"   r7   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:   r*   r<   r)   r;   rQ   )r   r+   copyr   r.   r   r   s      r"   r@   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)	NrH   r*   rN   rO   g       @rI   r   rQ   )r   r+   rS   rT   rU   r.   )r0   r1   s     r"   rW   BaseScal.test_x_bad_size   sB    3djj)]]9,DENN2qAAN. FEEs   A


Ar`   N)	ra   rb   rc   rd   re   r7   r@   rW   rf   r`   r$   r"   r   r      s    (&&/r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSscal   r`   N)
ra   rb   rc   rd   rj   sscalr.   r   r+   rf   r`   r$   r"   r   r      rl   r$   r   c                       \ rS rSrSrg)r      r`   Nro   r`   r$   r"   r   r      rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDscal   r`   N)
ra   rb   rc   rd   rj   dscalr.   r   r+   rf   r`   r$   r"   r   r      ru   r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCscal   r`   N)
ra   rb   rc   rd   rj   cscalr.   r   r+   rf   r`   r$   r"   r   r      rz   r$   r   c                       \ rS rSrSrg)r      r`   Nro   r`   r$   r"   r   r      rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZscal   r`   N)
ra   rb   rc   rd   rj   zscalr.   r   r+   rf   r`   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   r+   r	   r
   r.   r   rV   s      r"   r7   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:   r*   r;   r<   rQ   r?   rV   s      r"   r@   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)   r*   rC   r;   r<   r]   r?   rV   s      r"   rE   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 )NrH   r*   rC   r;   rI   r<   r=   r>   rD   r?   rV   s      r"   rJ   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rM   rR   rV   s      r"   rW   BaseCopy.test_x_bad_size   rY   rZ   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r\   rR   rV   s      r"   r^   BaseCopy.test_y_bad_size   rY   rZ   r`   Nra   rb   rc   rd   re   r7   r@   rE   rJ   rW   r^   rf   r`   r$   r"   r   r      s#    (!&&+..r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestScopy   r`   N)
ra   rb   rc   rd   rj   scopyr.   r   r+   rf   r`   r$   r"   r   r      rl   r$   r   c                       \ rS rSrSrg)r      r`   Nro   r`   r$   r"   r   r      rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDcopy   r`   N)
ra   rb   rc   rd   rj   dcopyr.   r   r+   rf   r`   r$   r"   r   r      ru   r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCcopy   r`   N)
ra   rb   rc   rd   rj   ccopyr.   r   r+   rf   r`   r$   r"   r   r      rz   r$   r   c                       \ rS rSrSrg)r      r`   Nro   r`   r$   r"   r   r      rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZcopy   r`   N)
ra   rb   rc   rd   rj   zcopyr.   r   r+   rf   r`   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   r+   r	   r
   r   r.   r   r0   r1   r2   	desired_x	desired_ys        r"   r7   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   r+   r	   r   r.   r   r   s        r"   r@   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)   r*   rC   r<   r;   r]   r   r   s        r"   rE   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 )NrH   r*   rC   r<   rI   r;   r   r   r   s        r"   rJ   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rM   rR   rV   s      r"   rW   BaseSwap.test_x_bad_size-  rY   rZ   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r\   rR   rV   s      r"   r^   BaseSwap.test_y_bad_size3  rY   rZ   r`   Nr   r`   r$   r"   r   r     s#    &))....r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestSswapi;  r`   N)
ra   rb   rc   rd   rj   sswapr.   r   r+   rf   r`   r$   r"   r   r   ;  rl   r$   r   c                       \ rS rSrSrg)r   i?  r`   Nro   r`   r$   r"   r   r   ?  rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDswapiC  r`   N)
ra   rb   rc   rd   rj   dswapr.   r   r+   rf   r`   r$   r"   r   r   C  ru   r$   r   c                   0    \ rS rSr\R
                  r\rSr	g)	TestCswapiI  r`   N)
ra   rb   rc   rd   rj   cswapr.   r   r+   rf   r`   r$   r"   r   r   I  rz   r$   r   c                       \ rS rSrSrg)r   iM  r`   Nro   r`   r$   r"   r   r   M  rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZswapiQ  r`   N)
ra   rb   rc   rd   rj   zswapr.   r   r+   rf   r`   r$   r"   r   r   Q  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)BaseGemviZ  zMixin class for gemv tests c                    [        SU R                  S9nU R                  [        [        4;   a  [        SU R                  S9nSSKJnJn  U" S5        [        SU R                  S9U-  n[        SU R                  S9U-  nU" 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
XgXU
4$ )
Nr   r*   y      ?      ?r   )normalseedi  r,   g        )r;   r;   )
r   r+   r   r   numpy.randomr   r   astyper   r
   )r0   x_stridey_stridemultr   r   alphabetar   r1   r2   s              r"   get_dataBaseGemv.get_data]  s    Qdjj)::)Z00TZZ0D-T
b

+d2Rtzz*T12r6"))$**5<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#   r.   r   r0   r   r   r   r1   r2   r   s          r"   r7   BaseGemv.test_simplej  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_yp  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   r.   r   r   s          r"   test_simple_transposeBaseGemv.test_simple_transposev  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 )Nr<   r   )r   r#   r   r   r.   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 )Nr<   r   )r>   r   r   s          r"   r@   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 )Nr<   r	  r   r  r>   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)	Nr<   r	  zfailed for 3rd argumentrO   r   r   r;   r  r   rS   rT   rU   r.   r0   r   r   r   r1   r2   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 )Nr<   r   )rD   )r   r   r#   r.   r   r   s          r"   rE   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 )Nr<   r  r   r  rD   )r   r   r#   r   r.   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)	Nr<   r  zfailed for 2nd keywordrO   r   r   r;   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  r`   N)r   r   )ra   rb   rc   rd   re   r   r7   r   r  r  r@   r  r  rE   r  r  rf   r`   r$   r"   r   r   Z  s<    &$000000?00?r$   r   c                   6    \ rS rSr\R
                  r\rS r	Sr
g)	TestSgemvi  c                   ^ ^^ SSK Jn  SS KnSS KmUR                  S:w  a  g SU4S jjmSU4S jjnU 4S jnU" SSS	S
5      nU Hz  u  pgpTR
                  R                  Xx5      n
TR
                  R                  U5      nTR                  X5      nU" XTR                  U	S9nU" XTR                  U	S9nU" XU5        M|     g )Nr   )productdarwinc                 H  > U" 5       nT	R                  U 5      nT	R                  XTR                  -  U-   T	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$ )Nr*   datar   order)prodr	   nbytesuint8__array_interface__r   viewr   )
r
   alignr+   r'  dNtmpaddressoffsetnps
            r"   aligned_array2TestSgemv.test_sgemv_on_osx.<locals>.aligned_array  s    GGGENhhq88|e3288h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
   )arrr-  r+   r'  alignedr4  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 )Nr,   gh㈵>gHz>)rtolatol)r   r.   )AXdesiredr0   s      r"   assert_dot_close5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_close  s    sA 97%)6r$   )       )i'  )   Y   )CFr&  )rG  )		itertoolsr"  sysnumpyplatformrandomranddotr   )r0   r"  rJ  r9  rA  testdatar-  mr=   a_orderA_dX_dr@  A_fX_fr4  r3  s   `              @@r"   test_sgemv_on_osxTestSgemv.test_sgemv_on_osx  s    )||x'76 x9jIH(0$!iinnQ*iinnQ'&&* RZZwG RZZwG 73 )1r$   r`   N)ra   rb   rc   rd   rj   sgemvr.   r   r+   rW  rf   r`   r$   r"   r   r     s    KK	(	4r$   r   c                       \ rS rSrSrg)r   i  r`   Nro   r`   r$   r"   r   r     rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestDgemvi  r`   N)
ra   rb   rc   rd   rj   dgemvr.   r   r+   rf   r`   r$   r"   r\  r\    ru   r$   r\  c                   0    \ rS rSr\R
                  r\rSr	g)	TestCgemvi  r`   N)
ra   rb   rc   rd   rj   cgemvr.   r   r+   rf   r`   r$   r"   r_  r_    rz   r$   r_  c                       \ rS rSrSrg)r_  i  r`   Nro   r`   r$   r"   r_  r_    rp   r$   c                   0    \ rS rSr\R
                  r\rSr	g)	TestZgemvi  r`   N)
ra   rb   rc   rd   rj   zgemvr.   r   r+   rf   r`   r$   r"   rc  rc    r   r$   rc  )2rK  r   r   r   r   r   r   r	   r
   r   r   r   r   scipy.linalgr   rj   numpy.testingr   r   r   r   rS   accuracyr#   r&   rh   AttributeErrorrr   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\  r_  rc  r`   r$   r"   <module>ri     s  K K K K )8 8  ,1. 1.hH  
H  / /,H  
H  %. %.^H  
H  1. 1.hH  
H  P? P?f1,4H ,4f 
H  
.f8      N      @      J      `      s   E E) ;F  F 3F. 
G +G G2 #H :H E&%E&)E=<E= FFF+*F+.GGGGG/.G/2HHHHH10H1