
    tKgH                     P   d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZ d dlZdZd Z G d d      Z	  G d	 d
e      Z G d de      Z	  G d de      Z G d de      Z G d d      Z	  G d de      Z G d de      Z 	  G d de      Z! G d de      Z" G d d       Z#	  G d! d"e#      Z$ G d$ d%e#      Z%	  G d& d'e#      Z& G d) d*e#      Z' G d+ d,      Z(	  G d- d.e(      Z) G d0 d1e(      Z*	  G d2 d3e(      Z+ G d5 d6e(      Z, G d7 d8      Z-	  G d9 d:e-      Z. G d< d=e-      Z/	  G d> d?e-      Z0 G dA dBe-      Z1	 y# e$ r  G d d
      ZY w xY w# e$ r  G d d      ZY w xY w# e$ r  G d d      ZY 
w xY w# e$ r  G d d      Z!Y 	w xY w# e$ r  G d# d"      Z$Y w xY w# e$ r  G d( d'      Z&Y w xY w# e$ r  G d/ d.      Z)Y w xY w# e$ r  G d4 d3      Z+Y w xY w# e$ r  G d; d:      Z.Y w xY w# e$ r  G d@ d?      Z0Y w xY w)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                 4   t        |j                        dk(  rd}|d d t        f   }nd}t        | j                  d   |j                  d   k(         t	        | j                  d   |j                  d   ft        | |            }t        | j                  d         D ]W  }t        |j                  d         D ]:  }d}t        | j                  d         D ]  }|| ||f   |||f   z  z  } ||||f<   < Y |r|j                  | j                  d   f      }|S )N   TFr   )lenr
   r   r   r	   r   rangereshape)abb_is_vectorcijsks           a/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_fblas.pymatrixmultiplyr#      s   
177|qajMAGGAJ!''!*$%qwwqz1771:&Aq(9:A1771:qwwqz"AA1771:&Qq!tWqAw&& 'AadG	 #  IIqwwqzm$H    c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
BaseAxpyz Mixin class for axpy tests c                     t        d| j                        }t        d|j                        }|dz  |z   }| j                  ||      }t        ||       y )N      @dtype      ?r   r*   	blas_funcr   selfxyreal_ys       r"   test_default_azBaseAxpy.test_default_a3   sI    2TZZ(2QWW%2aNN1a 61%r$   c                     t        d| j                        }t        d|j                        }|dz  |z   }| j                  ||d      }t        ||       y )Nr(   r)   )r   r,   r.   s       r"   test_simplezBaseAxpy.test_simple:   sM    2TZZ(2QWW%2aNN1a2N&61%r$   c                     t        d| j                        }t        d|j                        }t        d|j                        }|d d d   dz  |z   }| j                  ||ddd      }t	        ||       y )N      @r)      r(      )r   nincxr   r*   r	   r-   r   r.   s       r"   test_x_stridezBaseAxpy.test_x_strideA   si    2TZZ(!QWW2QWW%3Q31NN1a2N361%r$   c                     t        d| j                        }t        d|j                        }|dz  |d d d   z   }| j                  ||ddd      }t	        ||d d d          y )Nr(   r)      r9   r8   )r   r:   incyr<   r.   s       r"   test_y_stridezBaseAxpy.test_y_strideI   sa    2TZZ(!QWW2a!fNN1a2N361SqS6*r$   c                     t        d| j                        }t        d|j                        }|d d d   dz  |d d d   z   }| j                  ||dddd      }t	        ||d d d          y )	N      (@r)   r?      r(   r9   r8   )r   r:   r;   r@   r<   r.   s       r"   test_x_and_y_stridezBaseAxpy.test_x_and_y_strideP   sl    3djj)!QWW3Q31SqS6!NN1a2N;61SqS6*r$   c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY w	NrC   r)   r?   failed for 1st keywordmatchrD   r   r:   r;   r   r*   r	   pytestraises	Exceptionr-   r/   r0   r1   s      r"   test_x_bad_sizezBaseAxpy.test_x_bad_sizeW   R    3djj)!QWW]]9,DENN1a11N- FEE   	A((A1c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY w	NrC   r)   r?   rH   rI   r8   r   r:   r@   rL   rP   s      r"   test_y_bad_sizezBaseAxpy.test_y_bad_size]   rR   rS   N)__name__
__module____qualname____doc__r3   r5   r=   rA   rE   rQ   rW    r$   r"   r&   r&   0   s(    &&&&++..r$   r&   c                   (    e Zd Zej                  ZeZy	TestSaxpyN)rX   rY   rZ   fblassaxpyr-   r   r*   r\   r$   r"   r_   r_   e       KK	r$   r_   c                       e Zd Zyr^   rX   rY   rZ   r\   r$   r"   r_   r_   i       r$   c                   (    e Zd Zej                  ZeZy)	TestDaxpyN)rX   rY   rZ   r`   daxpyr-   r   r*   r\   r$   r"   rg   rg   m       IEr$   rg   c                   (    e Zd Zej                  ZeZy	TestCaxpyN)rX   rY   rZ   r`   caxpyr-   r   r*   r\   r$   r"   rl   rl   s       KK	r$   rl   c                       e Zd Zyrk   rd   r\   r$   r"   rl   rl   w   re   r$   c                   (    e Zd Zej                  ZeZy)	TestZaxpyN)rX   rY   rZ   r`   zaxpyr-   r   r*   r\   r$   r"   rq   rq   {       IEr$   rq   c                   "    e Zd ZdZd Zd Zd Zy)BaseScalz Mixin class for scal testing c                 x    t        d| j                        }|dz  }| j                  d|      }t        ||       y Nr(   r)   r,   r/   r0   real_xs      r"   r5   zBaseScal.test_simple   s5    2TZZ(2NN2q!61%r$   c                     t        d| j                        }|j                         }|d d d   t        d| j                        z  |d d d<   | j	                  d|dd      }t        ||       y )Nr7   r)   r9   r(   r8   rK   )r   r*   copyr   r-   r   rx   s      r"   r=   zBaseScal.test_x_stride   sb    2TZZ(!fU2tzz22ssNN2qAAN.61%r$   c                     t        d| j                        }t        j                  t        d      5  | j                  d|dd       d d d        y # 1 sw Y   y xY w)	NrC   r)   rH   rI   g       @rD   r   rK   )r   r*   rM   rN   rO   r-   )r/   r0   s     r"   rQ   zBaseScal.test_x_bad_size   sB    3djj)]]9,DENN2qAAN. FEEs   AAN)rX   rY   rZ   r[   r5   r=   rQ   r\   r$   r"   ru   ru      s    (&&/r$   ru   c                   (    e Zd Zej                  ZeZy	TestSscalN)rX   rY   rZ   r`   sscalr-   r   r*   r\   r$   r"   r   r      rb   r$   r   c                       e Zd Zyr~   rd   r\   r$   r"   r   r      re   r$   c                   (    e Zd Zej                  ZeZy)	TestDscalN)rX   rY   rZ   r`   dscalr-   r   r*   r\   r$   r"   r   r      ri   r$   r   c                   (    e Zd Zej                  ZeZy	TestCscalN)rX   rY   rZ   r`   cscalr-   r   r*   r\   r$   r"   r   r      rn   r$   r   c                       e Zd Zyr   rd   r\   r$   r"   r   r      re   r$   c                   (    e Zd Zej                  ZeZy)	TestZscalN)rX   rY   rZ   r`   zscalr-   r   r*   r\   r$   r"   r   r      rs   r$   r   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	BaseCopyz Mixin class for copy testing c                     t        d| j                        }t        t        |      |j                        }| j	                  ||      }t        ||       y rw   )r   r*   r	   r
   r-   r   rP   s      r"   r5   zBaseCopy.test_simple   s@    2TZZ(%(AGG$NN1a 1a r$   c                     t        d| j                        }t        d|j                        }| j                  ||dd      }t	        |d d d   |       y Nr7   r)   r8   r9   rK   r<   rP   s      r"   r=   zBaseCopy.test_x_stride   sJ    2TZZ(!QWWNN1a11N-1SqS61%r$   c                     t        d| j                        }t        d|j                        }| j                  ||dd      }t	        ||d d d          y )Nr(   r)   r?   r8   r9   rV   r<   rP   s      r"   rA   zBaseCopy.test_y_stride   sJ    2TZZ(!QWWNN1a11N-1a!f%r$   c                     t        d| j                        }t        d|j                        }| j                  ||ddd      }t	        |d d d   |d d d          y )NrC   r)   r?   r8   rD   r9   r:   r;   r@   r<   rP   s      r"   rE   zBaseCopy.test_x_and_y_stride   sT    3djj)!QWWNN1a111N51SqS61SqS6*r$   c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY wrG   rL   rP   s      r"   rQ   zBaseCopy.test_x_bad_size   rR   rS   c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY wrU   rL   rP   s      r"   rW   zBaseCopy.test_y_bad_size   rR   rS   N
rX   rY   rZ   r[   r5   r=   rA   rE   rQ   rW   r\   r$   r"   r   r      s#    (!&&+..r$   r   c                   (    e Zd Zej                  ZeZy	TestScopyN)rX   rY   rZ   r`   scopyr-   r   r*   r\   r$   r"   r   r      rb   r$   r   c                       e Zd Zyr   rd   r\   r$   r"   r   r      re   r$   c                   (    e Zd Zej                  ZeZy)	TestDcopyN)rX   rY   rZ   r`   dcopyr-   r   r*   r\   r$   r"   r   r      ri   r$   r   c                   (    e Zd Zej                  ZeZy	TestCcopyN)rX   rY   rZ   r`   ccopyr-   r   r*   r\   r$   r"   r   r      rn   r$   r   c                       e Zd Zyr   rd   r\   r$   r"   r   r      re   r$   c                   (    e Zd Zej                  ZeZy)	TestZcopyN)rX   rY   rZ   r`   zcopyr-   r   r*   r\   r$   r"   r   r      rs   r$   r   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	BaseSwapz Mixin class for swap tests c                 
   t        d| j                        }t        t        |      |j                        }|j	                         }|j	                         }| j                  ||      \  }}t        ||       t        ||       y rw   )r   r*   r	   r
   r{   r-   r   r/   r0   r1   	desired_x	desired_ys        r"   r5   zBaseSwap.test_simple	  sd    2TZZ(%(AGG$FFH	FFH	~~a#19a(9a(r$   c                    t        d| j                        }t        d|j                        }|j                         }|j                         d d d   }| j	                  ||dd      \  }}t        ||d d d          t        ||       y r   r   r*   r	   r{   r-   r   r   s        r"   r=   zBaseSwap.test_x_stride  sv    2TZZ(!QWWFFH	FFHSqSM	~~aaa~019a!f-9a(r$   c                    t        d| j                        }t        d|j                        }|j                         d d d   }|j                         }| j	                  ||dd      \  }}t        ||       t        ||d d d          y )Nr(   r)   r?   r9   r8   rV   r   r   s        r"   rA   zBaseSwap.test_y_stride  sv    2TZZ(!QWWFFHSqSM	FFH	~~aaa~019a(9a!f-r$   c                 0   t        d| j                        }t        d|j                        }|j                         d d d   }|j                         d d d   }| j	                  ||ddd      \  }}t        ||d d d          t        ||d d d          y )NrC   r)   r?   r9   rD   r8   r   r   r   s        r"   rE   zBaseSwap.test_x_and_y_stride$  s    3djj)!QWWFFHSqSM	FFHSqSM	~~aaaa~819a!f-9a!f-r$   c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY wrG   rL   rP   s      r"   rQ   zBaseSwap.test_x_bad_size-  rR   rS   c                     t        d| j                        }t        d|j                        }t        j                  t
        d      5  | j                  ||dd       d d d        y # 1 sw Y   y xY wrU   rL   rP   s      r"   rW   zBaseSwap.test_y_bad_size3  rR   rS   Nr   r\   r$   r"   r   r     s#    &))....r$   r   c                   (    e Zd Zej                  ZeZy	TestSswapN)rX   rY   rZ   r`   sswapr-   r   r*   r\   r$   r"   r   r   ;  rb   r$   r   c                       e Zd Zyr   rd   r\   r$   r"   r   r   ?  re   r$   c                   (    e Zd Zej                  ZeZy)	TestDswapN)rX   rY   rZ   r`   dswapr-   r   r*   r\   r$   r"   r   r   C  ri   r$   r   c                   (    e Zd Zej                  ZeZy	TestCswapN)rX   rY   rZ   r`   cswapr-   r   r*   r\   r$   r"   r   r   I  rn   r$   r   c                       e Zd Zyr   rd   r\   r$   r"   r   r   M  re   r$   c                   (    e Zd Zej                  ZeZy)	TestZswapN)rX   rY   rZ   r`   zswapr-   r   r*   r\   r$   r"   r   r   Q  rs   r$   r   c                   T    e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)BaseGemvz Mixin class for gemv tests c                    t        d| j                        }| j                  t        t        fv rt        d| j                        }ddlm}m}  |d       t        d| j                        |z  }t        d| j                        |z  } |ddd	      j                  | j                        |z  }t        t        |      d   |z  | j                        |z  }	t        t        |      d   |z  | j                        |z  }
||||	|
fS )
Nr   r)   y      ?      ?r   )normalseedi  r+   g        )r8   r8   )
r   r*   r   r   numpy.randomr   r   astyper   r
   )r/   x_stridey_stridemultr   r   alphabetar   r0   r1   s              r"   get_dataz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dAq!##r$   c                     | j                         \  }}}}}|t        ||      z  ||z  z   }| j                  |||||      }t        ||       y Nr   r#   r-   r   r/   r   r   r   r0   r1   r   s          r"   r5   zBaseGemv.test_simplej  sR    #}}tQ1.A..tAv5	NN5!Qa0!)Q/r$   c                     | j                         \  }}}}}t        ||      }| j                  d||      }t        ||       y )Nr   r   r   s          r"   test_default_beta_yzBaseGemv.test_default_beta_yp  s@    #}}tQ1"1a(	NN1a#!)Q/r$   c                     | j                         \  }}}}}|t        t        |      |      z  ||z  z   }| j                  |||||d      }t	        ||       y )Nr   transr   r#   r   r-   r   r   s          r"   test_simple_transposezBaseGemv.test_simple_transposev  sZ    #}}tQ1.1q99$q&@	NN5!QaqN9!)Q/r$   c                     | j                         \  }}}}}|t        t        t        |            |      z  ||z  z   }| j	                  |||||d      }t        ||       y )Nr9   r   )r   r#   r   r   r-   r   r   s          r"   test_simple_transpose_conjz#BaseGemv.test_simple_transpose_conj|  s_    #}}tQ1.9Q<)@!DDT!VK	NN5!QaqN9!)Q/r$   c                     | j                  d      \  }}}}}|t        ||d d d         z  ||z  z   }| j                  |||||d      }t        ||       y )Nr9   r   )r;   r   r   s          r"   r=   zBaseGemv.test_x_stride  sc    #}}a}8tQ1.AccF33DF:	NN5!QaaN8!)Q/r$   c           	          | j                  d      \  }}}}}|t        t        |      |d d d         z  ||z  z   }| j                  |||||dd      }t	        ||       y )Nr9   r   r   r   r;   r   r   s          r"   test_x_stride_transposez BaseGemv.test_x_stride_transpose  si    #}}a}8tQ1.1q1v>>tAvE	NN5!QaqqNA!)Q/r$   c           
      T   | j                  d      \  }}}}}t        j                  t        d      5  | j	                  d||d|dd      }d d d        t        j                  t        d      5  | j	                  d||d|dd      }d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	Nr9   r   zfailed for 3rd argumentrI   r   r   r8   r   r   rM   rN   rO   r-   r/   r   r   r   r0   r1   s         r"   test_x_stride_assertzBaseGemv.test_x_stride_assert  s    #}}a}8tQ1]]9,EFq!Q1AA>A G]]9,EFq!Q1AA>A GF GFFF   B0BBB'c                     | j                  d      \  }}}}}|j                         }|t        ||      z  ||d d d   z  z   |d d d<   | j                  |||||d      }t	        ||       y )Nr9   r   )r@   )r   r{   r#   r-   r   r   s          r"   rA   zBaseGemv.test_y_stride  sv    #}}a}8tQ1FFH	~a33D3Q3K?	#A#NN5!QaaN8!)Q/r$   c           	          | j                  d      \  }}}}}|j                         }|t        t        |      |      z  ||d d d   z  z   |d d d<   | j	                  |||||dd      }t        ||       y )Nr9   r   r   r   r@   )r   r{   r#   r   r-   r   r   s          r"   test_y_stride_transposez BaseGemv.test_y_stride_transpose  s|    #}}a}8tQ1FFH	~ilA>>tAccF{J	#A#NN5!QaqqNA!)Q/r$   c           
      T   | j                  d      \  }}}}}t        j                  t        d      5  | j	                  d||d|dd      }d d d        t        j                  t        d      5  | j	                  d||d|dd      }d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	Nr9   r   zfailed for 2nd keywordrI   r   r   r8   r   r   r   s         r"   test_y_stride_assertzBaseGemv.test_y_stride_assert  s    #}}a}8tQ1]]9,DEq!Q1AA>A F]]9,DEq!Q1AA>A FE FEEEr   N)r   r   )rX   rY   rZ   r[   r   r5   r   r   r   r=   r   r   rA   r   r   r\   r$   r"   r   r   Z  s<    &$000000?00?r$   r   c                   .    e Zd Zej                  ZeZd Zy)	TestSgemvc                     ddl m} dd l}dd l|j                  dk7  ry dfd	dfd	} fd} |ddd	d
      }|D ]  \  }}}}	j
                  j                  ||      }
j
                  j                  |      }j                  |
|      } ||
|j                  |	      } |||j                  |	      } ||||        y )Nr   )productdarwinc                 \    |       }	j                  |       }	j                  ||j                  z  |z   	j                        }|j                  d   d   }t        |      D ]  }||z   |z  dk(  s n ||||j                  z  z    j                  |      }|j                  | |      S )Nr)   datar   order)prodr	   nbytesuint8__array_interface__r   viewr   )
r
   alignr*   r   dNtmpaddressoffsetnps
            r"   aligned_arrayz2TestSgemv.test_sgemv_on_osx.<locals>.aligned_array  s    GGGENhhq188|e3288hD11&9!<#ElF&(E1Q6 + &!((
!2388u8E{{5{66r$   c                 B     | j                   |||      }| d d  |d d  |S r   )r
   )arrr   r*   r   alignedr  s        r"   
as_alignedz/TestSgemv.test_sgemv_on_osx.<locals>.as_aligned  s)    '		5%G V
r$   c                 F    t        j                  d| |      |dd       y )Nr+   gh㈵>gHz>)rtolatol)r   r-   )AXdesiredr/   s      r"   assert_dot_closez5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_close  s!    sAq 97%)6r$   )       )i'  )   Y   )CFr   )r  )		itertoolsr   sysnumpyplatformrandomranddotr   )r/   r   r  r  r  testdatar   mr:   a_orderA_dX_dr  A_fX_fr  r  s   `              @@r"   test_sgemv_on_osxzTestSgemv.test_sgemv_on_osx  s    )||x'76 x9jIH(0$q!WiinnQ*iinnQ'&&c* eRZZwG eRZZwG c73 )1r$   N)	rX   rY   rZ   r`   sgemvr-   r   r*   r$  r\   r$   r"   r   r     s    KK	(	4r$   r   c                       e Zd Zy)r   Nrd   r\   r$   r"   r   r     re   r$   c                   (    e Zd Zej                  ZeZy)	TestDgemvN)rX   rY   rZ   r`   dgemvr-   r   r*   r\   r$   r"   r(  r(    ri   r$   r(  c                   (    e Zd Zej                  ZeZy	TestCgemvN)rX   rY   rZ   r`   cgemvr-   r   r*   r\   r$   r"   r,  r,    rn   r$   r,  c                       e Zd Zyr+  rd   r\   r$   r"   r,  r,    re   r$   c                   (    e Zd Zej                  ZeZy)	TestZgemvN)rX   rY   rZ   r`   zgemvr-   r   r*   r\   r$   r"   r0  r0    rs   r$   r0  )2r  r   r   r   r   r   r   r	   r
   r   r   r   r   scipy.linalgr   r`   numpy.testingr   r   r   r   rM   accuracyr#   r&   r_   AttributeErrorrg   rl   rq   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(  r,  r0  r\   r$   r"   <module>r6     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( ;E> F 3F* 
F? +G G) #G> :H E%$E%(E;:E;>FFF'&F'*F<;F<?GGG&%G&)G;:G;>HHH%$H%