§
    fŠtjèH  ã                   ó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           ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_fblas.pyÚmatrixmultiplyr$      s4  € Ý
ˆ1Œ7�|„|�qÒÐØˆØˆaˆaˆa•ˆjŒMˆˆàˆÝˆAŒG�AŒJ˜!œ' !œ*Ò$Ñ%Ô%Ð%ÝˆqŒw�qŒz˜1œ7 1œ:Ð&­°A°qÑ(9Ô(9Ñ:Ô:€AÝ�1”7˜1”:ÑÔð ð ˆÝ�q”w˜q”zÑ"Ô"ð 	ð 	ˆAØˆAÝ˜1œ7 1œ:Ñ&Ô&ð 'ð '�Ø�Q�q˜!�t”W˜q  A œwÑ&Ñ&��ØˆAˆa�ˆd‰GˆGð		ð
 ð %Ø�IŠI�q”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
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`   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�2˜QœWÐ%Ñ%Ô%ˆØ�2‘�a‘ˆØ�NŠN˜1˜aÑ Ô ˆÝ˜6 1Ñ%Ô%Ð%Ð%Ð%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   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�2˜Qœ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   }|                      ||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ƒ   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆÝ�2˜QœWÐ%Ñ%Ô%ˆØ�3�3�Q�3”˜‘˜1‘ˆØ�NŠN˜1˜a 2¨°ˆNÑ3Ô3ˆÝ˜6 1Ñ%Ô%Ð%Ð%Ð%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   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆØ�2‘�a˜˜˜!˜”f‘ˆØ�NŠN˜1˜a 2¨°ˆNÑ3Ô3ˆÝ˜6 1 S S q S¤6Ñ*Ô*Ð*Ð*Ð*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†   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝ�!�Q”WÑÔˆØ�3�3�Q�3”˜‘˜1˜S˜S˜q˜Sœ6Ñ!ˆØ�NŠN˜1˜a 2¨°¸ˆNÑ;Ô;ˆÝ˜6 1 S S q S¤6Ñ*Ô*Ð*Ð*Ð*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   ó»   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝ�!�Q”WÑÔˆÝŒ]�9Ð,DÐEÑEÔEð 	.ð 	.Ø�NŠN˜1˜a 1¨1ˆNÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ó   Á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Ø€E€E€Er%   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Ø€E€E€Er%   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   € Ý�2˜TœZÐ(Ñ(Ô(ˆØ�2‘ˆØ�NŠN˜2˜qÑ!Ô!ˆÝ˜6 1Ñ%Ô%Ð%Ð%Ð%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|   € Ý�2˜TœZÐ(Ñ(Ô(ˆØ—’‘”ˆØ˜˜˜!˜”f�U 2 t¤zÑ2Ô2Ñ2ˆˆsˆs�ˆs‰Ø�NŠN˜2˜q A¨AˆNÑ.Ô.ˆÝ˜6 1Ñ%Ô%Ð%Ð%Ð%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ª   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝŒ]�9Ð,DÐEÑEÔEð 	/ð 	/Ø�NŠN˜2˜q A¨AˆNÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/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   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ•%˜‘(”(˜AœGÑ$Ô$ˆØ�NŠN˜1˜aÑ Ô ˆÝ˜1˜aÑ Ô Ð Ð Ð 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`   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆØ�NŠN˜1˜a 1¨1ˆNÑ-Ô-ˆÝ˜1˜S˜S˜q˜Sœ6 1Ñ%Ô%Ð%Ð%Ð%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`   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆØ�NŠN˜1˜a 1¨1ˆNÑ-Ô-ˆÝ˜1˜a   ! œ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   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝ�!�Q”WÑÔˆØ�NŠN˜1˜a 1¨1°1ˆNÑ5Ô5ˆÝ˜1˜S˜S˜q˜Sœ6 1 S S q S¤6Ñ*Ô*Ð*Ð*Ð*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„   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ•%˜‘(”(˜AœGÑ$Ô$ˆØ—F’F‘H”Hˆ	Ø—F’F‘H”Hˆ	Ø�~Š~˜a Ñ#Ô#‰ˆˆ1Ý˜9 aÑ(Ô(Ð(Ý˜9 aÑ(Ô(Ð(Ð(Ð(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˜   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆØ—F’F‘H”Hˆ	Ø—F’F‘H”H˜S˜S˜q˜S”Mˆ	Ø�~Š~˜a  a¨aˆ~Ñ0Ô0‰ˆˆ1Ý˜9 a¨¨¨!¨¤fÑ-Ô-Ð-Ý˜9 aÑ(Ô(Ð(Ð(Ð(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˜   € Ý�2˜TœZÐ(Ñ(Ô(ˆÝ�!�Q”WÑÔˆØ—F’F‘H”H˜S˜S˜q˜S”Mˆ	Ø—F’F‘H”Hˆ	Ø�~Š~˜a  a¨aˆ~Ñ0Ô0‰ˆˆ1Ý˜9 aÑ(Ô(Ð(Ý˜9 a¨¨¨!¨¤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®   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝ�!�Q”WÑÔˆØ—F’F‘H”H˜S˜S˜q˜S”Mˆ	Ø—F’F‘H”H˜S˜S˜q˜S”Mˆ	Ø�~Š~˜a  a¨a°aˆ~Ñ8Ô8‰ˆˆ1Ý˜9 a¨¨¨!¨¤fÑ-Ô-Ð-Ý˜9 a¨¨¨!¨¤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Ñ)Ô)ˆÝ�Q˜dœjÐ)Ñ)Ô)ˆØŒ:�)¥ZÐ0Ð0Ð0Ý˜ T¤ZÐ0Ñ0Ô0ˆDÝ�b ¤
Ð+Ñ+Ô+¨dÑ2ˆÝ�R˜tœzÐ*Ñ*Ô*¨TÑ1ˆØ�JŠJ�r˜2˜vÑ&Ô&×-Ò-¨d¬jÑ9Ô9¸DÑ@ˆÝ•5˜‘8”8˜A”;˜xÑ'¨t¬zÐ:Ñ:Ô:¸TÑAˆÝ•5˜‘8”8˜A”;˜xÑ'¨t¬zÐ:Ñ:Ô:¸TÑAˆØ�d˜A˜q !Ð#Ð#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   € Ø#Ÿ}š}™œÑˆˆt�Q˜˜1Ø�.¨¨AÑ.Ô.Ñ.¨t°A©vÑ5ˆ	Ø�NŠN˜5 ! 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   € Ø#Ÿ}š}™œÑˆˆt�Q˜˜1Ý" 1 aÑ(Ô(ˆ	Ø�NŠN˜1˜a Ñ#Ô#ˆÝ! )¨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   € Ø#Ÿ}š}™œÑˆˆt�Q˜˜1Ø�.­°1©¬°qÑ9Ô9Ñ9¸$¸q¹&Ñ@ˆ	Ø�NŠN˜5 ! Q¨¨a°qˆNÑ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   € Ø#Ÿ}š}™œÑˆˆt�Q˜˜1Ø�.­µ9¸Q±<´<Ñ)@Ô)@À!ÑDÔDÑDÀTÈ!ÁVÑKˆ	Ø�NŠN˜5 ! Q¨¨a°qˆNÑ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Ñˆˆt�Q˜˜1Ø�.¨¨A¨c¨c°¨c¬FÑ3Ô3Ñ3°D¸±FÑ:ˆ	Ø�NŠN˜5 ! Q¨¨a°aˆNÑ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Ñˆˆt�Q˜˜1Ø�.­°1©¬°q¸¸¸1¸´vÑ>Ô>Ñ>¸tÀA¹vÑEˆ	Ø�NŠN˜5 ! Q¨¨a°q¸qˆNÑ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Ñˆˆt�Q˜˜1ÝŒ]�9Ð,EÐFÑFÔFð 	?ð 	?Ø—’˜q ! Q¨¨1°A¸A�Ñ>Ô>ˆAð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?åŒ]�9Ð,EÐFÑFÔFð 	?ð 	?Ø—’˜q ! Q¨¨1°A¸A�Ñ>Ô>ˆ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Ñˆˆt�Q˜˜1Ø—F’F‘H”Hˆ	Ø�~¨a°Ñ3Ô3Ñ3°D¸¸3¸3¸Q¸3¼±KÑ?ˆ	�#�#�A�#‰Ø�NŠN˜5 ! Q¨¨a°aˆNÑ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Ñˆˆt�Q˜˜1Ø—F’F‘H”Hˆ	Ø�~­i¸©l¬l¸AÑ>Ô>Ñ>¸tÀAÀcÀcÈÀcÄF¹{ÑJˆ	�#�#�A�#‰Ø�NŠN˜5 ! Q¨¨a°q¸qˆNÑ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Ñˆˆt�Q˜˜1ÝŒ]�9Ð,DÐEÑEÔEð 	?ð 	?Ø—’˜q ! Q¨¨1°A¸A�Ñ>Ô>ˆAð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?åŒ]�9Ð,DÐEÑEÔEð 	?ð 	?Ø—’˜q ! Q¨¨1°A¸A�Ñ>Ô>ˆ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Â   € à�E‘G”G�å”G˜E‘N”N�Ý”h˜q 1¤8™|¨eÑ3½2¼8ÐDÑDÔD�ØÔ1°&Ô9¸!Ô<�å# E™lœlð ð �FØ &Ñ(¨EÑ1°QÒ6Ð6Ø˜ð 7à˜& ¨¨!¬(©
Ñ!2Ð2Ô3×8Ò8¸uÐ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,   gñhãˆµøä>gH¯¼šò×z>)ÚrtolÚatol)r   r.   )ÚAÚXÚdesiredr0   s      €r#   Úassert_dot_closez5TestSgemv.test_sgemv_on_osx.<locals>.assert_dot_closeÊ  s=   ø€ Ý §¢¨s°A°qÑ 9Ô 9¸7Ø%)°ð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¨°9¸jÑIÔIˆHÝ”)×'Ò'¨Ñ-Ô-ˆCØ(0ð 4ð 4Ñ$��q˜!˜WØ—j’j ! Q Ñ(Ô(�Ø—j’j ‘m”m�Ýœ&  cÑ*Ô*�à �j  e­R¬Z¸wÐGÑGÔG�Ø �j  e­R¬Z¸wÐGÑGÔG�Ø Ð   c¨7Ñ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ˆ	Øˆà	Œ×	Ò	˜CœL¨HÒ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ð '4�Hñ '4ô '4ð '4ð '4øðR ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �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