
    -iiH                     L   d dl mZ d dlZd dlZ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 d0 d/          Z-Y nw xY w G d1 d2e,          Z.	  G d3 d4e,          Z/n# e$ r  G d5 d4          Z/Y nw xY w G d6 d7e,          Z0 G d8 d9          Z1	  G d: d;e1          Z2n# e$ r  G d< d;          Z2Y nw xY w G d= d>e1          Z3	  G d? d@e1          Z4n# e$ r  G dA d@          Z4Y nw xY w G dB dCe1          Z5	 dS )D    )productN)float32float64	complex64
complex128arangearrayzerosshape	transposenewaxiscommon_type	conjugate)_fblas)assert_array_equalassert_allcloseassert_array_almost_equalassert_   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           c/var/www/html/bet.cuttalo.com/ml/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_a6   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_strideD   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*      r:   r9   )r   r;   incyr=   r/   s       r#   test_y_stridezBaseAxpy.test_y_strideL   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)   r:   r9   )r   r;   r<   rA   r=   r/   s       r#   test_x_and_y_stridezBaseAxpy.test_x_and_y_strideS   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 	NrD   r*   r@   failed for 1st keywordmatchrE   r   r;   r<   r   r+   r
   pytestraises	Exceptionr.   r0   r1   r2   s      r#   test_x_bad_sizezBaseAxpy.test_x_bad_sizeZ       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 	NrD   r*   r@   rI   rJ   r9   r   r;   rA   rM   rQ   s      r#   test_y_bad_sizezBaseAxpy.test_y_bad_size`   rS   rT   N)__name__
__module____qualname____doc__r4   r6   r>   rB   rF   rR   rX    r%   r#   r'   r'   3   s        &&& & && & && & &+ + ++ + +. . .. . . . .r%   r'   c                        e Zd Zej        ZeZdS 	TestSaxpyN)rY   rZ   r[   fblassaxpyr.   r   r+   r]   r%   r#   r`   r`   h           K	r%   r`   c                       e Zd ZdS r_   rY   rZ   r[   r]   r%   r#   r`   r`   l           r%   c                        e Zd Zej        ZeZdS )	TestDaxpyN)rY   rZ   r[   ra   daxpyr.   r   r+   r]   r%   r#   rh   rh   p           IEEEr%   rh   c                        e Zd Zej        ZeZdS 	TestCaxpyN)rY   rZ   r[   ra   caxpyr.   r   r+   r]   r%   r#   rm   rm   v           K	r%   rm   c                       e Zd ZdS rl   re   r]   r%   r#   rm   rm   z   rf   r%   c                        e Zd Zej        ZeZdS )	TestZaxpyN)rY   rZ   r[   ra   zaxpyr.   r   r+   r]   r%   r#   rr   rr   ~           IEEEr%   rr   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-   r0   r1   real_xs      r#   r6   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 )Nr8   r*   r:   r)   r9   rL   )r   r+   copyr	   r.   r   ry   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 )	NrD   r*   rI   rJ   g       @rE   r   rL   )r   r+   rN   rO   rP   r.   )r0   r1   s     r#   rR   zBaseScal.test_x_bad_size   s    3dj)))]9,DEEE 	/ 	/NN2qAAN...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA AN)rY   rZ   r[   r\   r6   r>   rR   r]   r%   r#   rv   rv      sG        ((& & && & &/ / / / /r%   rv   c                        e Zd Zej        ZeZdS 	TestSscalN)rY   rZ   r[   ra   sscalr.   r   r+   r]   r%   r#   r   r      rc   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r      rf   r%   c                        e Zd Zej        ZeZdS )	TestDscalN)rY   rZ   r[   ra   dscalr.   r   r+   r]   r%   r#   r   r      rj   r%   r   c                        e Zd Zej        ZeZdS 	TestCscalN)rY   rZ   r[   ra   cscalr.   r   r+   r]   r%   r#   r   r      ro   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r      rf   r%   c                        e Zd Zej        ZeZdS )	TestZscalN)rY   rZ   r[   ra   zscalr.   r   r+   r]   r%   r#   r   r      rt   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 rx   )r   r+   r
   r   r.   r   rQ   s      r#   r6   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 Nr8   r*   r9   r:   rL   r=   rQ   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@   r9   r:   rW   r=   rQ   s      r#   rB   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 )NrD   r*   r@   r9   rE   r:   r;   r<   rA   r=   rQ   s      r#   rF   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 rH   rM   rQ   s      r#   rR   zBaseCopy.test_x_bad_size   rS   rT   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 rV   rM   rQ   s      r#   rX   zBaseCopy.test_y_bad_size   rS   rT   N
rY   rZ   r[   r\   r6   r>   rB   rF   rR   rX   r]   r%   r#   r   r      st        ((! ! !& & && & &+ + +. . .. . . . .r%   r   c                        e Zd Zej        ZeZdS 	TestScopyN)rY   rZ   r[   ra   scopyr.   r   r+   r]   r%   r#   r   r      rc   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r      rf   r%   c                        e Zd Zej        ZeZdS )	TestDcopyN)rY   rZ   r[   ra   dcopyr.   r   r+   r]   r%   r#   r   r      rj   r%   r   c                        e Zd Zej        ZeZdS 	TestCcopyN)rY   rZ   r[   ra   ccopyr.   r   r+   r]   r%   r#   r   r      ro   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r      rf   r%   c                        e Zd Zej        ZeZdS )	TestZcopyN)rY   rZ   r[   ra   zcopyr.   r   r+   r]   r%   r#   r   r     rt   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 rx   )r   r+   r
   r   r|   r.   r   r0   r1   r2   	desired_x	desired_ys        r#   r6   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@   r:   r9   rW   r   r   s        r#   rB   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 )NrD   r*   r@   r:   rE   r9   r   r   r   s        r#   rF   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 rH   rM   rQ   s      r#   rR   zBaseSwap.test_x_bad_size0  rS   rT   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 rV   rM   rQ   s      r#   rX   zBaseSwap.test_y_bad_size6  rS   rT   Nr   r]   r%   r#   r   r   	  st        &&) ) )) ) ). . .. . .. . .. . . . .r%   r   c                        e Zd Zej        ZeZdS 	TestSswapN)rY   rZ   r[   ra   sswapr.   r   r+   r]   r%   r#   r   r   >  rc   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r   B  rf   r%   c                        e Zd Zej        ZeZdS )	TestDswapN)rY   rZ   r[   ra   dswapr.   r   r+   r]   r%   r#   r   r   F  rj   r%   r   c                        e Zd Zej        ZeZdS 	TestCswapN)rY   rZ   r[   ra   cswapr.   r   r+   r]   r%   r#   r   r   L  ro   r%   r   c                       e Zd ZdS r   re   r]   r%   r#   r   r   P  rf   r%   c                        e Zd Zej        ZeZdS )	TestZswapN)rY   rZ   r[   ra   zswapr.   r   r+   r]   r%   r#   r   r   T  rt   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   t           j                            d          }t          d| j                  }| j        t
          t          fv rt          d| j                  }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 )	N  r   r*   y      ?      ?r,   g        )r9   r9   r   )nprandomdefault_rngr	   r+   r   r   normalastyper   r   )
r0   x_stridey_striderngmultalphabetar   r1   r2   s
             r#   get_datazBaseGemv.get_data`  s   i##D))Qdj))):)Z000TZ000Db
+++d2Rtz***T1JJr2v&&--dj99D@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   r0   r   r   r   r1   r2   r   s          r#   r6   zBaseGemv.test_simplel  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_yr  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_transposex  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 )Nr:   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 )Nr:   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 )Nr:   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 )	Nr:   r   zfailed for 3rd argumentrJ   r   r   r9   r   r   rN   rO   rP   r.   r0   r   r   r   r1   r2   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 )Nr:   r   )rA   )r   r|   r$   r.   r   r   s          r#   rB   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 )Nr:   r   r   r   rA   )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 )	Nr:   r   zfailed for 2nd keywordrJ   r   r   r9   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   )rY   rZ   r[   r\   r   r6   r   r   r   r>   r   r   rB   r   r   r]   r%   r#   r   r   ]  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ej	        
                    ej        dk    d          d             ZdS )	TestSgemvdarwinzMacOS specific test)reasonc                     dddfd	} fd}t          dddd          }t          j                            d	          }|D ]\  }}}}|                    ||f          }	|                    |          }
t          j        |	|
          } ||	|t          j        |
          } ||
|t          j        |
          } ||||           d S )NCc                 z    |            }t          j        |           }t          j        ||j        z  |z   t           j                  }|j        d         d         }t          |          D ]}||z   |z  dk    r n|||||j        z  z                                |          }|                    | |          S )Nr*   datar   order)	r   prodr
   nbytesuint8__array_interface__r   viewr   )	r   alignr+   r   dNtmpaddressoffsets	            r#   aligned_arrayz2TestSgemv.test_sgemv_on_osx.<locals>.aligned_array  s    EGGGENNhq18|e328D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desiredr0   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   )r   )r   r   r   r   dotr   )r0   r  r  testdatar   r  mr;   a_orderA_dX_dr  A_fX_fr  s   `             @r#   test_sgemv_on_osxzTestSgemv.test_sgemv_on_osx  s   7 7 7 7     6 6 6 6 6 x9jIIH)''--C(0 4 4$q!Wjj!Q((jjmm&c** jeRZwGGG jeRZwGGG  c733334 4r%   N)rY   rZ   r[   ra   sgemvr.   r   r+   rN   markskipifsysplatformr!  r]   r%   r#   r   r     sX        K				CLH4=R		S	S"	4 "	4 
T	S"	4 "	4 "	4r%   r   c                       e Zd ZdS )r   Nre   r]   r%   r#   r   r     rf   r%   c                        e Zd Zej        ZeZdS )	TestDgemvN)rY   rZ   r[   ra   dgemvr.   r   r+   r]   r%   r#   r)  r)    rj   r%   r)  c                        e Zd Zej        ZeZdS 	TestCgemvN)rY   rZ   r[   ra   cgemvr.   r   r+   r]   r%   r#   r-  r-    ro   r%   r-  c                       e Zd ZdS r,  re   r]   r%   r#   r-  r-    rf   r%   c                        e Zd Zej        ZeZdS )	TestZgemvN)rY   rZ   r[   ra   zgemvr.   r   r+   r]   r%   r#   r1  r1    rt   r%   r1  )6	itertoolsr   r%  numpyr   r   r   r   r   r   r	   r
   r   r   r   r   r   scipy.linalgr   ra   numpy.testingr   r   r   r   rN   accuracyr$   r'   r`   AttributeErrorrh   rm   rr   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)  r-  r1  r]   r%   r#   <module>r9     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                 
       O? O? O? O? O? O? O? O?d,'4 '4 '4 '4 '4H '4 '4 '4 '4R             
       
    H                 
       
-d7 7s   A# #A87A8
B B.-B.C C10C1D D'&D'E E*)E*<F F F ?G G#"G#5H HH8I II.I= =JJ