
    >qjI                        d dl mZ d dl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mZmZmZ d dlZ ej0                  d      d   d   Zed	   r ej4                  d
d      Zd dlm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/ d0e,      Z/ G d2 d3e,      Z0 G d4 d5      Z1	  G d6 d7e1      Z2 G d9 d:e1      Z3	  G d; d<e1      Z4 G d> d?e1      Z5 G d@ dA      Z6	  G dB dCe6      Z7 G dE dFe6      Z8	  G dG dHe6      Z9 G dJ dKe6      Z:	 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 d1 d0      Z/Y w xY w# e#$ r  G d8 d7      Z2Y w xY w# e#$ r  G d= d<      Z4Y w xY w# e#$ r  G dD dC      Z7Y w xY w# e#$ r  G dI dH      Z9Y w xY w)L    )productN)float32float64	complex64
complex128arangearrayzerosshape	transposenewaxiscommon_type	conjugate)assert_array_equalassert_allcloseassert_array_almost_equalassert_dicts)modezBuild Dependenciesblaszcython blas ilp64TzLP64 _fblas wasn't built)allow_module_levelreason)_fblas   c                 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           \/opt/rentech/trading_bot/.venv/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   r0   	blas_funcr   selfxyreal_ys       r(   test_default_azBaseAxpy.test_default_a>   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    r2   r4   s       r(   test_simplezBaseAxpy.test_simpleE   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   r0   r
   r3   r   r4   s       r(   test_x_stridezBaseAxpy.test_x_strideL   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/      r?   r>   )r    r@   incyrB   r4   s       r(   test_y_stridezBaseAxpy.test_y_strideT   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/   rE      r.   r?   r>   )r    r@   rA   rF   rB   r4   s       r(   test_x_and_y_stridezBaseAxpy.test_x_and_y_stride[   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	NrI   r/   rE   failed for 1st keywordmatchrJ   r   r@   rA   r   r0   r
   pytestraises	Exceptionr3   r5   r6   r7   s      r(   test_x_bad_sizezBaseAxpy.test_x_bad_sizeb   Z    3djj)!QWW]]9,DE 	.NN1a11N-	. 	. 	.   	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	NrI   r/   rE   rN   rO   r>   r   r@   rF   rR   rV   s      r(   test_y_bad_sizezBaseAxpy.test_y_bad_sizeh   rX   rY   N)__name__
__module____qualname____doc__r9   r;   rC   rG   rK   rW   r]    r*   r(   r,   r,   ;   s(    &&&&++..r*   r,   c                   (    e Zd Zej                  ZeZy	TestSaxpyN)r^   r_   r`   fblassaxpyr3   r   r0   rb   r*   r(   re   re   p       KK	r*   re   c                       e Zd Zyrd   r^   r_   r`   rb   r*   r(   re   re   t       r*   c                   (    e Zd Zej                  ZeZy)	TestDaxpyN)r^   r_   r`   rf   daxpyr3   r   r0   rb   r*   r(   rm   rm   x       IEr*   rm   c                   (    e Zd Zej                  ZeZy	TestCaxpyN)r^   r_   r`   rf   caxpyr3   r   r0   rb   r*   r(   rr   rr   ~       KK	r*   rr   c                       e Zd Zyrq   rj   rb   r*   r(   rr   rr      rk   r*   c                   (    e Zd Zej                  ZeZy)	TestZaxpyN)r^   r_   r`   rf   zaxpyr3   r   r0   rb   r*   r(   rw   rw          IEr*   rw   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/   r2   r5   r6   real_xs      r(   r;   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 )Nr=   r/   r?   r.   r>   rQ   )r   r0   copyr	   r3   r   r~   s      r(   rC   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)	NrI   r/   rN   rO   g       @rJ   r   rQ   )r   r0   rS   rT   rU   r3   )r5   r6   s     r(   rW   zBaseScal.test_x_bad_size   sJ    3djj)]]9,DE 	/NN2qAAN.	/ 	/ 	/s   AAN)r^   r_   r`   ra   r;   rC   rW   rb   r*   r(   r{   r{      s    (&&/r*   r{   c                   (    e Zd Zej                  ZeZy	TestSscalN)r^   r_   r`   rf   sscalr3   r   r0   rb   r*   r(   r   r      rh   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r      rk   r*   c                   (    e Zd Zej                  ZeZy)	TestDscalN)r^   r_   r`   rf   dscalr3   r   r0   rb   r*   r(   r   r      ro   r*   r   c                   (    e Zd Zej                  ZeZy	TestCscalN)r^   r_   r`   rf   cscalr3   r   r0   rb   r*   r(   r   r      rt   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r      rk   r*   c                   (    e Zd Zej                  ZeZy)	TestZscalN)r^   r_   r`   rf   zscalr3   r   r0   rb   r*   r(   r   r      ry   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 r}   )r   r0   r
   r   r3   r   rV   s      r(   r;   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 Nr=   r/   r>   r?   rQ   rB   rV   s      r(   rC   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/   rE   r>   r?   r\   rB   rV   s      r(   rG   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 )NrI   r/   rE   r>   rJ   r?   r@   rA   rF   rB   rV   s      r(   rK   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rM   rR   rV   s      r(   rW   zBaseCopy.test_x_bad_size   rX   rY   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r[   rR   rV   s      r(   r]   zBaseCopy.test_y_bad_size   rX   rY   N
r^   r_   r`   ra   r;   rC   rG   rK   rW   r]   rb   r*   r(   r   r      s#    (!&&+..r*   r   c                   (    e Zd Zej                  ZeZy	TestScopyN)r^   r_   r`   rf   scopyr3   r   r0   rb   r*   r(   r   r      rh   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r      rk   r*   c                   (    e Zd Zej                  ZeZy)	TestDcopyN)r^   r_   r`   rf   dcopyr3   r   r0   rb   r*   r(   r   r      ro   r*   r   c                   (    e Zd Zej                  ZeZy	TestCcopyN)r^   r_   r`   rf   ccopyr3   r   r0   rb   r*   r(   r   r     rt   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r     rk   r*   c                   (    e Zd Zej                  ZeZy)	TestZcopyN)r^   r_   r`   rf   zcopyr3   r   r0   rb   r*   r(   r   r   	  ry   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 r}   )r   r0   r
   r   r   r3   r   r5   r6   r7   	desired_x	desired_ys        r(   r;   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   r0   r
   r   r3   r   r   s        r(   rC   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/   rE   r?   r>   r\   r   r   s        r(   rG   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 )NrI   r/   rE   r?   rJ   r>   r   r   r   s        r(   rK   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rM   rR   rV   s      r(   rW   zBaseSwap.test_x_bad_size8  rX   rY   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r[   rR   rV   s      r(   r]   zBaseSwap.test_y_bad_size>  rX   rY   Nr   rb   r*   r(   r   r     s#    &))....r*   r   c                   (    e Zd Zej                  ZeZy	TestSswapN)r^   r_   r`   rf   sswapr3   r   r0   rb   r*   r(   r   r   F  rh   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r   J  rk   r*   c                   (    e Zd Zej                  ZeZy)	TestDswapN)r^   r_   r`   rf   dswapr3   r   r0   rb   r*   r(   r   r   N  ro   r*   r   c                   (    e Zd Zej                  ZeZy	TestCswapN)r^   r_   r`   rf   cswapr3   r   r0   rb   r*   r(   r   r   T  rt   r*   r   c                       e Zd Zyr   rj   rb   r*   r(   r   r   X  rk   r*   c                   (    e Zd Zej                  ZeZy)	TestZswapN)r^   r_   r`   rf   zswapr3   r   r0   rb   r*   r(   r   r   \  ry   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                 D   t         j                  j                  d      }t        d| j                        }| j                  t
        t        fv rt        d| j                        }t        d| j                        |z  }t        d| j                        |z  }|j                  ddd      j                  | j                        |z  }t        t        |      d   |z  | j                        |z  }t        t        |      d   |z  | j                        |z  }	|||||	fS )	N  r   r/   y      ?      ?r1   g        )r>   r>   r   )nprandomdefault_rngr	   r0   r   r   normalastyper   r   )
r5   x_stridey_striderngmultalphabetar    r6   r7   s
             r(   get_datazBaseGemv.get_datah  s    ii##D)Qdjj)::)Z00TZZ0Db

+d2Rtzz*T1JJr2v&--djj9D@58A;x'tzz:TA58A;x'tzz:TAdAq!##r*   c                     | j                         \  }}}}}|t        ||      z  ||z  z   }| j                  |||||      }t        ||       y Nr   r)   r3   r   r5   r   r   r    r6   r7   r   s          r(   r;   zBaseGemv.test_simplet  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_yz  s@    #}}tQ1"1a(	NN1a#!)Q/r*   c                     | j                         \  }}}}}|t        t        |      |      z  ||z  z   }| j                  |||||d      }t	        ||       y )Nr   transr   r)   r   r3   r   r   s          r(   test_simple_transposezBaseGemv.test_simple_transpose  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 )Nr?   r   )r   r)   r   r   r3   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 )Nr?   r   )rA   r   r   s          r(   rC   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 )Nr?   r   r   r   rA   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)	Nr?   r   zfailed for 3rd argumentrO   r   r   r>   r   r   rS   rT   rU   r3   r5   r   r   r    r6   r7   s         r(   test_x_stride_assertzBaseGemv.test_x_stride_assert  s    #}}a}8tQ1]]9,EF 	?q!Q1AA>A	?]]9,EF 	?q!Q1AA>A	? 	?	? 	?	? 	?   B0BBB'c                     | j                  d      \  }}}}}|j                         }|t        ||      z  ||d d d   z  z   |d d d<   | j                  |||||d      }t	        ||       y )Nr?   r   )rF   )r   r   r)   r3   r   r   s          r(   rG   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 )Nr?   r   r   r   rF   )r   r   r)   r   r3   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)	Nr?   r   zfailed for 2nd keywordrO   r   r   r>   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	?]]9,DE 	?q!Q1AA>A	? 	?	? 	?	? 	?r   N)r   r   )r^   r_   r`   ra   r   r;   r   r   r   rC   r   r   rG   r   r   rb   r*   r(   r   r   e  s<    &
$000000?00?r*   r   c                       e Zd Zej                  ZeZej                  j                  ej                  dk7  d      d        Zy)	TestSgemvdarwinzMacOS specific test)r   c                     d
dd
fd	} fd}t        dddd      }t        j                  j                  d      }|D ]  \  }}}}|j                  ||f      }	|j                  |      }
t        j                  |	|
      } ||	|t        j
                  |	      } ||
|t        j
                  |	      } ||||        y )Nc                 r    |       }t        j                  |       }t        j                  ||j                  z  |z   t         j                        }|j
                  d   d   }t        |      D ]  }||z   |z  dk(  s n ||||j                  z  z    j                  |      }|j                  | |      S )Nr/   datar   order)	r   prodr
   nbytesuint8__array_interface__r   viewr   )	r   alignr0   r   dNtmpaddressoffsets	            r(   aligned_arrayz2TestSgemv.test_sgemv_on_osx.<locals>.aligned_array  s    GGGENhhq188|e3288D11&9!<#El F&(E1Q6 &!((
!2388u8E{{5{66r*   c                 B     | j                   |||      }| d d  |d d  |S r   )r   )arrr  r0   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 )Nr1   gh㈵>gHz>)rtolatol)r   r3   )AXdesiredr5   s      r(   assert_dot_closez5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_close  s!    sAq 97%)6r*   )       )i'  )   Y   )CFr   r   )r  )r   r   r   r   dotr   )r5   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6 x9jIH))''-C(0 4$q!Wjj!Q(jjm&&c* eRZZwG eRZZwG c734r*   N)r^   r_   r`   rf   sgemvr3   r   r0   rS   markskipifsysplatformr%  rb   r*   r(   r   r     sA    KK				CLLH4=R		S"	4 
T"	4r*   r   c                       e Zd Zy)r   Nrj   rb   r*   r(   r   r     rk   r*   c                   (    e Zd Zej                  ZeZy)	TestDgemvN)r^   r_   r`   rf   dgemvr3   r   r0   rb   r*   r(   r-  r-    ro   r*   r-  c                   (    e Zd Zej                  ZeZy	TestCgemvN)r^   r_   r`   rf   cgemvr3   r   r0   rb   r*   r(   r1  r1    rt   r*   r1  c                       e Zd Zyr0  rj   rb   r*   r(   r1  r1    rk   r*   c                   (    e Zd Zej                  ZeZy)	TestZgemvN)r^   r_   r`   rf   zgemvr3   r   r0   rb   r*   r(   r5  r5    ry   r*   r5  );	itertoolsr   r)  numpyr   rS   r   r   r   r   r   r	   r
   r   r   r   r   r   numpy.testingr   r   r   r   scipyshow_configblas_configskip
pytestmarkscipy.linalgr   rf   accuracyr)   r,   re   AttributeErrorrm   rr   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-  r1  r5  rb   r*   r(   <module>rB     s    
  K K K K  eW-.BCFK"#$>@J ) ,1. 1.hH  
H  / /,H  
H  %. %.^H  
H  1. 1.hH  
H  O? O?d,'4H '4\ 
H  
-d7q      N      @      J      T      s   F F, ?G G 7G. H /H H- 'I >I F)(F),F?>F?GGG+*G+.H ?H HHH*)H*-H?>H?III)(I)