Ë
    ÏÍ:jîI  ã                   óØ  — 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           úr/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/linalg/tests/test_fblas.pyÚmatrixmultiplyr)   %   s  € Ü
ˆ1�7‰7ƒ|�qÒØˆØŠa”ˆj‰M‰àˆÜˆA�G‰G�A‰J˜!Ÿ'™' !™*Ñ$Ô%Üˆq�w‰w�q‰z˜1Ÿ7™7 1™:Ð&¬°A°qÓ(9Ó:€AÜ�1—7‘7˜1‘:Óò ˆÜ�q—w‘w˜q‘zÓ"ò 	ˆAØˆAÜ˜1Ÿ7™7 1™:Ó&ò '�Ø�Q�q˜!�t‘W˜q  A ™wÑ&Ñ&‘ð'àˆAˆa�ˆdŠGñ		ðñ Ø�I‰I�q—w‘w˜q‘z�mÓ$ˆØ€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   € Ü�2˜TŸZ™ZÔ(ˆÜ�2˜QŸW™WÔ%ˆØ�2‘�a‘ˆØ�N‰N˜1˜aÓ ˆÜ˜6 1Õ%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   € Ü�2˜TŸZ™ZÔ(ˆÜ�2˜QŸW™WÔ%ˆØ�2‘�a‘ˆØ�N‰N˜1˜a 2ˆNÓ&ˆÜ˜6 1Õ%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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆÜ�2˜QŸW™WÔ%ˆØ‘3�Q�3‘˜‘˜1‘ˆØ�N‰N˜1˜a 2¨°ˆNÓ3ˆÜ˜6 1Õ%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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆØ�2‘�a™˜!˜‘f‘ˆØ�N‰N˜1˜a 2¨°ˆNÓ3ˆÜ˜6 1¡S q S¡6Õ*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   € Ü�3˜dŸj™jÔ)ˆÜ�!�Q—W‘WÓˆØ‘3�Q�3‘˜‘˜1™S˜q˜S™6Ñ!ˆØ�N‰N˜1˜a 2¨°¸ˆNÓ;ˆÜ˜6 1¡S q S¡6Õ*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   € Ü�3˜dŸj™jÔ)ˆÜ�!�Q—W‘WÓˆÜ�]‰]œ9Ð,DÔEñ 	.Ø�N‰N˜1˜a 1¨1ˆNÔ-÷	.÷ 	.ñ 	.úó   Á	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   ó   „ Ø—K‘Kˆ	Ø‰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   ~   ó   „ Ø—K‘Kˆ	Ø‰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   € Ü�2˜TŸZ™ZÔ(ˆØ�2‘ˆØ�N‰N˜2˜qÓ!ˆÜ˜6 1Õ%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   € Ü�2˜TŸZ™ZÔ(ˆØ—‘“ˆØ™˜!˜‘fœU 2 t§z¡zÓ2Ñ2ˆ‰s�ˆs‰Ø�N‰N˜2˜q A¨AˆNÓ.ˆÜ˜6 1Õ%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   € Ü�3˜dŸj™jÔ)ˆÜ�]‰]œ9Ð,DÔEñ 	/Ø�N‰N˜2˜q A¨AˆNÔ.÷	/÷ 	/ñ 	/ú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@   € Ü�2˜TŸZ™ZÔ(ˆÜ”%˜“(˜AŸG™GÓ$ˆØ�N‰N˜1˜aÓ ˆÜ˜1˜aÕ 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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆØ�N‰N˜1˜a 1¨1ˆNÓ-ˆÜ˜1™S˜q˜S™6 1Õ%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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆØ�N‰N˜1˜a 1¨1ˆNÓ-ˆÜ˜1˜a¡ ! ™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   € Ü�3˜dŸj™jÔ)ˆÜ�!�Q—W‘WÓˆØ�N‰N˜1˜a 1¨1°1ˆNÓ5ˆÜ˜1™S˜q˜S™6 1¡S q S¡6Õ*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   € Ü�2˜TŸZ™ZÔ(ˆÜ”%˜“(˜AŸG™GÓ$ˆØ—F‘F“Hˆ	Ø—F‘F“Hˆ	Ø�~‰~˜a Ó#‰ˆˆ1Ü˜9 aÔ(Ü˜9 aÕ(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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆØ—F‘F“Hˆ	Ø—F‘F“H™S˜q˜S‘Mˆ	Ø�~‰~˜a  a¨aˆ~Ó0‰ˆˆ1Ü˜9 a©¨!¨¡fÔ-Ü˜9 aÕ(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   € Ü�2˜TŸZ™ZÔ(ˆÜ�!�Q—W‘WÓˆØ—F‘F“H™S˜q˜S‘Mˆ	Ø—F‘F“Hˆ	Ø�~‰~˜a  a¨aˆ~Ó0‰ˆˆ1Ü˜9 aÔ(Ü˜9 a©¨!¨¡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ˆ   € Ü�3˜dŸj™jÔ)ˆÜ�!�Q—W‘WÓˆØ—F‘F“H™S˜q˜S‘Mˆ	Ø—F‘F“H™S˜q˜S‘Mˆ	Ø�~‰~˜a  a¨a°aˆ~Ó8‰ˆˆ1Ü˜9 a©¨!¨¡fÔ-Ü˜9 a©¨!¨¡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ì   € Ü�i‰i×#Ñ# DÓ)ˆÜ�Q˜dŸj™jÔ)ˆØ�:‰:œ)¤ZÐ0Ñ0Ü˜ T§Z¡ZÔ0ˆDÜ�b §
¡
Ô+¨dÑ2ˆÜ�R˜tŸz™zÔ*¨TÑ1ˆØ�J‰J�r˜2˜vÓ&×-Ñ-¨d¯j©jÓ9¸DÑ@ˆÜ”5˜“8˜A‘;˜xÑ'¨t¯z©zÔ:¸TÑAˆÜ”5˜“8˜A‘;˜xÑ'¨t¯z©zÔ:¸TÑAˆØ�d˜A˜q !Ð#Ð#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   € Ø#Ÿ}™}›Ñˆˆt�Q˜˜1Øœ.¨¨AÓ.Ñ.¨t°A©vÑ5ˆ	Ø�N‰N˜5 ! 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@   € Ø#Ÿ}™}›Ñˆˆt�Q˜˜1Ü" 1 aÓ(ˆ	Ø�N‰N˜1˜a Ó#ˆÜ! )¨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   € Ø#Ÿ}™}›Ñˆˆt�Q˜˜1Øœ.¬°1«°qÓ9Ñ9¸$¸q¹&Ñ@ˆ	Ø�N‰N˜5 ! Q¨¨a°qˆNÓ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_   € Ø#Ÿ}™}›Ñˆˆt�Q˜˜1Øœ.¬´9¸Q³<Ó)@À!ÓDÑDÀTÈ!ÁVÑKˆ	Ø�N‰N˜5 ! Q¨¨a°qˆNÓ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Ñˆˆt�Q˜˜1Øœ.¨¨A©c°¨c©FÓ3Ñ3°D¸±FÑ:ˆ	Ø�N‰N˜5 ! Q¨¨a°aˆNÓ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Ñˆˆt�Q˜˜1Øœ.¬°1«°q¹¸1¸±vÓ>Ñ>¸tÀA¹vÑEˆ	Ø�N‰N˜5 ! Q¨¨a°q¸qˆNÓ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Ñˆˆt�Q˜˜1Ü�]‰]œ9Ð,EÔFñ 	?Ø—‘˜q ! Q¨¨1°A¸A�Ó>ˆA÷	?ä�]‰]œ9Ð,EÔFñ 	?Ø—‘˜q ! Q¨¨1°A¸A�Ó>ˆ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Ñˆˆt�Q˜˜1Ø—F‘F“Hˆ	Øœ~¨a°Ó3Ñ3°D¸¹3¸Q¸3¹±KÑ?ˆ	‘#�A�#‰Ø�N‰N˜5 ! Q¨¨a°aˆNÓ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Ñˆˆt�Q˜˜1Ø—F‘F“Hˆ	Øœ~¬i¸«l¸AÓ>Ñ>¸tÀAÁcÈÀcÁF¹{ÑJˆ	‘#�A�#‰Ø�N‰N˜5 ! Q¨¨a°q¸qˆNÓ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Ñˆˆt�Q˜˜1Ü�]‰]œ9Ð,DÔEñ 	?Ø—‘˜q ! Q¨¨1°A¸A�Ó>ˆA÷	?ä�]‰]œ9Ð,DÔEñ 	?Ø—‘˜q ! Q¨¨1°A¸A�Ó>ˆ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�ä—G‘G˜E“N�Ü—h‘h˜q 1§8¡8™|¨eÑ3¼2¿8¹8ÔD�Ø×1Ñ1°&Ñ9¸!Ñ<�ä# E›lò �FØ &Ñ(¨EÑ1°QÓ6Ùðð ˜& ¨¨!¯(©(©
Ñ!2Ð3×8Ñ8¸uÐ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   gñhãˆµøä>gH¯¼šò×z>)ÚrtolÚatol)r   r3   )ÚAÚXÚdesiredr5   s      €r(   Úassert_dot_closez5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_closeÒ  s!   ø€ Ü §¡¨s°A°qÓ 9¸7Ø%)°ö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¨°9¸jÓIˆHÜ—)‘)×'Ñ'¨Ó-ˆCØ(0ò 4Ñ$��q˜!˜WØ—j‘j ! Q Ó(�Ø—j‘j “m�ÜŸ&™&  cÓ*�á   e¬R¯Z©Z¸wÔG�Ù   e¬R¯Z©Z¸wÔG�Ù   c¨7Õ3ñ4r*   N)r^   r_   r`   rf   Úsgemvr3   r   r0   rS   ÚmarkÚskipifÚsysÚplatformr%  rb   r*   r(   rù   rù   ¸  sA   „ Ø—K‘Kˆ	Øˆà	�‰×	Ñ	˜CŸL™L¨HÑ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ÑCÀFÑK€ØÐ"Ò#Ø�—‘°Ø$>ô@€Jõ )ð €ò÷,1.ñ 1.ðhô�Hô ô�ô ð
ô�Hô ô�ô ÷/ñ /ð,ô�Hô ô�ô ð
ô�Hô ô�ô ÷%.ñ %.ð^ô�Hô ô�ô ð
ô�Hô ô�ô ÷1.ñ 1.ðhô�Hô ô�ô ð
ô�Hô ô�ô ÷O?ñ O?ðd,ô'4�Hô '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)