§
    µ³ÙgÿH  ã                   ó0  — d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZmZ d dlZdZd„ Z G d„ d¦  «        Z	  G d	„ d
e¦  «        Zn# e$ r  G d„ d
¦  «        ZY nw xY w G d„ de¦  «        Z	  G d„ de¦  «        Zn# e$ r  G d„ d¦  «        ZY nw xY w G d„ de¦  «        Z G d„ d¦  «        Z	  G d„ de¦  «        Zn# e$ r  G d„ d¦  «        ZY nw xY w G d„ de¦  «        Z 	  G d„ de¦  «        Z!n# e$ r  G d„ d¦  «        Z!Y nw xY w G d„ de¦  «        Z" G d„ d ¦  «        Z#	  G d!„ d"e#¦  «        Z$n# e$ r  G d#„ d"¦  «        Z$Y nw xY w G d$„ d%e#¦  «        Z%	  G d&„ d'e#¦  «        Z&n# e$ r  G d(„ d'¦  «        Z&Y nw xY w G d)„ d*e#¦  «        Z' G d+„ d,¦  «        Z(	  G d-„ d.e(¦  «        Z)n# e$ r  G d/„ d.¦  «        Z)Y nw xY w G d0„ d1e(¦  «        Z*	  G d2„ d3e(¦  «        Z+n# e$ r  G d4„ d3¦  «        Z+Y nw xY w G d5„ d6e(¦  «        Z, G d7„ d8¦  «        Z-	  G d9„ d:e-¦  «        Z.n# e$ r  G d;„ d:¦  «        Z.Y nw xY w G d<„ d=e-¦  «        Z/	  G d>„ d?e-¦  «        Z0n# e$ r  G d@„ d?¦  «        Z0Y nw xY w G dA„ dBe-¦  «        Z1	 dS )Cé    )Úfloat32Úfloat64Ú	complex64Ú
complex128ÚarangeÚarrayÚzerosÚshapeÚ	transposeÚnewaxisÚcommon_typeÚ	conjugate)Ú_fblas)Úassert_array_equalÚassert_allcloseÚassert_array_almost_equalÚassert_Né   c                 óV  — t          |j        ¦  «        dk    rd}|d d …t          f         }nd}t          | j        d         |j        d         k    ¦  «         t	          | j        d         |j        d         ft          | |¦  «        ¦  «        }t          | j        d         ¦  «        D ]]}t          |j        d         ¦  «        D ]@}d}t          | j        d         ¦  «        D ]}|| ||f         |||f         z  z  }Œ||||f<   ŒAŒ^|r!|                     | j        d         f¦  «        }|S )Né   TFr   )Úlenr
   r   r   r	   r   ÚrangeÚreshape)ÚaÚbÚb_is_vectorÚcÚiÚjÚsÚks           úS/granary/edev/quantum/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_a3   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_strideA   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)   é   r9   r8   )r   r:   Úincyr<   r.   s       r"   Útest_y_stridezBaseAxpy.test_y_strideI   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(   r9   r8   )r   r:   r;   r@   r<   r.   s       r"   Útest_x_and_y_stridezBaseAxpy.test_x_and_y_strideP   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 ©	NrC   r)   r?   úfailed for 1st keyword©ÚmatchrD   r   ©r:   r;   ©r   r*   r	   ÚpytestÚraisesÚ	Exceptionr-   ©r/   r0   r1   s      r"   Útest_x_bad_sizezBaseAxpy.test_x_bad_sizeW   ó»   € Ý�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 ©	NrC   r)   r?   rH   rI   r8   r   ©r:   r@   rL   rP   s      r"   Útest_y_bad_sizezBaseAxpy.test_y_bad_size]   rR   rS   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r3   r5   r=   rA   rE   rQ   rW   © r$   r"   r&   r&   0   sƒ   € € € € € Ø&Ð&ð&ð &ð &ð&ð &ð &ð&ð &ð &ð+ð +ð +ð+ð +ð +ð.ð .ð .ð.ð .ð .ð .ð .r$   r&   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestSaxpyN)rX   rY   rZ   ÚfblasÚsaxpyr-   r   r*   r\   r$   r"   r_   r_   e   ó   € € € € € Ø”Kˆ	Øˆˆˆr$   r_   c                   ó   — e Zd ZdS r^   ©rX   rY   rZ   r\   r$   r"   r_   r_   i   ó   € € € € € Øˆr$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestDaxpyN)rX   rY   rZ   r`   Údaxpyr-   r   r*   r\   r$   r"   rg   rg   m   ó   € € € € € Ø”€IØ€E€E€Er$   rg   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestCaxpyN)rX   rY   rZ   r`   Úcaxpyr-   r   r*   r\   r$   r"   rl   rl   s   ó   € € € € € Ø”Kˆ	Øˆˆˆr$   rl   c                   ó   — e Zd ZdS rk   rd   r\   r$   r"   rl   rl   w   re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestZaxpyN)rX   rY   rZ   r`   Úzaxpyr-   r   r*   r\   r$   r"   rq   rq   {   ó   € € € € € Ø”€IØ€E€E€Er$   rq   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚBaseScalz Mixin class for scal testing c                 óˆ   — t          d| j        ¬¦  «        }|dz  }|                      d|¦  «        }t          ||¦  «         d S ©Nr(   r)   r,   ©r/   r0   Úreal_xs      r"   r5   zBaseScal.test_simple†   sH   € Ý�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 )Nr7   r)   r9   r(   r8   rK   )r   r*   Úcopyr   r-   r   rx   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 )	NrC   r)   rH   rI   g       @rD   r   rK   )r   r*   rM   rN   rO   r-   )r/   r0   s     r"   rQ   zBaseScal.test_x_bad_size“   sª   € Ý�3˜dœjÐ)Ñ)Ô)ˆÝŒ]�9Ð,DÐEÑEÔEð 	/ð 	/Ø�NŠN˜2˜q A¨AˆNÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   ²AÁAÁ AN)rX   rY   rZ   r[   r5   r=   rQ   r\   r$   r"   ru   ru   ƒ   sG   € € € € € Ø(Ð(ð&ð &ð &ð&ð &ð &ð/ð /ð /ð /ð /r$   ru   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestSscalN)rX   rY   rZ   r`   Ússcalr-   r   r*   r\   r$   r"   r   r   š   rb   r$   r   c                   ó   — e Zd ZdS r~   rd   r\   r$   r"   r   r   ž   re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestDscalN)rX   rY   rZ   r`   Údscalr-   r   r*   r\   r$   r"   rƒ   rƒ   ¢   ri   r$   rƒ   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestCscalN)rX   rY   rZ   r`   Úcscalr-   r   r*   r\   r$   r"   r‡   r‡   ¨   rn   r$   r‡   c                   ó   — e Zd ZdS r†   rd   r\   r$   r"   r‡   r‡   ¬   re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestZscalN)rX   rY   rZ   r`   Úzscalr-   r   r*   r\   r$   r"   r‹   r‹   °   rs   r$   r‹   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚBaseCopyz Mixin class for copy testing c                 óÂ   — t          d| j        ¬¦  «        }t          t          |¦  «        |j        ¦  «        }|                      ||¦  «        }t          ||¦  «         d S rw   )r   r*   r	   r
   r-   r   rP   s      r"   r5   zBaseCopy.test_simple»   sV   € Ý�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 ©Nr7   r)   r8   r9   rK   r<   rP   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?   r8   r9   rV   r<   rP   s      r"   rA   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 )NrC   r)   r?   r8   rD   r9   ©r:   r;   r@   r<   rP   s      r"   rE   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 rG   rL   rP   s      r"   rQ   zBaseCopy.test_x_bad_sizeÓ   rR   rS   c                 óö   — t          d| j        ¬¦  «        }t          d|j        ¦  «        }t          j        t
          d¬¦  «        5  |                      ||dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rU   rL   rP   s      r"   rW   zBaseCopy.test_y_bad_sizeÙ   rR   rS   N©
rX   rY   rZ   r[   r5   r=   rA   rE   rQ   rW   r\   r$   r"   rŽ   rŽ   ¸   st   € € € € € Ø(Ð(ð!ð !ð !ð&ð &ð &ð&ð &ð &ð+ð +ð +ð.ð .ð .ð.ð .ð .ð .ð .r$   rŽ   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestScopyN)rX   rY   rZ   r`   Úscopyr-   r   r*   r\   r$   r"   rš   rš   è   rb   r$   rš   c                   ó   — e Zd ZdS r™   rd   r\   r$   r"   rš   rš   ì   re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestDcopyN)rX   rY   rZ   r`   Údcopyr-   r   r*   r\   r$   r"   rž   rž   ð   ri   r$   rž   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestCcopyN)rX   rY   rZ   r`   Úccopyr-   r   r*   r\   r$   r"   r¢   r¢   ö   rn   r$   r¢   c                   ó   — e Zd ZdS r¡   rd   r\   r$   r"   r¢   r¢   ú   re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestZcopyN)rX   rY   rZ   r`   Úzcopyr-   r   r*   r\   r$   r"   r¦   r¦   þ   rs   r$   r¦   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚBaseSwapz Mixin class for swap tests c                 ó8  — t          d| j        ¬¦  «        }t          t          |¦  «        |j        ¦  «        }|                     ¦   «         }|                     ¦   «         }|                      ||¦  «        \  }}t          ||¦  «         t          ||¦  «         d S rw   )r   r*   r	   r
   r{   r-   r   ©r/   r0   r1   Ú	desired_xÚ	desired_ys        r"   r5   zBaseSwap.test_simple	  s„   € Ý�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?   r9   r8   rV   r¯   r«   s        r"   rA   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 )NrC   r)   r?   r9   rD   r8   r”   r¯   r«   s        r"   rE   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 rG   rL   rP   s      r"   rQ   zBaseSwap.test_x_bad_size-  rR   rS   c                 óö   — t          d| j        ¬¦  «        }t          d|j        ¦  «        }t          j        t
          d¬¦  «        5  |                      ||dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rU   rL   rP   s      r"   rW   zBaseSwap.test_y_bad_size3  rR   rS   Nr—   r\   r$   r"   r©   r©     st   € € € € € Ø&Ð&ð)ð )ð )ð)ð )ð )ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð .ð .r$   r©   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestSswapN)rX   rY   rZ   r`   Ússwapr-   r   r*   r\   r$   r"   r¶   r¶   ;  rb   r$   r¶   c                   ó   — e Zd ZdS rµ   rd   r\   r$   r"   r¶   r¶   ?  re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestDswapN)rX   rY   rZ   r`   Údswapr-   r   r*   r\   r$   r"   rº   rº   C  ri   r$   rº   c                   ó    — e Zd Zej        ZeZdS ©Ú	TestCswapN)rX   rY   rZ   r`   Úcswapr-   r   r*   r\   r$   r"   r¾   r¾   I  rn   r$   r¾   c                   ó   — e Zd ZdS r½   rd   r\   r$   r"   r¾   r¾   M  re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestZswapN)rX   rY   rZ   r`   Úzswapr-   r   r*   r\   r$   r"   rÂ   rÂ   Q  rs   r$   rÂ   c                   óV   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ ZdS )ÚBaseGemvz Mixin class for gemv tests r   c                 ó(  — t          d| j        ¬¦  «        }| j        t          t          fv rt          d| j        ¬¦  «        }ddlm}m}  |d¦  «         t          d| j        ¬¦  «        |z  }t          d| j        ¬¦  «        |z  } |ddd	¦  «                             | j        ¦  «        |z  }t          t          |¦  «        d         |z  | j        ¬¦  «        |z  }	t          t          |¦  «        d         |z  | j        ¬¦  «        |z  }
||||	|
fS )
Nr   r)   y      ð?      ð?r   )ÚnormalÚseediÒ  r+   g        )r8   r8   )
r   r*   r   r   Únumpy.randomrÇ   rÈ   Úastyper   r
   )r/   Úx_strideÚy_strideÚmultrÇ   rÈ   ÚalphaÚbetar   r0   r1   s              r"   Úget_datazBaseGemv.get_data]  s  € Ý�Q˜dœjÐ)Ñ)Ô)ˆØŒ:�)¥ZÐ0Ð0Ð0Ý˜ T¤ZÐ0Ñ0Ô0ˆDØ-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØˆˆT‰
Œ
ˆ
Ý�b ¤
Ð+Ñ+Ô+¨dÑ2ˆÝ�R˜tœzÐ*Ñ*Ô*¨TÑ1ˆØˆF�2�r˜6Ñ"Ô"×)Ò)¨$¬*Ñ5Ô5¸Ñ<ˆÝ•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   ©r/   rÎ   rÏ   r   r0   r1   r­   s          r"   r5   zBaseGemv.test_simplej  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_yp  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_transposev  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 )Nr9   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 )Nr9   ©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 )Nr9   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 )	Nr9   rß   zfailed for 3rd argumentrI   r   r   r8   rá   ©rÐ   rM   rN   rO   r-   ©r/   rÎ   rÏ   r   r0   r1   s         r"   Útest_x_stride_assertzBaseGemv.test_x_stride_assertŽ  sC  € à#Ÿ}š}°a˜}Ñ8Ô8Ñˆˆ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 )Nr9   ©rÌ   )r@   )rÐ   r{   r#   r-   r   rÔ   s          r"   rA   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 )Nr9   ré   r   ©rÙ   r@   )rÐ   r{   r#   r   r-   r   rÔ   s          r"   Útest_y_stride_transposez BaseGemv.test_y_stride_transpose�  s™   € Ø#Ÿ}š}°a˜}Ñ8Ô8Ñˆˆ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 )	Nr9   ré   zfailed for 2nd keywordrI   r   r   r8   rë   rä   rå   s         r"   Útest_y_stride_assertzBaseGemv.test_y_stride_assert¤  sC  € à#Ÿ}š}°a˜}Ñ8Ô8Ñˆˆ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   )rX   rY   rZ   r[   rÐ   r5   rÖ   rÛ   rÝ   r=   râ   ræ   rA   rì   rî   r\   r$   r"   rÅ   rÅ   Z  sÄ   € € € € € Ø&Ð&ð$ð $ð $ð $ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð0ð 0ð 0ð?ð ?ð ?ð0ð 0ð 0ð0ð 0ð 0ð?ð ?ð ?ð ?ð ?r$   rÅ   c                   ó&   — e Zd Zej        ZeZd„ ZdS )Ú	TestSgemvc                 ó”  ‡ ‡‡— ddl m} dd l}dd lŠ|j        dk    rd S dˆfd„	Šdˆfd„	}ˆ fd„} |dd	d
d¦  «        }|D ]‡\  }}}}	‰j                             ||¦  «        }
‰j                             |¦  «        }‰                     |
|¦  «        } ||
|‰j        |	¬¦  «        } |||‰j        |	¬¦  «        } ||||¦  «         Œˆd S )Nr   )ÚproductÚdarwinÚCc                 óv  •—  |¦   «         }‰	                      | ¦  «        }‰	                     ||j        z  |z   ‰	j        ¬¦  «        }|j        d         d         }t          |¦  «        D ]}||z   |z  dk    r nŒ|||||j        z  z   …                              |¬¦  «        }|                     | |¬¦  «        S )Nr)   Údatar   ©Úorder)Úprodr	   ÚnbytesÚuint8Ú__array_interface__r   Úviewr   )
r
   Úalignr*   rø   ÚdÚNÚtmpÚaddressÚoffsetÚnps
            €r"   Úaligned_arrayz2TestSgemv.test_sgemv_on_osx.<locals>.aligned_arrayº  sÆ   ø€ à�E‘G”G�à—G’G˜E‘N”N�Ø—h’h˜q 1¤8™|¨eÑ3¸2¼8�hÑ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Údesiredr/   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ô   )	Ú	itertoolsrò   ÚsysÚnumpyÚplatformÚrandomÚrandÚdotr   )r/   rò   r  r	  r  Útestdatarþ   Úmr:   Úa_orderÚA_dÚX_dr  ÚA_fÚX_fr  r  s   `              @@r"   Útest_sgemv_on_osxzTestSgemv.test_sgemv_on_osx²  sS  øøø€ Ø)Ð)Ð)Ð)Ð)Ð)ØˆJˆJˆJØÐÐÐàŒ|˜xÒ'Ð'Ø�ð7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð6ð 6ð 6ð 6ð 6ð �w˜x¨°9¸jÑIÔIˆHØ(0ð 4ð 4Ñ$��q˜!˜WØ”i—n’n Q¨Ñ*Ô*�Ø”i—n’n QÑ'Ô'�ØŸ&š&  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)	rX   rY   rZ   r`   Úsgemvr-   r   r*   r$  r\   r$   r"   rð   rð   ®  s/   € € € € € Ø”Kˆ	Øˆð(	4ð (	4ð (	4ð (	4ð (	4r$   rð   c                   ó   — e Zd ZdS )rð   Nrd   r\   r$   r"   rð   rð   Ý  re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestDgemvN)rX   rY   rZ   r`   Údgemvr-   r   r*   r\   r$   r"   r(  r(  á  ri   r$   r(  c                   ó    — e Zd Zej        ZeZdS ©Ú	TestCgemvN)rX   rY   rZ   r`   Úcgemvr-   r   r*   r\   r$   r"   r,  r,  ç  rn   r$   r,  c                   ó   — e Zd ZdS r+  rd   r\   r$   r"   r,  r,  ë  re   r$   c                   ó    — e Zd Zej        ZeZdS )Ú	TestZgemvN)rX   rY   rZ   r`   Úzgemvr-   r   r*   r\   r$   r"   r0  r0  ï  rs   r$   r0  )2r  r   r   r   r   r   r   r	   r
   r   r   r   r   Úscipy.linalgr   r`   Únumpy.testingr   r   r   r   rM   Úaccuracyr#   r&   r_   ÚAttributeErrorrg   rl   rq   ru   r   rƒ   r‡   r‹   rŽ   rš   rž   r¢   r¦   r©   r¶   rº   r¾   rÂ   rÅ   rð   r(  r,  r0  r\   r$   r"   ú<module>r6     sÅ  ððKð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð )Ð (Ð (Ð (Ð (Ð (ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð €€€ð €ðð ð ð,1.ð 1.ð 1.ð 1.ð 1.ñ 1.ô 1.ð 1.ðhðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð/ð /ð /ð /ð /ñ /ô /ð /ð,ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð%.ð %.ð %.ð %.ð %.ñ %.ô %.ð %.ð^ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð1.ð 1.ð 1.ð 1.ð 1.ñ 1.ô 1.ð 1.ðhðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ðP?ð P?ð P?ð P?ð P?ñ P?ô P?ð P?ðf1ð,4ð ,4ð ,4ð ,4ð ,4�Hñ ,4ô ,4ð ,4ð ,4øð\ ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
ðð ð ð ð �Hñ ô ð ð øð ð ð ð ðð ð ð ð ñ ô ð ð ð ðøøøð
ð ð ð ð �ñ ô ð ð
.ðf8ð 8s´   ÁA ÁA*Á)A*Á<B ÂB ÂB Â?C ÃC#Ã"C#Ã5D ÄDÄDÄ8E ÅEÅEÅ.E= Å=FÆFÆ1G  Ç GÇGÇ'G6 Ç6HÈ
HÈ*H9 È9IÉIÉ I/ É/JÊJ