
    ^MhH                     0   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n# e$ r  G d d
          ZY nw xY w G d de          Z	  G d de          Zn# e$ r  G d d          ZY nw xY w G d de          Z G d d          Z	  G d de          Zn# e$ r  G d d          ZY nw xY w G d de          Z 	  G d de          Z!n# e$ r  G d d          Z!Y nw xY w G d de          Z" G d d           Z#	  G d! d"e#          Z$n# e$ r  G d# d"          Z$Y nw xY w G d$ d%e#          Z%	  G d& d'e#          Z&n# e$ r  G d( d'          Z&Y nw xY w G d) d*e#          Z' G d+ d,          Z(	  G d- d.e(          Z)n# e$ r  G d/ d.          Z)Y nw xY w G d0 d1e(          Z*	  G d2 d3e(          Z+n# e$ r  G d4 d3          Z+Y nw xY w G d5 d6e(          Z, G d7 d8          Z-	  G d9 d:e-          Z.n# e$ r  G d; d:          Z.Y nw xY w G d< d=e-          Z/	  G d> d?e-          Z0n# e$ r  G d@ d?          Z0Y nw xY w G dA dBe-          Z1	 dS )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                 V   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 ]]}t          |j        d                   D ]@}d}t          | j        d                   D ]}|| ||f         |||f         z  z  }||||f<   A^|r!|                    | j        d         f          }|S )N   TFr   )lenr
   r   r   r	   r   rangereshape)abb_is_vectorcijsks           ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_fblas.pymatrixmultiplyr#      s4   
17||qaaajMAGAJ!'!*$%%%qwqz171:&Aq(9(9::A171:  qwqz"" 	 	AA171:&& ' 'Qq!tWqAw&&AadGG		
  %IIqwqzm$$H    c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
BaseAxpyz Mixin class for axpy tests c                     t          d| j                  }t          d|j                  }|dz  |z   }|                     ||          }t          ||           d S )N      @dtype      ?r   r*   	blas_funcr   selfxyreal_ys       r"   test_default_azBaseAxpy.test_default_a3   s`    2TZ(((2QW%%%2aNN1a  61%%%%%r$   c                     t          d| j                  }t          d|j                  }|dz  |z   }|                     ||d          }t          ||           d S )Nr(   r)   )r   r,   r.   s       r"   test_simplezBaseAxpy.test_simple:   sd    2TZ(((2QW%%%2aNN1a2N&&61%%%%%r$   c                     t          d| j                  }t          d|j                  }t          d|j                  }|d d d         dz  |z   }|                     ||ddd          }t	          ||           d S )N      @r)      r(      )r   nincxr   r*   r	   r-   r   r.   s       r"   test_x_stridezBaseAxpy.test_x_strideA   s    2TZ(((!QW2QW%%%33Q31NN1a2N3361%%%%%r$   c                     t          d| j                  }t          d|j                  }|dz  |d d d         z   }|                     ||ddd          }t	          ||d d d                    d S )Nr(   r)      r9   r8   )r   r:   incyr<   r.   s       r"   test_y_stridezBaseAxpy.test_y_strideI   sy    2TZ(((!QW2a!fNN1a2N3361SSqS6*****r$   c                     t          d| j                  }t          d|j                  }|d d d         dz  |d d d         z   }|                     ||dddd          }t	          ||d d d                    d S )	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   s    3dj)))!QW33Q31SSqS6!NN1a2N;;61SSqS6*****r$   c                     t          d| j                  }t          d|j                  }t          j        t
          d          5  |                     ||dd           d d d            d S # 1 swxY w Y   d S 	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       3dj)))!QW]9,DEEE 	. 	.NN1a11N---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.   A..A25A2c                     t          d| j                  }t          d|j                  }t          j        t
          d          5  |                     ||dd           d d d            d S # 1 swxY w Y   d S 	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dS 	TestSaxpyN)rX   rY   rZ   fblassaxpyr-   r   r*   r\   r$   r"   r_   r_   e           K	r$   r_   c                       e Zd ZdS r^   rX   rY   rZ   r\   r$   r"   r_   r_   i           r$   c                        e Zd Zej        ZeZdS )	TestDaxpyN)rX   rY   rZ   r`   daxpyr-   r   r*   r\   r$   r"   rg   rg   m           IEEEr$   rg   c                        e Zd Zej        ZeZdS 	TestCaxpyN)rX   rY   rZ   r`   caxpyr-   r   r*   r\   r$   r"   rl   rl   s           K	r$   rl   c                       e Zd ZdS rk   rd   r\   r$   r"   rl   rl   w   re   r$   c                        e Zd Zej        ZeZdS )	TestZaxpyN)rX   rY   rZ   r`   zaxpyr-   r   r*   r\   r$   r"   rq   rq   {           IEEEr$   rq   c                   $    e Zd ZdZd Zd Zd ZdS )BaseScalz Mixin class for scal testing c                     t          d| j                  }|dz  }|                     d|          }t          ||           d S Nr(   r)   r,   r/   r0   real_xs      r"   r5   zBaseScal.test_simple   sH    2TZ(((2NN2q!!61%%%%%r$   c                     t          d| j                  }|                                }|d d d         t          d| j                  z  |d d d<   |                     d|dd          }t          ||           d S )Nr7   r)   r9   r(   r8   rK   )r   r*   copyr   r-   r   rx   s      r"   r=   zBaseScal.test_x_stride   s|    2TZ(((!fU2tz222sssNN2qAAN..61%%%%%r$   c                     t          d| j                  }t          j        t          d          5  |                     d|dd           d d d            d S # 1 swxY w Y   d S )	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   s    3dj)))]9,DEEE 	/ 	/NN2qAAN...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA AN)rX   rY   rZ   r[   r5   r=   rQ   r\   r$   r"   ru   ru      sG        ((& & && & &/ / / / /r$   ru   c                        e Zd Zej        ZeZdS 	TestSscalN)rX   rY   rZ   r`   sscalr-   r   r*   r\   r$   r"   r   r      rb   r$   r   c                       e Zd ZdS r~   rd   r\   r$   r"   r   r      re   r$   c                        e Zd Zej        ZeZdS )	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dS 	TestCscalN)rX   rY   rZ   r`   cscalr-   r   r*   r\   r$   r"   r   r      rn   r$   r   c                       e Zd ZdS r   rd   r\   r$   r"   r   r      re   r$   c                        e Zd Zej        ZeZdS )	TestZscalN)rX   rY   rZ   r`   zscalr-   r   r*   r\   r$   r"   r   r      rs   r$   r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	BaseCopyz Mixin class for copy testing c                     t          d| j                  }t          t          |          |j                  }|                     ||          }t          ||           d S rw   )r   r*   r	   r
   r-   r   rP   s      r"   r5   zBaseCopy.test_simple   sV    2TZ(((%((AG$$NN1a  1a     r$   c                     t          d| j                  }t          d|j                  }|                     ||dd          }t	          |d d d         |           d S Nr7   r)   r8   r9   rK   r<   rP   s      r"   r=   zBaseCopy.test_x_stride   s`    2TZ(((!QWNN1a11N--1SSqS61%%%%%r$   c                     t          d| j                  }t          d|j                  }|                     ||dd          }t	          ||d d d                    d S )Nr(   r)   r?   r8   r9   rV   r<   rP   s      r"   rA   zBaseCopy.test_y_stride   s`    2TZ(((!QWNN1a11N--1a!f%%%%%r$   c                     t          d| j                  }t          d|j                  }|                     ||ddd          }t	          |d d d         |d d d                    d S )NrC   r)   r?   r8   rD   r9   r:   r;   r@   r<   rP   s      r"   rE   zBaseCopy.test_x_and_y_stride   sl    3dj)))!QWNN1a111N551SSqS61SSqS6*****r$   c                     t          d| j                  }t          d|j                  }t          j        t
          d          5  |                     ||dd           d d d            d S # 1 swxY w Y   d S 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  |                     ||dd           d d d            d S # 1 swxY w Y   d S 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      st        ((! ! !& & && & &+ + +. . .. . . . .r$   r   c                        e Zd Zej        ZeZdS 	TestScopyN)rX   rY   rZ   r`   scopyr-   r   r*   r\   r$   r"   r   r      rb   r$   r   c                       e Zd ZdS r   rd   r\   r$   r"   r   r      re   r$   c                        e Zd Zej        ZeZdS )	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dS 	TestCcopyN)rX   rY   rZ   r`   ccopyr-   r   r*   r\   r$   r"   r   r      rn   r$   r   c                       e Zd ZdS r   rd   r\   r$   r"   r   r      re   r$   c                        e Zd Zej        ZeZdS )	TestZcopyN)rX   rY   rZ   r`   zcopyr-   r   r*   r\   r$   r"   r   r      rs   r$   r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	BaseSwapz Mixin class for swap tests c                 8   t          d| j                  }t          t          |          |j                  }|                                }|                                }|                     ||          \  }}t          ||           t          ||           d S rw   )r   r*   r	   r
   r{   r-   r   r/   r0   r1   	desired_x	desired_ys        r"   r5   zBaseSwap.test_simple	  s    2TZ(((%((AG$$FFHH	FFHH	~~a##19a(((9a(((((r$   c                 H   t          d| j                  }t          d|j                  }|                                }|                                d d d         }|                     ||dd          \  }}t          ||d d d                    t          ||           d S r   r   r*   r	   r{   r-   r   r   s        r"   r=   zBaseSwap.test_x_stride  s    2TZ(((!QWFFHH	FFHHSSqSM	~~aaa~0019a!f---9a(((((r$   c                 H   t          d| j                  }t          d|j                  }|                                d d d         }|                                }|                     ||dd          \  }}t          ||           t          ||d d d                    d S )Nr(   r)   r?   r9   r8   rV   r   r   s        r"   rA   zBaseSwap.test_y_stride  s    2TZ(((!QWFFHHSSqSM	FFHH	~~aaa~0019a(((9a!f-----r$   c                 n   t          d| j                  }t          d|j                  }|                                d d d         }|                                d d d         }|                     ||ddd          \  }}t          ||d d d                    t          ||d d d                    d S )NrC   r)   r?   r9   rD   r8   r   r   r   s        r"   rE   zBaseSwap.test_x_and_y_stride$  s    3dj)))!QWFFHHSSqSM	FFHHSSqSM	~~aaaa~8819a!f---9a!f-----r$   c                     t          d| j                  }t          d|j                  }t          j        t
          d          5  |                     ||dd           d d d            d S # 1 swxY w Y   d S 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  |                     ||dd           d d d            d S # 1 swxY w Y   d S rU   rL   rP   s      r"   rW   zBaseSwap.test_y_bad_size3  rR   rS   Nr   r\   r$   r"   r   r     st        &&) ) )) ) ). . .. . .. . .. . . . .r$   r   c                        e Zd Zej        ZeZdS 	TestSswapN)rX   rY   rZ   r`   sswapr-   r   r*   r\   r$   r"   r   r   ;  rb   r$   r   c                       e Zd ZdS r   rd   r\   r$   r"   r   r   ?  re   r$   c                        e Zd Zej        ZeZdS )	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dS 	TestCswapN)rX   rY   rZ   r`   cswapr-   r   r*   r\   r$   r"   r   r   I  rn   r$   r   c                       e Zd ZdS r   rd   r\   r$   r"   r   r   M  re   r$   c                        e Zd Zej        ZeZdS )	TestZswapN)rX   rY   rZ   r`   zswapr-   r   r*   r\   r$   r"   r   r   Q  rs   r$   r   c                   V    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dS )BaseGemvz Mixin class for gemv tests r   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                  |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   Qdj))):)Z000TZ000D--------T


b
+++d2Rtz***T1F2r6""))$*55<588A;x'tz:::TA588A;x'tz:::TAdAq!##r$   c                     |                                  \  }}}}}|t          ||          z  ||z  z   }|                     |||||          }t          ||           d S Nr   r#   r-   r   r/   r   r   r   r0   r1   r   s          r"   r5   zBaseGemv.test_simplej  sf    #}}tQ1.A...tAv5	NN5!Qa00!)Q/////r$   c                     |                                  \  }}}}}t          ||          }|                     d||          }t          ||           d S )Nr   r   r   s          r"   test_default_beta_yzBaseGemv.test_default_beta_yp  sT    #}}tQ1"1a((	NN1a##!)Q/////r$   c                     |                                  \  }}}}}|t          t          |          |          z  ||z  z   }|                     |||||d          }t	          ||           d S )Nr   transr   r#   r   r-   r   r   s          r"   test_simple_transposezBaseGemv.test_simple_transposev  sp    #}}tQ1.1q999$q&@	NN5!QaqN99!)Q/////r$   c                     |                                  \  }}}}}|t          t          t          |                    |          z  ||z  z   }|                     |||||d          }t          ||           d S )Nr9   r   )r   r#   r   r   r-   r   r   s          r"   test_simple_transpose_conjz#BaseGemv.test_simple_transpose_conj|  sx    #}}tQ1.9Q<<)@)@!DDDT!VK	NN5!QaqN99!)Q/////r$   c                     |                      d          \  }}}}}|t          ||d d d                   z  ||z  z   }|                     |||||d          }t          ||           d S )Nr9   r   )r;   r   r   s          r"   r=   zBaseGemv.test_x_stride  sz    #}}a}88tQ1.AcccF333DF:	NN5!QaaN88!)Q/////r$   c           	          |                      d          \  }}}}}|t          t          |          |d d d                   z  ||z  z   }|                     |||||dd          }t	          ||           d S )Nr9   r   r   r   r;   r   r   s          r"   test_x_stride_transposez BaseGemv.test_x_stride_transpose  s    #}}a}88tQ1.1q1v>>>tAvE	NN5!QaqqNAA!)Q/////r$   c           
      |   |                      d          \  }}}}}t          j        t          d          5  |                     d||d|dd          }d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d||d|dd          }d d d            d S # 1 swxY w Y   d S )	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  sC   #}}a}88tQ1]9,EFFF 	? 	?q!Q1AA>>A	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]9,EFFF 	? 	?q!Q1AA>>A	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?#   A!!A%(A%B11B58B5c                    |                      d          \  }}}}}|                                }|t          ||          z  ||d d d         z  z   |d d d<   |                     |||||d          }t	          ||           d S )Nr9   r   )r@   )r   r{   r#   r-   r   r   s          r"   rA   zBaseGemv.test_y_stride  s    #}}a}88tQ1FFHH	~a333D33Q3K?	##A#NN5!QaaN88!)Q/////r$   c           	      (   |                      d          \  }}}}}|                                }|t          t          |          |          z  ||d d d         z  z   |d d d<   |                     |||||dd          }t          ||           d S )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8tQ1FFHH	~illA>>>tAcccF{J	##A#NN5!QaqqNAA!)Q/////r$   c           
      |   |                      d          \  }}}}}t          j        t          d          5  |                     d||d|dd          }d d d            n# 1 swxY w Y   t          j        t          d          5  |                     d||d|dd          }d d d            d S # 1 swxY w Y   d S )	Nr9   r   zfailed for 2nd keywordrI   r   r   r8   r   r   r   s         r"   test_y_stride_assertzBaseGemv.test_y_stride_assert  sC   #}}a}88tQ1]9,DEEE 	? 	?q!Q1AA>>A	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?]9,DEEE 	? 	?q!Q1AA>>A	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?r   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 00 0 00 0 00 0 0? ? ?0 0 00 0 0? ? ? ? ?r$   r   c                   &    e Zd Zej        ZeZd ZdS )	TestSgemvc                     ddl m} dd l}dd l|j        dk    rd S dfd	dfd	} fd} |dd	d
d          }|D ]\  }}}}	j                            ||          }
j                            |          }                    |
|          } ||
|j        |	          } |||j        |	          } ||||           d S )Nr   )productdarwinCc                 v    |            }	                     |           }	                    ||j        z  |z   	j                  }|j        d         d         }t          |          D ]}||z   |z  dk    r n|||||j        z  z                                |          }|                    | |          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    EGGGGENNhhq18|e328hDD1&9!<#Ell  F&(E1Q66 7&!(
!22388u8EE{{5{666r$   c                 L     | j         |||          }| d d          |d d <   |S r   )r
   )arrr   r*   r   alignedr  s        r"   
as_alignedz/TestSgemv.test_sgemv_on_osx.<locals>.as_aligned  s4    '-	5%GG V
r$   c                 X    t                              d| |          |dd           d S )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 9 97%)6 6 6 6 6 6r$   )       )i'  )   Y   )r   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  sS   ))))))JJJ|x''7 7 7 7 7 7     6 6 6 6 6 wx9jIIH(0 4 4$q!WinnQ**innQ''&&c** jeRZwGGG jeRZwGGG  c733334 4r$   N)	rX   rY   rZ   r`   sgemvr-   r   r*   r$  r\   r$   r"   r   r     s/        K	(	4 (	4 (	4 (	4 (	4r$   r   c                       e Zd ZdS )r   Nrd   r\   r$   r"   r   r     re   r$   c                        e Zd Zej        ZeZdS )	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dS 	TestCgemvN)rX   rY   rZ   r`   cgemvr-   r   r*   r\   r$   r"   r,  r,    rn   r$   r,  c                       e Zd ZdS r+  rd   r\   r$   r"   r,  r,    re   r$   c                        e Zd Zej        ZeZdS )	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 K K K K K K K K K K K K K K K K K K K K K K K K ) ( ( ( ( (8 8 8 8 8 8 8 8 8 8 8 8    ,1. 1. 1. 1. 1. 1. 1. 1.h    H                 
       
    H                 
       / / / / / / / /,    H                 
       
    H                 
       %. %. %. %. %. %. %. %.^    H                 
       
    H                 
       1. 1. 1. 1. 1. 1. 1. 1.h    H                 
       
    H                 
       P? P? P? P? P? P? P? P?f1,4 ,4 ,4 ,4 ,4H ,4 ,4 ,4 ,4\             
       
    H                 
       
.f8 8s   A A*)A*<B B B ?C C#"C#5D DD8E EE.E= =FF1G   GG'G6 6H
H*H9 9II I/ /JJ