Ë
    ÏÍ:j®Ÿ  ã                   ó  — d dl Z d dlZd dlZd dlmZmZmZmZ d dlm	Z
 d dlmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZmZmZ d dlmZ 	 d dlmZ ej<                  ZdZ 	 d d
lm"Z# e#jH                  ZejJ                  ejL                  gZ'ejP                  ejR                  gZ*e'e*z   Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d+d„Z2 G d„ d«      Z3 G d„ d«      Z4 G d„ d«      Z5 G d„ d«      Z6 G d„ d«      Z7 G d„ d«      Z8 G d„ d«      Z9 G d „ d!«      Z: e2d"d#«      d$„ «       Z;ejx                  j{                  d	d%¬&«      d'„ «       Z>ejx                  j{                  ed(¬)«      d*„ «       Z?y# e!$ r dZd	Z Y �Œw xY w# e!$ r dZ#Y �Œw xY w),é    N)Úassert_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_allclose)Úraises)
ÚarangeÚtriuÚtrilÚzerosÚtril_indicesÚonesÚdiagÚappendÚeyeÚnonzero)Úget_blas_funcsÚtoeplitzÚsolve)Ú	HAS_ILP64)Ú_fblasTF)Ú	_fblas_64c            	      ó0  — t        dt        j                  dt        j                  d¬«      t        j                  dt        j                  d¬«      f«      \  } }}t        | j                  d«       t        |j                  d«       t        d«      } t        | j                  d«       t        d	t        j                  ¬
«      } t        | j                  d«       t        d	d¬
«      } t        | j                  d«       t        d	t        j                  ¬
«      } t        | j                  d«       t        dt        j                  dt        j                  ¬
«      t        j                  dt        j                  ¬
«      f«      } t        | j                  d«       y )N)Úaxpyr   r   ©é   r   ÚF)ÚdtypeÚorderÚCÚzÚrotgÚdÚgemm©r   Úcr   )	r   ÚnpÚemptyÚ	complex64Ú
complex128r   ÚtypecodeÚclongdoubleÚfloat64)Úf1Úf2Úf3s      úq/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/linalg/tests/test_blas.pyÚtest_get_blas_funcsr1   '   s  € ô  Ø Ü	�‰�&¤§¡°CÔ	8Ü	�‰�&¤§¡°SÔ	9ð	;ó
�J€BˆˆBô �—‘˜cÔ"Ü�—‘˜cÔ"ô 
˜Ó	€BÜ�—‘˜cÔ"ô 
˜¤b§l¡lÔ	3€BÜ�—‘˜cÔ"Ü	˜ cÔ	*€BÜ�—‘˜cÔ"ô 
˜¤b§n¡nÔ	5€BÜ�—‘˜cÔ"ô 
˜ÜŸ™ &´·
±
Ô;ÜŸ™ &´·±Ô=ð?ó
€Bô �—‘˜cÕ"ó    c                  óÄ  — t        dt        j                  d«      fd¬«      } t        r| j                  t        j
                  k(  sJ ‚t        j                  sJ ‚t        r| j                  dk(  sJ ‚	 t        dt        j                  d«      f«      } t        r| j                  t        j
                  k(  sJ ‚t        j                  sJ ‚t        r| j                  dk(  sJ ‚y y )Nr#   é   Ú	preferred©Úilp64Úfblas_64)r   r&   r   r   Ú	int_dtypeÚint64Úint32Úmodule_name©r#   s    r0   Ú!test_get_blas_funcs_ilp_preferredr>   K   s­   € ä˜&¤2§6¡6¨!£9 ,°kÔB€DÝ)2ˆ4�>‰>œRŸX™XÒ%Ð@Ð@¼¿ºÐ@Ð@Ý-6ˆ4×Ñ˜zÒ)ÐCÐC¸Gô ˜&¤2§6¡6¨!£9 ,Ó/€DÝ)2ˆ4�>‰>œRŸX™XÒ%Ð@Ð@¼¿ºÐ@Ð@Ý-6ˆ4×Ñ˜zÒ)ÐCÐC¸GÐ)r2   c                  óV  — t         rSt        dt        j                  d«      fd¬«      } | j                  t        j
                  k(  sJ ‚| j                  dk(  sJ ‚y t        j                  t        «      5  t        dt        j                  d«      fd¬«       d d d «       y # 1 sw Y   y xY w)Nr#   r4   Tr6   r8   )
r   r   r&   r   r9   r:   r<   Úpytestr   ÚRuntimeErrorr=   s    r0   Útest_get_blas_funcs_ilp_truerB   W   s~   € åÜ˜f¤r§v¡v¨a£y l¸$Ô?ˆØ�~‰~¤§¡Ò)Ð)Ð)Ø×Ñ :Ò-Ð-Ñ-ä�]‰]œ<Ó(ñ 	=Ü˜6¤B§F¡F¨1£I <°tÕ<÷	=÷ 	=ñ 	=úó   Á3#BÂB(c                  óV  — t         rSt        dt        j                  d«      fd¬«      } | j                  t        j
                  k(  sJ ‚| j                  dk(  sJ ‚y t        j                  t        «      5  t        dt        j                  d«      fd¬«       d d d «       y # 1 sw Y   y xY w)Nr#   r4   Fr6   Úfblas)
ÚHAS_LP64_FBLASr   r&   r   r9   r;   r<   r@   r   Ú
ValueErrorr=   s    r0   Útest_get_blas_funcs_ilp_falserH   b   s~   € åÜ˜f¤r§v¡v¨a£y l¸%Ô@ˆØ�~‰~¤§¡Ò)Ð)Ð)Ø×Ñ 7Ò*Ð*Ñ*ä�]‰]œ:Ó&ñ 	>Ü˜6¤B§F¡F¨1£I <°uÕ=÷	>÷ 	>ñ 	>úrC   c                  óÚ   — t        dt        j                  ¬«      \  } }| j                  dk(  sJ ‚|j                  dk(  sJ ‚t        dt        j                  ¬«      \  } }}| |u sJ ‚| |u sJ ‚y )N)Únrm2Údotr$   r%   )rK   ÚdotcÚdotu)r   r&   r(   r*   r,   )ÚfÚgÚhs      r0   Útest_get_blas_funcs_aliasrQ   m   sg   € ä˜/´·±Ô>�D€A€qØ�:‰:˜ÒÐÐØ�:‰:˜ÒÐÐäÐ4¼B¿J¹JÔG�G€A€qˆ!Ø�‰6€Mˆ6Ø�‰6€M‰6r2   c                 óÞ   — | j                  d«      r| dd } n| dv r| d   } n	| dv r| d   } t        j                  t        j                  t        j                  t        j
                  dœ}||    S )z%Array dtype from a blas-style prefix.Úié   N)ÚscÚdzr   )ÚcsÚzd)r    r%   r"   Ús)Ú
startswithr&   r)   r(   r,   Úfloat32)ÚprefixÚdt_maps     r0   Ú_dt_from_prefixr^   x   se   € à×Ñ˜ÔØ˜˜�‰Ø	�<Ñ	Ø˜‘‰Ø	�<Ñ	Ø˜‘ˆä—=‘=¤r§|¡|¼"¿*¹*Ì2Ï:É:ÑV€FØ�&‰>Ðr2   c                 ó¨  — |€t         dft        dfg}g }|D ]š  \  }}|D ]�  }t        |«      }|€Bt        j                  d||› d|› | › �t        j
                  j                  |› d�¬«      ¬«      }n.t        ||| z   «      }	t        j                  |	||› d|› | › �¬«      }|j                  |«       Œ’ Œœ t        j
                  j                  d	|«      S )
aƒ  Parametrize a test over BLAS prefixes, "sdcz", and over the BLAS modules,
    `fblas,fblas_64.

    Given a func_name "gemm", this generates a pytest parametrization over up to 8
    variants: sgemm, dgemm, cgemm, zgemm, each loaded from `fblas` (i.e. 32-bit LP64
    variants) and `fblas_64` (i.e. 64-bit ILP64 variants)..

    If a module is not available, the pytest parameter has a skip mark, so that the
    test is skipped with a descriptive message.

    Parameters
    ----------
    func_name : str
        The base name of a BLAS function, e.g. "gemm"
    prefixes : str or sequence
        BLAS prefixes to prepend to `func_name`.
        E.g. ``func_name='gemm', prefixes='cz'`` generates `cgemm` and `zgemm`.
    modules : sequence of ``(module, str)`` pairs
        BLAS modules to fetch functions from. By default, use `fblas` (LP64 variant)
        and fblas_64 (ILP64 variant).
    NrE   r8   ú.ú is not available©Úreason)ÚidÚmarks)rd   zf, dtype)
rE   r8   r^   r@   ÚparamÚmarkÚskipÚgetattrr   Úparametrize)
Ú	func_nameÚprefixesÚmodulesÚparamsÚmodÚmod_namer\   r   Úparam_rN   s
             r0   Úparametrize_blasrr   …   sî   € ð, €Ü˜7Ð#¤h°
Ð%;Ð<ˆà€FØ ò "‰ˆˆXØò 	"ˆFÜ# FÓ+ˆEØˆ{ÜŸ™Ø˜%Ø"˜ 1 V H¨Y¨KÐ8Ü Ÿ+™+×*Ñ*°X°JÐ>OÐ2PÐ*ÓQô‘ô ˜C ¨)Ñ!3Ó4�ÜŸ™ a¨°h°Z¸qÀÀÈÈÐ3TÔU�à�M‰M˜&Õ!ñ	"ð"ô" �;‰;×"Ñ" :¨vÓ6Ð6r2   c                   óH  — e Zd Z edd«      d„ «       Z edd«      d„ «       Z edg d¢«      d„ «       Z ed	d
«      d„ «       Z edd«      d„ «       Z edd«      d„ «       Z	 edg d¢«      d„ «       Z
 edg d¢«      d„ «       Z edd«      d„ «       Z edg d¢«      d„ «       Zy)ÚTestFBLAS1Simpler   Úsdczc                 ó‚   — t         |g d¢g d¢d¬«      g d¢«       |t        v rt         |g d¢g d¢d¬«      g d¢«       y y )N©rT   r   r4   )r   éÿÿÿÿr4   é   ©Úa)é   é	   é   )rT   ù               @r4   )r|   y      ð¿      $@r~   ©r   ÚCOMPLEX_DTYPES©ÚselfrN   r   s      r0   Ú	test_axpyzTestFBLAS1Simple.test_axpyµ   s;   € ä!¡!¢Iªz¸QÔ"?Ú",ô	.à”NÑ"Ü%¡aª
²JÀ!Ô&DÚ&4õ6ð #r2   Úcopyc                 ó‚   — t         |g d¢dgdz  «      g d¢«       |t        v rt         |g d¢dgdz  «      g d¢«       y y )N)r4   é   ry   é   r4   )r4   ù              @y      @      @r€   r‚   s      r0   Ú	test_copyzTestFBLAS1Simple.test_copy½   s=   € ä!¡!¢I°¨s°1©uÓ"5²yÔAØ”NÑ"Ü%¡aª¸°s¸1±uÓ&=º}ÕMð #r2   Úasum)rY   r"   rU   rV   c                 óf   — t         |g d¢«      d«       |t        v rt         |g d¢«      d«       y y )N©r4   éüÿÿÿry   é   ©ù              @rŽ   ù      @      Àé   )r   r�   r‚   s      r0   Ú	test_asumzTestFBLAS1Simple.test_asumÃ   s,   € ä™Ašj›M¨2Ô.Ø”NÑ"Ü¡¢.Ó 1°2Õ6ð #r2   rK   Úsdc                 ó2   — t         |g d¢g d¢«      d«       y )Nr�   )r   ry   rT   i÷ÿÿÿ©r   r‚   s      r0   Útest_dotzTestFBLAS1Simple.test_dotÉ   s   € ä™Ašjª)Ó4°bÕ9r2   rM   Úczc                 ó2   — t         |g d¢g d¢«      d«       y )Nr�   ©r   r4   rT   y      "À       @r—   r‚   s      r0   Ú	test_dotuzTestFBLAS1Simple.test_dotuÍ   s   € ä™AšnªiÓ8¸%Õ@r2   rL   c                 ó2   — t         |g d¢g d¢«      d«       y )Nr�   ©r   r‘   rT   y      @      ,Àr—   r‚   s      r0   Ú	test_dotczTestFBLAS1Simple.test_dotcÑ   s   € ä™AšnªjÓ9¸5ÕAr2   rJ   c                 ó²   — t         |g d¢«      t        j                  d«      «       |t        v r(t         |g d¢«      t        j                  d«      «       y y )Nr�   é2   r�   )r   ÚmathÚsqrtr�   r‚   s      r0   Ú	test_nrm2zTestFBLAS1Simple.test_nrm2Õ   s<   € ä™Ašj›M¬4¯9©9°R«=Ô9Ø”NÑ"Ü¡¢.Ó 1´4·9±9¸R³=ÕAð #r2   Úscal)rY   r"   rW   rX   c                 ór   — t         |dg d¢«      g d¢«       |t        v rt         |dg d¢«      g d¢«       y y )Nr   r�   )é   iøÿÿÿé
   r4   r�   )y              "@iôÿÿÿy      "@      (Àr€   r‚   s      r0   Ú	test_scalzTestFBLAS1Simple.test_scalÛ   s2   € ä!¡! A¢zÓ"2²KÔ@Ø”NÑ"Ü%¡a¨ª>Ó&:Ò<LÕMð #r2   Úswapc                 óÆ   — g d¢g d¢}} |||«      \  }}t        ||«       t        ||«       |t        v r-g d¢g d¢}} |||«      \  }}t        ||«       t        ||«       y y )Nr›   )éþÿÿÿr4   r|   rž   )r¬   r4   y      @      Àr€   )rƒ   rN   r   ÚxÚyÚx1Úy1s          r0   Ú	test_swapzTestFBLAS1Simple.test_swapá   sg   € âš*ˆ1ˆÙ�1�a“‰ˆˆBÜ! " aÔ(Ü! " aÔ(à”NÑ"Úš}ˆqˆAÙ�q˜!“W‰FˆB�Ü% b¨!Ô,Ü% b¨!Õ,ð	 #r2   Úamax)Úisrd   ÚicÚizc                 óf   — t         |g d¢«      d«       |t        v rt         |g d¢«      d«       y y )N)r¬   r‡   r4   rT   )éûÿÿÿy      @      @r§   )r   r�   r‚   s      r0   Ú	test_amaxzTestFBLAS1Simple.test_amaxî   s,   € ä‘Q’z“] AÔ&Ø”NÑ"Ü™š=Ó)¨1Õ-ð #r2   N)Ú__name__Ú
__module__Ú__qualname__rr   r„   rŠ   r”   r˜   rœ   rŸ   r¤   r©   r±   r¸   © r2   r0   rt   rt   ³   s  „ á�f˜fÓ%ñ6ó &ð6ñ �f˜fÓ%ñNó &ðNñ
 �fÒ4Ó5ñ7ó 6ð7ñ
 �e˜TÓ"ñ:ó #ð:ñ �f˜dÓ#ñAó $ðAñ �f˜dÓ#ñBó $ðBñ �fÒ4Ó5ñBó 6ðBñ
 �fÒ4Ó5ñNó 6ðNñ
 �f˜fÓ%ñ
-ó &ð
-ñ �fÒ6Ó7ñ.ó 8ñ.r2   rt   c                   óÂ  — e Zd Z edd«      d„ «       Z edd«      d„ «       Z edd«      d	„ «       Z ed
d«      d„ «       Z edd«      d„ «       Z edd«      d„ «       Z	 edd«      d„ «       Z
 edd«      d„ «       Z edd«      d„ «       Zej                  j                  dddg«      ej                  j                  de«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dg eez   D � �cg c]  }d|f‘Œ c}} ¢eD � �cg c]  }d|f‘Œ c}} ¢«      d„ «       «       Zej                  j                  dddg«      ej                  j                  dg eez   D � �cg c]  }d|f‘Œ c}} ¢eD � �cg c]  }d |f‘Œ c}} ¢«      d!„ «       «       Zej                  j                  dddg«      ej                  j                  de«      d"„ «       «       Z ed#d«      d$„ «       Z ed%d«      d&„ «       Z ed'd«      d(„ «       Z ed)d«      d*„ «       Z ed+d«      d,„ «       Z ed-d«      d.„ «       Zy/c c}} w c c}} w c c}} w c c}} w )0ÚTestFBLAS2SimpleÚgemvru   c           	      óâ   — t         |ddggdg«      dg«       t         |ddggdgddg«      dg«       |t        v r4t         |ddggdg«      dg«       t         |ddggdgdd	g«      d
g«       y y ©Nr4   rŽ   iÜÿÿÿry   iëÿÿÿr‘   r’   y      HÀ      BÀy              @y      HÀ      5Àr€   r‚   s      r0   Ú	test_gemvzTestFBLAS2Simple.test_gemvø   sŠ   € ä!¡! A¨¨ u¨r¨dÓ"3°c°UÔ;Ü!¡! A¨¨ u¨r¨d°A¸°sÓ";¸c¸UÔCØ”NÑ"Ü%¡a¨¨d¨V¨H°r°dÓ&;¸g¸YÔGÜ%¡a¨¨d¨V¨H°r°d¸AÀ¸tÓ&DØ'. iõ1ð #r2   Úgerr•   c           
      ó^  — t         |dddgddg«      ddgddgg«       t         |dg d¢ddg«      ddgdd	gd
dgg«       t         |dddgddgddgddgg¬«      ddgddgg«       |t        v r@t         |dddgddg«      ddgddgg«       t         |dg d¢ddg«      ddgdd	gd
dgg«       y y )NrT   r   r4   r‡   r§   rˆ   rw   r�   é   r~   é   rz   r}   ù              ð?r‘   r‰   ©rÇ   r   r‘   r€   r‚   s      r0   Útest_gerzTestFBLAS2Simple.test_ger  sü   € ä!¡! A¨¨1 v°°1¨vÓ"6¸!¸Q¸À!ÀQÀÐ8HÔIÜ!¡! A¢y°1°a°&Ó"9Ø$% q 6¨B°¨8°b¸"°XÐ">ô	@ä!¡! A¨¨1 v°°1¨vØ&'¨ V¨a°¨VÐ$4ô#6Ø9:¸A¸ÀÀBÀÐ7Hô	Jà”NÑ"Ü%¡a¨¨B°¨7°Q¸°FÓ&;Ø(*¨B x°!°Q°Ð&8ô:ä%¡a¨ª<¸"¸b¸Ó&BØ()¨1 v°°B¨x¸"¸b¸Ð&BõDð #r2   Úgerur™   c                 ó‚   — t         |dddgddg«      ddgdd	gg«       t         |d
g d¢ddg«      dd	gddgddgg«       y )NrT   rÇ   r   r4   r‡   r‘   r‰   r§   rˆ   r¬   rÈ   r�   rÅ   r~   rÆ   ©r   r‚   s      r0   Ú	test_geruzTestFBLAS2Simple.test_geru  s[   € ä!¡! A¨¨A w°°A°Ó"7Ø$&¨ 8¨a°¨VÐ"4ô	6ä!¡! Bª°r¸2°hÓ"?Ø$% q 6¨B°¨8°b¸"°XÐ">õ	@r2   Úgercc                 ó‚   — t         |dddgddg«      ddgdd	gg«       t         |dg d
¢ddg«      dd	gddgddgg«       y )NrT   rÇ   r   r4   r‡   r‘   r‰   r§   rˆ   rÈ   r�   rÅ   r~   rÆ   rÌ   r‚   s      r0   Ú	test_gerczTestFBLAS2Simple.test_gerc  s[   € ä!¡! A¨¨A w°°A°Ó"7Ø$&¨ 8¨a°¨VÐ"4ô	6ä!¡! A¢|°b¸"°XÓ">Ø$% q 6¨B°¨8°b¸"°XÐ">õ	@r2   Úsyrc                 óJ  — t        j                  ddd¬«      }t        j                  |d d …t         j                  f   |z  «      }t        j                  |d d d…t         j                  f   |d d d…   z  «      }t        j                  dddd	¬
«      }t        j                  ddd¬«      j                  d«      }t        j                  |d d …t         j                  f   |z  «      }t        j                  |d d d…t         j                  f   |d d d…   z  «      }	t         j                  t        j                  d«      |t        j                  d«      f   j                  «       }
t        j                  |«      j                  }t         |d|«      ||¬«       t         |d|d¬«      |j                  |¬«       t         |d|ddd¬«      ||¬«       t         |d|ddd¬«      ||¬«       |t        v r¼t         |d|«      ||¬«       t         |d|d¬«      |j                  |¬«       t         |d|
ddd¬«      ||¬«       t         |d|
ddd¬«      |	|¬«       t        j                  d|d«      } |d||d¬«      }t        |||¬«        |d||¬«      }||usJ ‚t        |d|z  |¬«       nSt        j                  d|d«      } |d||d¬«      }t        |||¬«        |d||¬«      }||usJ ‚t        |d|z  |¬«       t        t        |d|d¬«       t        t        |d|d¬«       t        t        |d|d¬«       t        t        |d|d¬«       t        t        |d|d¬«       t        t        |d|d¬«       t        t        |d|t        j                  ddd«      ¬«       y ) NrT   ry   r"   r$   rx   r   ç      !@é   F©Úendpointr}   ÚDr‡   ç      ð?©ÚrtolT©Úlowerr   ©ÚincxÚoffxÚnr¬   r4   éýÿÿÿ©r‡   r‡   r   ©r{   Úoverwrite_aç       @rz   ©rÞ   ©rß   ©rà   r   )r&   r   r	   ÚnewaxisÚlinspaceÚviewÚc_r   ÚravelÚfinfoÚepsr   ÚTr�   Úassert_raisesÚ	Exception)rƒ   rN   r   r­   ÚresxÚresx_reverser®   r    ÚreszÚresz_reverseÚwrÚ   r{   Úbs                 r0   Útest_syrzTestFBLAS2Simple.test_syr  s  € ä�I‰I�a˜ #Ô&ˆÜ�w‰w�qšœBŸJ™J˜Ñ'¨!Ñ+Ó,ˆÜ—w‘w˜q¡ 2 ¤r§z¡zÐ!1Ñ2°Q±t¸°t±WÑ<Ó=ˆÜ�K‰K˜˜3 ¨UÔ3ˆÜ�I‰I�a˜ #Ô&×+Ñ+¨CÓ0ˆÜ�w‰w�qšœBŸJ™J˜Ñ'¨!Ñ+Ó,ˆÜ—w‘w˜q¡ 2 ¤r§z¡zÐ!1Ñ2°Q±t¸°t±WÑ<Ó=ˆÜ�E‰E”"—(‘(˜1“+˜q¤"§(¡(¨1£+Ð-Ñ.×4Ñ4Ó6ˆä�x‰x˜‹×"Ñ"ˆä™˜#˜q›	 4¨dÕ3Ü™˜#˜q¨Ô-¨t¯v©v¸DÕAÜ™˜#˜q q¨q°AÔ6¸À4ÕHä™˜#˜q r°°QÔ7Ø$¨4õ	1ð ”NÑ"Ü™A˜c 1›I t°$Õ7Ü™A˜c 1¨DÔ1°4·6±6ÀÕEÜ™A˜c 1¨1°1¸Ô:¸DÀtÕLä™A˜c 1¨2°A¸Ô;Ø(¨tõ5ô —‘˜ ¨Ó,ˆAÙ�#�q˜A¨4Ô0ˆAÜ˜A˜t¨$Õ/Ù�#�q˜A”ˆAØ˜A‘:Ð�:Ü˜A˜q ™v¨DÖ1ô —‘˜ ¨Ó,ˆAÙ�#�q˜A¨4Ô0ˆAÜ˜A˜t¨$Õ/Ù�#�q˜A”ˆAØ˜A‘:Ð�:Ü˜A˜q ™v¨DÕ1ä”i  C¨°Õ3Ü”i  C¨°Õ3Ü”i  C¨°Õ4Ü”i  C¨¨bÕ1Ü”i  C¨¨aÕ0Ü”i  C¨°!Õ4Ü”i  C¨¬b¯h©h°v¸sÀCÓ.HÖIr2   Úherc                 ó"  — t        j                  ddd¬«      }t        j                  ddd¬«      j                  d«      }t        j                  |d d …t         j                  f   |j                  «       z  «      }t        j                  |d d d…t         j                  f   |d d d…   j                  «       z  «      }t         j                  t        j                  d«      |t        j                  d«      f   j                  «       }t        j                  |«      j                  }t         |d	|«      ||¬
«       t         |d	|d¬«      |j                  j                  «       |¬
«       t         |d	|ddd¬«      ||¬
«       t         |d	|ddd¬«      ||¬
«       t        j                  d|d«      }	 |d	||	d¬«      }
t        |	||¬
«        |d||	¬«      }
|	|
usJ ‚t        |
d|z  |¬
«       t        t        |d	|d¬«       t        t        |d	|d¬«       t        t        |d	|d¬«       t        t        |d	|d¬«       t        t        |d	|d¬«       t        t        |d	|d¬«       t        t        |d	|t        j                  ddd«      ¬«       y )NrT   ry   r"   r$   r}   r×   rx   r‡   rØ   rÙ   TrÛ   r4   rÝ   rá   râ   r   rã   rå   rz   r   ræ   rç   r¬   rè   r   r   )r&   r   rë   r	   ré   Úconjrì   r   rí   rî   rï   r   rð   rñ   rò   )rƒ   rN   r   r­   r    ÚrehzÚrehz_reverser÷   rÚ   r{   rø   s              r0   Útest_herzTestFBLAS2Simple.test_herO  s  € ä�I‰I�a˜ #Ô&ˆÜ�I‰I�a˜ #Ô&×+Ñ+¨CÓ0ˆÜ�w‰w�qšœBŸJ™J˜Ñ'¨!¯&©&«(Ñ2Ó3ˆÜ—w‘w˜q¡ 2 ¤r§z¡zÐ!1Ñ2°Q±t¸°t±W·\±\³^ÑCÓDˆÜ�E‰E”"—(‘(˜1“+˜q¤"§(¡(¨1£+Ð-Ñ.×4Ñ4Ó6ˆä�x‰x˜‹×"Ñ"ˆä™˜#˜q›	 4¨dÕ3Ü™˜#˜q¨Ô-¨t¯v©v¯{©{«}À4ÕHÜ™˜#˜q q¨q°AÔ6¸À4ÕHä™˜#˜q r°°QÔ7Ø$¨4õ	1ô �H‰H�V˜U CÓ(ˆÙˆc�1˜ tÔ,ˆÜ˜˜4 dÕ+áˆc�1˜ŒNˆØ˜‰zÐˆzÜ˜˜1˜T™6¨Õ-ä”i  C¨°Õ3Ü”i  C¨°Õ3Ü”i  C¨°Õ4Ü”i  C¨¨bÕ1Ü”i  C¨¨aÕ0Ü”i  C¨°!Õ4Ü”i  C¨¬b¯h©h°v¸sÀCÓ.HÖIr2   Úsyr2c                 óð  — t        j                  ddd¬«      }t        j                  ddd¬«      }t        j                  |d d …t         j                  f   |z  |d d …t         j                  f   |z  z   «      }t        j                  |d d d…t         j                  f   |d d d…   z  |d d d…t         j                  f   |d d d…   z  z   «      }t        j                  ddd	d
¬«      }t        j
                  |«      j                  }t         |d||«      ||¬«       t         |d||d¬«      |d d…d d…f   |¬«       t         |d||d¬«      |j                  |¬«       t         |d||dddd¬«      ||¬«       t         |d||ddddd¬«      |d d…d d…f   |¬«       t         |d||dddd¬«      ||¬«       t        j                  d|d«      }	 |d|||	d¬«      }
t        |	||¬«        |d|||	¬«      }
|	|
usJ ‚t        |
d|z  |¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||d¬«       t        t        |d||t        j                  d dd«      ¬«       y )!NrT   ry   r"   r$   r}   rx   r   rÓ   rÔ   FrÕ   rØ   rÙ   r4   rè   TrÛ   r   r¨   ©rÞ   rß   ÚincyÚoffy©rÞ   rß   r  r  rà   r¬   râ   r   rã   rå   rz   ræ   rç   ©r  ©r  r   )r&   r   r	   ré   rê   rî   rï   r   rð   r   rñ   rò   )rƒ   rN   r   r­   r®   ÚresxyÚresxy_reverseÚqrÚ   r{   rø   s              r0   Ú	test_syr2zTestFBLAS2Simple.test_syr2p  sÇ  € ä�I‰I�a˜ #Ô&ˆÜ�I‰I�a˜ #Ô&ˆÜ—‘˜š!œRŸZ™Z˜-Ñ(¨1Ñ,¨q²´B·J±J°Ñ/?À!Ñ/CÑCÓDˆÜŸ™ ¡$ B $¬¯
©
Ð"2Ñ 3°a¹¸"¸±gÑ =Ø"#¡D b D¬"¯*©*Ð$4Ñ"5¸¹$¸B¸$¹Ñ"?ñ!@ó Aˆô �K‰K˜˜3 ¨UÔ3ˆÜ�x‰x˜‹×"Ñ"ˆä™˜#˜q !› e°$Õ7Ü™˜#˜q ! qÔ)¨5°°!°°R°a°R°©=¸tÕDÜ™˜#˜q !¨4Ô0°%·'±'ÀÕEä™˜#˜q !¨!°!¸!À"ÔEØ Dõ	*ä™˜#˜q !¨!°!¸!À"ÈÔJØ˜b˜q˜b " 1 "˜f™¨Dõ	2ô 	™˜#˜q !¨"°1¸2ÀBÔGØ%¨Dõ	2ô �H‰H�V˜U CÓ(ˆÙˆc�1�a˜1¨$Ô/ˆÜ˜˜5 tÕ,áˆc�1�a˜1ÔˆØ˜‰zÐˆzÜ˜˜1˜U™7¨Õ.ä”i  C¨¨A°AÕ6Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°BÕ7Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°BÕ7Ü”i  C¨¨A°Õ4Ü”i  C¨¨A°Õ3Ü”i  C¨¨A°QÕ7Ü”i  C¨¨A´·±¸&À#ÀsÓ1KÖLr2   Úher2c                 óº  — t        j                  ddd¬«      j                  d«      }t        j                  ddd¬«      j                  d«      }|d d …t         j                  f   |j	                  «       z  |d d …t         j                  f   |j	                  «       z  z   }t        j
                  |«      }|d d d…t         j                  f   |d d d…   j	                  «       z  }||d d d…t         j                  f   |d d d…   j	                  «       z  z  }t        j
                  |«      }t         j                  t        j                  d«      |t        j                  d«      f   j                  «       }t         j                  t        j                  d«      |t        j                  d«      f   j                  «       }t        j                  |«      j                  }	t         |d	||«      ||	¬
«       t         |d	||d¬«      |d d…d d…f   |	¬
«       t         |d	||d¬«      |j                  j	                  «       |	¬
«       t         |d	||dddd¬«      ||	¬
«       t         |d	||ddddd¬«      |d d…d d…f   |	¬
«       t         |d	||dddd¬«      ||	¬
«       t        j                  d|d«      }
 |d	|||
d¬«      }t        |
||	¬
«        |d|||
¬«      }|
|usJ ‚t        |d|z  |	¬
«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||d¬«       t        t        |d	||t        j                  ddd«      ¬«       y ) NrT   r}   r"   r$   r×   rÔ   rx   r‡   rØ   rÙ   r4   rè   TrÛ   r  r  rá   râ   r   rã   rå   rz   r   ræ   ry   rç   r¬   r  r  r   r   )r&   r   rë   ré   rü   r	   rì   r   rí   rî   rï   r   rð   rñ   rò   )rƒ   rN   r   r­   r®   r  r	  ÚuÚvrÚ   r{   rø   s               r0   Ú	test_her2zTestFBLAS2Simple.test_her2š  sP  € ä�I‰I�a˜ #Ô&×+Ñ+¨CÓ0ˆÜ�I‰I�a˜ 3Ô'×,Ñ,¨SÓ1ˆØ’!”R—Z‘Z�-Ñ  1§6¡6£8Ñ+¨a²´2·:±:°Ñ.>ÀÇÁÃÑ.IÑIˆÜ—‘˜“ˆà™$˜B˜$¤§
¡
Ð*Ñ+¨a±°"°©g¯l©l«nÑ<ˆØ˜™4˜R˜4¤§¡Ð+Ñ,¨q±°2°©w¯|©|«~Ñ=Ñ=ˆÜŸ™ Ó.ˆä�E‰E”"—(‘(˜1“+˜q¤"§(¡(¨1£+Ð-Ñ.×4Ñ4Ó6ˆÜ�E‰E”"—(‘(˜1“+˜q¤"§(¡(¨1£+Ð-Ñ.×4Ñ4Ó6ˆä�x‰x˜‹×"Ñ"ˆä™˜#˜q !› e°$Õ7Ü™˜#˜q ! qÔ)¨5°°!°°R°a°R°©=¸tÕDÜ™˜#˜q !¨4Ô0°%·'±'·,±,³.Ø!õ	#ô 	™˜#˜q !¨!°!¸!À!ÔDØ Dõ	*ä™˜#˜q !¨!°!¸!À!ÀqÔIØ˜b˜q˜b " 1 "˜f™¨Dõ	2ô 	™˜#˜q !¨"°1¸2ÀAÔFØ%¨Dõ	2ô �H‰H�V˜U CÓ(ˆÙˆc�1�a˜1¨$Ô/ˆÜ˜˜5 tÕ,áˆc�1�a˜1ÔˆØ˜‰zÐˆzÜ˜˜1˜U™7¨Õ.ä”i  C¨¨A°AÕ6Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°BÕ7Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°AÕ6Ü”i  C¨¨A°BÕ7Ü”i  C¨¨A°Õ4Ü”i  C¨¨A°Õ3Ü”i  C¨¨A°QÕ7Ü”i  C¨¨AÜŸ™ ¨¨cÓ2ö	4r2   Úgbmvc                 óX  — t         j                  j                  d«      }d}d}d}d}t        t	        |j                  |dz   «      t        ||z
  dz
  «      «      t	        |j                  |dz   «      t        ||z
  dz
  «      «      «      }|j                  |«      }t        ||z   dz   |f|¬«      }	|d   |	dd d…f<   |d   |	ddd	…f<   |d
   |	ddd…f<   |d   |	dd d…f<   |j                  |«      j                  |«      }
|j                  |«      j                  |«      } |d«       |d«      }}|} |||||||	|
||¬«	      }||j                  |
«      z  ||z  z   }t        ||«        |||||||	||
|d¬«
      }||j                  j                  |«      z  ||
z  z   }t        ||«       y )NéÒ  r|   ry   rT   r   r$   )r   r   )r   rT   r§   )r   r   r   )rT   r   r4   r‡   r·   )	Úmrà   ÚkuÚklÚalphar{   r­   r®   Úbeta)
r  rà   r  r  r  r{   r­   r®   r  Útrans)
r&   ÚrandomÚdefault_rngr   r   r   ÚastyperK   r   rð   )rƒ   rN   r   Úrngrà   r  r  r  ÚAÚAbr­   r®   r  r  Úfuncr°   Úy2s                    r0   Ú	test_gbmvzTestFBLAS2Simple.test_gbmvË  sÄ  € ä�i‰i×#Ñ# DÓ)ˆØˆØˆØˆØˆä”V˜CŸJ™J r¨!¡tÓ,¬e°A°b±D¸±F«mÓ<Ü˜CŸJ™J r¨!¡tÓ,¬e°A°b±D¸±F«mÓ<ó>ˆà�H‰H�U‹OˆÜ�B�r‘E˜!‘G˜Q�< uÔ-ˆð �d‘Gˆˆ1ˆbˆqˆbˆ5‰	Ø�t‘Wˆˆ1ˆa�ˆcˆ6‰
Ø�t‘Wˆˆ1ˆa�ˆcˆ6‰
Ø�d‘Gˆˆ1ˆbˆqˆbˆ5‰	à�J‰J�q‹M× Ñ  Ó'ˆØ�J‰J�q‹M× Ñ  Ó'ˆÙ˜A“h¡ b£	ˆtˆàˆÙ�A˜˜r b°¸Ø˜ ô'ˆà�Q—U‘U˜1“XÑ  q¡Ñ(ˆÜ! " bÔ)á�A˜˜r b°¸Ø˜ ¨Qô0ˆà�Q—S‘S—W‘W˜Q“ZÑ $¨¡(Ñ*ˆÜ! " bÕ)r2   r7   TFr   c                 óÒ  — |rt         nt        }|€|rdnd}t        j                  |› d�«       t        j
                  j                  d«      }d}d}t        ||f|¬«      }t        |dz   |f|¬«      }	|j                  |«      |t        |«      t        |«      f<   t        d|dz   «      D ]?  }
|j                  ||
z
  «      }||t        ||
z
  «      t        |
|«      f<   ||	d	|
z
  |
d …f<   ŒA |j                  |«      }|t        v r.||j                  «       j                  z  }t        d
|d¬«      \  }n||j                  z  }t        d|d¬«      \  }t        |«      |	d	d d …f<   |j                  |«      j                  |«      }|j                  |«      j                  |«      } |d«       |d«      }} ||||	|||¬«      }||j!                  |«      z  ||z  z   }t#        ||«       y )Nr8   rE   ra   r  r§   r   r$   rT   rx   )Úhbmvr5   ©r   r7   )Úsbmvç      ô?r4   )Úkr  r{   r­   r®   r  )r8   rE   r@   rh   r&   r  r  r   r   Úranger  r�   rü   rð   r   r   rK   r   )rƒ   r   r7   ro   rp   r  rà   r(  r  r  Úind2Útempr   r­   r®   r  r  r°   r!  s                      r0   Útest_sbmv_hbmvzTestFBLAS2Simple.test_sbmv_hbmví  sÐ  € ñ  �h¤UˆØˆ;Ù%*‘z°ˆHÜ�K‰K˜8˜*Ð$5Ð6Ô7ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�1�a�& Ô&ˆÜ�A�a‘C˜�8 5Ô)ˆð #&§*¡*¨Q£-ˆŒ&�‹)”V˜A“YÐ
ÑÜ˜!˜Q˜q™S“Mò 	&ˆDØ—:‘:˜a ™fÓ%ˆDØ15ˆAŒf�Q�t‘V‹nœf T¨1›oÐ-Ñ.Ø!%ˆBˆr�$‰w˜™ˆ~Òð	&ð �H‰H�U‹OˆØ”NÑ"Ø�—‘“—‘‰OˆAÜ" 9°EÀÔM‰E‰Dà�—‘‰HˆAÜ" 9°EÀÔM‰EˆDä˜“Gˆˆ2Šqˆ5‰	Ø�J‰J�q‹M× Ñ  Ó'ˆØ�J‰J�q‹M× Ñ  Ó'ˆÙ˜D“k¡5¨£8ˆtˆá�A˜U b¨A°¸Ô>ˆØ�Q—U‘U˜1“XÑ  q¡Ñ(ˆÜ! " bÕ)r2   zfname,dtypeÚspmvÚhpmvc                 ó  — |rt         nt        }|€|rdnd}t        j                  |› d�«       t        j
                  j                  d«      }d}|j                  ||f«      j                  |«      }|t        v r||j                  ||f«      dz  z  }||dk(  r|j                  n|j                  «       j                  z  }t        |«      \  }	}
||
|	f   }|j                  |«      j                  |«      }|j                  |«      j                  |«      }t        d|z  «      j                  |«      }t        d|z  «      j                  |«      } |d	«       |d«      }}t        |f|d
¬«      \  } |||||||¬«      }||j                  |«      z  ||z  z   }t!        ||«        ||dz
  |||||dd||¬«
      }||d d…d d…f   z  j                  |dd d…   «      ||dd d…   z  z   }t!        |dd d…   |«       t#        |d   |d   «       y )Nr8   rE   ra   r  r4   rÇ   r-  r   r'  r5   r%  )rà   r  Úapr­   r®   r  rT   )
rà   r  r  r­   r®   r0  rÞ   r  rß   r  rx   r‡   )r8   rE   r@   rh   r&   r  r  r  r�   rð   rü   r   r   r   r   rK   r   r   )rƒ   Úfnamer   r7   ro   rp   r  rà   r  r%   ÚrÚApr­   r®   ÚxlongÚylongr  r  r   r°   r!  s                        r0   Útest_spmv_hpmvzTestFBLAS2Simple.test_spmv_hpmv  s  € ñ  �h¤UˆØˆ;Ù%*‘z°ˆHÜ�K‰K˜8˜*Ð$5Ð6Ô7ä�i‰i×#Ñ# DÓ)ˆØˆØ�J‰J˜˜1�vÓ×%Ñ% eÓ,ˆØ”NÑ"Ø�—‘˜Q ˜FÓ# BÑ&Ñ&ˆAØ	�E˜V’OˆQ�SŠS¨¯©«¯©Ñ3ˆÜ˜A‹‰ˆˆ1Øˆq�!ˆt‰WˆØ�J‰J�q‹M× Ñ  Ó'ˆØ�J‰J�q‹M× Ñ  Ó'ˆÜ�q˜‘s“×"Ñ" 5Ó)ˆÜ�Q�q‘S“	× Ñ  Ó'ˆÙ˜D“k¡5¨£8ˆtˆä ˜x¨u¸KÔH‰ˆÙ�A˜U r¨Q°!¸$Ô?ˆØ�Q—U‘U˜1“XÑ  q¡Ñ(ˆÜ! " bÔ)ñ �A�a‘C˜u¨4°5¸EÀbØ˜q q¨qô2ˆà�a˜˜˜˜S˜b˜S˜‘kÑ!×&Ñ& u¨Q¨T°¨T¡{Ó3°d¸UÀ1À4ÀaÀ4¹[Ñ6HÑHˆÜ! " Q T¨ T¡(¨BÔ/Ü˜B˜q™E 5¨¡8Õ,r2   ÚsprÚhprc                 óÖ  — |rt         nt        }|€|rdnd}t        j                  |› d�«       t        j
                  j                  d«      }d}|j                  ||f«      j                  |«      }|t        v r||j                  ||f«      dz  z  }||dk(  r|j                  n|j                  «       j                  z  }t        |«      \  }	}
||
|	f   }|j                  |«      j                  |«      }t	        j                  |«      j                  j                  d«      }|d	k(  rDt        d
|d¬«      \  }||d d …d f   j!                  |d d d …f   j                  «       «      z  |z   }n5t        d|d¬«      \  }||d d …d f   j!                  |d d d …f   «      z  |z   } |||||¬«      }t#        d|¬«      }|||
|	f<   |d	k(  r|j                  «       n|||	|
f<   t%        ||«       y )Nr8   rE   ra   r  r4   rÇ   r7  g      @r8  )r8  r5   r%  )r7  )rà   r  r0  r­   ©r4   r4   r$   )r8   rE   r@   rh   r&   r  r  r  r�   rð   rü   r   rî   r   Útyper   rK   r   r   )rƒ   r1  r   r7   ro   rp   r  rà   r  r%   r2  r3  r­   r  r   r!  r°   Úy1fs                     r0   Útest_spr_hprzTestFBLAS2Simple.test_spr_hpr7  sÅ  € ñ  �h¤UˆØˆ;Ù%*‘z°ˆHÜ�K‰K˜8˜*Ð$5Ð6Ô7ä�i‰i×#Ñ# DÓ)ˆØˆØ�J‰J˜˜1�vÓ×%Ñ% eÓ,ˆØ”NÑ"Ø�—‘˜Q ˜FÓ# BÑ&Ñ&ˆAØ	�E˜U’NˆQ�SŠS¨¯©«¯
©
Ñ2ˆÜ˜A‹‰ˆˆ1Øˆq�!ˆt‰WˆØ�J‰J�q‹M× Ñ  Ó'ˆä—‘˜“×%Ñ%×*Ñ*¨3Ó/ˆØ�EŠ>Ü" 8°5ÀÔL‰EˆDØ˜š1˜d˜7™Ÿ™¨¨$²¨'©
¯©Ó(9Ó:Ñ:¸QÑ>‰Bä" 8°5ÀÔL‰EˆDØ˜š1˜d˜7™Ÿ™¨¨$²¨'©
Ó3Ñ3°aÑ7ˆBá�A˜U r¨QÔ/ˆÜ�F %Ô(ˆØˆˆAˆqˆD‰	Ø!&¨%¢�B—G‘G”I°RˆˆAˆqˆD‰	Ü! # rÕ*r2   c                 óÎ  — |rt         nt        }|€|rdnd}t        j                  |› d�«       t        j
                  j                  d«      }d}|j                  ||f«      j                  |«      }|t        v rG||j                  ||f«      dz  z  }||j                  «       j                  z  }t        d|d¬	«      \  }n||j                  z  }t        d
|d¬	«      \  }t        |«      \  }	}
||
|	f   }|j                  |«      j                  |«      }|j                  |«      j                  |«      } |d«      }|j                  «       |d d …d f   j                  |d d d …f   j                  «       «      z  }||z   |j                  «       j                  z   } ||||||¬«      }t        d|¬«      }|||
|	f<   |g d¢   j                  «       |g d¢g d¢f<   t        ||«       y )Nr8   rE   ra   r  r4   rÇ   )Úhpr2r5   r%  )Úspr2r   )rà   r  r­   r®   r0  r:  r$   )rT   r4   r‡   )rT   r   r   )r   r   rT   )r8   rE   r@   rh   r&   r  r  r  r�   rü   rð   r   r   rK   r   r   )rƒ   r   r7   ro   rp   r  rà   r  r   r%   r2  r3  r­   r®   r  r  r!  r°   r<  s                      r0   Útest_spr2_hpr2zTestFBLAS2Simple.test_spr2_hpr2Z  sµ  € ñ  �h¤UˆØˆ;Ù%*‘z°ˆHÜ�K‰K˜8˜*Ð$5Ð6Ô7ä�i‰i×#Ñ# DÓ)ˆØˆØ�J‰J˜˜1�vÓ×%Ñ% eÓ,ˆØ”NÑ"Ø�—‘˜Q ˜FÓ# BÑ&Ñ&ˆAØ�—‘“—‘‰OˆAÜ" 9°EÀÔM‰E‰Dà�—‘‰HˆAÜ" 9°EÀÔM‰EˆDä˜A‹‰ˆˆ1Øˆq�!ˆt‰WˆØ�J‰J�q‹M× Ñ  Ó'ˆØ�J‰J�q‹M× Ñ  Ó'ˆÙ�a“ˆà�J‰J‹L˜1šQ ˜W™:Ÿ>™>¨!¨D²!¨G©*¯/©/Ó*;Ó<Ñ<ˆØ�‰U�Q—V‘V“X—Z‘ZÑˆÙ�A˜U a¨1°Ô4ˆÜ�F %Ô(ˆØˆˆAˆqˆD‰	Ø$&¢y¡M×$6Ñ$6Ó$8ˆŠI’yÐ Ñ!Ü! # rÕ*r2   Útbmvc           
      ó  — t         j                  j                  d«      }d}d}|j                  |«      j                  |«      }t	        ||f|¬«      }t        |dz   «      D ]1  }|j                  ||z
  «      |t        ||z
  «      t        ||«      f<   Œ3 |t        v rI|t        |«      xx   d|j                  |dz   |z  ||dz   z  dz  z
  «      j                  |«      z  z  cc<   t	        |dz   |f|¬«      }	t        |dz   «      D ]  }
t        ||
¬«      |	|
 dz
  |
d …f<   Œ |} |||	|¬	«      }|j                  |«      }t        ||«        |||	|d¬
«      } |d«      |t        |«      t        |«      f<   |j                  |«      }t        ||«        |||	|dd¬«      }|j                  j                  |«      }t        ||«        |||	|dd¬«      }|j                  «       j                  j                  |«      }t        ||«       y )Nr  r¨   r4   r$   rT   rÇ   r   ©r(  ©r(  r{   r­   ©r(  r{   r­   r   ©r(  r{   r­   r   r  )r&   r  r  r  r   r)  r   r�   r   r   rK   r   rð   rü   ©rƒ   rN   r   r  rà   r(  r­   r  Úsupr  Úrowr   r°   r!  s                 r0   Ú	test_tbmvzTestFBLAS2Simple.test_tbmv{  sï  € ä�i‰i×#Ñ# DÓ)ˆØˆØˆØ�J‰J�q‹M× Ñ  Ó'ˆÜ�1�a�& Ô&ˆä˜˜1™“:ò 	AˆCØ/2¯z©z¸!¸C¹%Ó/@ˆAŒf�Q�s‘U‹mœV C¨›^Ð+Ò,ð	Að ”NÑ"ØŒg�a‹j‹M˜R #§*¡*¨a°©c°1©W°a¸¸1¹±g¸q±jÑ-AÓ"B×"IÑ"IÈ%Ó"PÑPÑP‹Mô �A�a‘C˜�8 5Ô)ˆÜ˜˜1™“:ò 	.ˆCÜ# A¨œ~ˆB�ˆt�A‰v�s‘tˆ|Òð	.àˆá�A˜˜qÔ!ˆØ�U‰U�1‹XˆÜ! " bÔ)á�A˜˜q qÔ)ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑØ�U‰U�1‹XˆÜ! " bÔ)á�A˜˜q q°Ô2ˆØ�S‰S�W‰W�Q‹ZˆÜ! " bÔ)á�A˜˜q q°Ô2ˆØ�V‰V‹X�Z‰Z�^‰^˜AÓˆÜ! " bÕ)r2   Útbsvc           
      óð  — t         j                  j                  d«      }d}d}|j                  |«      j                  |«      }t	        ||f|¬«      }t        |dz   «      D ]1  }|j                  ||z
  «      |t        ||z
  «      t        ||«      f<   Œ3 |t        v rI|t        |«      xx   d|j                  |dz   |z  ||dz   z  dz  z
  «      j                  |«      z  z  cc<   t	        |dz   |f|¬«      }	t        |dz   «      D ]  }
t        ||
¬«      |	|
 dz
  |
d …f<   Œ |} |||	|¬	«      }t        ||«      }t        ||«        |||	|d¬
«      } |d«      |t        |«      t        |«      f<   t        ||«      }t        ||«        |||	|dd¬«      }t        |j                  |«      }t        ||«        |||	|dd¬«      }t        |j                  «       j                  |«      }t        ||«       y )Ni90  r§   r4   r$   rT   rÇ   r   rD  rE  rF  rG  )r&   r  r  r  r   r)  r   r�   r   r   r   r   rð   rü   rH  s                 r0   Ú	test_tbsvzTestFBLAS2Simple.test_tbsv¡  sç  € ä�i‰i×#Ñ# EÓ*ˆØˆØˆØ�J‰J�q‹M× Ñ  Ó'ˆÜ�1�a�& Ô&ˆä˜˜1™“:ò 	AˆCØ/2¯z©z¸!¸C¹%Ó/@ˆAŒf�Q�s‘U‹mœV C¨›^Ð+Ò,ð	Að ”NÑ"ØŒg�a‹j‹M˜R #§*¡*¨a°©c°1©W°a¸¸1¹±g¸q±jÑ-AÓ"B×"IÑ"IÈ%Ó"PÑPÑP‹Mô �A�a‘C˜�8 5Ô)ˆÜ˜˜1™“:ò 	.ˆCÜ# A¨œ~ˆB�ˆt�A‰v�s‘tˆ|Òð	.àˆá�A˜˜qÔ!ˆÜ�1�a‹[ˆÜ! " bÔ)á�A˜˜q qÔ)ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑÜ�1�a‹[ˆÜ! " bÔ)á�A˜˜q q°Ô2ˆÜ�1—3‘3˜‹]ˆÜ! " bÔ)á�A˜˜q q°Ô2ˆÜ�1—6‘6“8—:‘:˜qÓ!ˆÜ! " bÕ)r2   Útpmvc                 ó0  — t         j                  j                  d«      }d}|j                  |«      j                  |«      }|t        v r4t        |j                  ||f«      |j                  ||f«      dz  z   «      }nt        |j                  ||f«      «      }t        |«      \  }}|||f   }	|}
 |
||	|¬«      }|j                  |«      }t        ||«        |
||	|d¬«      } |d«      |t        |«      t        |«      f<   |j                  |«      }t        ||«        |
||	|dd¬«      }|j                  j                  |«      }t        ||«        |
||	|dd¬«      }|j                  «       j                  j                  |«      }t        ||«       y ©	Nr  r¨   rÇ   )rà   r0  r­   rT   )rà   r0  r­   r   )rà   r0  r­   r   r  r   )r&   r  r  r  r�   r	   r   rK   r   r   rð   rü   ©rƒ   rN   r   r  rà   r­   r  r%   r2  r3  r   r°   r!  s                r0   Ú	test_tpmvzTestFBLAS2Simple.test_tpmvÇ  si  € ä�i‰i×#Ñ# DÓ)ˆØˆØ�J‰J�q‹M× Ñ  Ó'ˆà”NÑ"Ü�S—Z‘Z  A Ó'¨#¯*©*°a¸°VÓ*<¸RÑ*?Ñ?Ó@‰Aä�S—Z‘Z  A Ó'Ó(ˆAô ˜A‹‰ˆˆ1Øˆq�!ˆt‰WˆØˆá�A˜" Ô"ˆØ�U‰U�1‹XˆÜ! " bÔ)á�A˜" ¨Ô*ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑØ�U‰U�1‹XˆÜ! " bÔ)á�A˜" ¨°Ô3ˆØ�S‰S�W‰W�Q‹ZˆÜ! " bÔ)á�A˜" ¨°Ô3ˆØ�V‰V‹X�Z‰Z�^‰^˜AÓˆÜ! " bÕ)r2   Útpsvc                 ó$  — t         j                  j                  d«      }d}|j                  |«      j                  |«      }|t        v r4t        |j                  ||f«      |j                  ||f«      dz  z   «      }nt        |j                  ||f«      «      }|t        |«      z  }t        |«      \  }}|||f   }	|}
 |
||	|¬«      }t        ||«      }t        ||«        |
||	|d¬«      } |d«      |t        |«      t        |«      f<   t        ||«      }t        ||«        |
||	|dd¬«      }t        |j                  |«      }t        ||«        |
||	|dd¬«      }t        |j                  «       j                  |«      }t        ||«       y rQ  )r&   r  r  r  r�   r	   r   r   r   r   r   rð   rü   rR  s                r0   Ú	test_tpsvzTestFBLAS2Simple.test_tpsvè  sl  € ä�i‰i×#Ñ# DÓ)ˆØˆØ�J‰J�q‹M× Ñ  Ó'ˆà”NÑ"Ü�S—Z‘Z  A Ó'¨#¯*©*°a¸°VÓ*<¸RÑ*?Ñ?Ó@‰Aä�S—Z‘Z  A Ó'Ó(ˆAØ	ŒS�‹V‰ˆä˜A‹‰ˆˆ1Øˆq�!ˆt‰WˆØˆá�A˜" Ô"ˆÜ�1�a‹[ˆÜ! " bÔ)á�A˜" ¨Ô*ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑÜ�1�a‹[ˆÜ! " bÔ)á�A˜" ¨°Ô3ˆÜ�1—3‘3˜‹]ˆÜ! " bÔ)á�A˜" ¨°Ô3ˆÜ�1—6‘6“8—:‘:˜qÓ!ˆÜ! " bÕ)r2   Útrmvc                 óò  — t         j                  j                  d«      }d}|j                  ||f«      t        |«      z   j	                  |«      }|j                  d«      j	                  |«      }|} |||¬«      }t        |«      j                  |«      }	t        ||	«        |||d¬«      } |d«      |t        |«      t        |«      f<   t        |«      j                  |«      }	t        ||	«        |||dd¬«      }t        |«      j                  j                  |«      }	t        ||	«        |||dd¬«      }t        |«      j                  «       j                  j                  |«      }	t        ||	«       y )Nr  r4   ©r{   r­   rT   ©r{   r­   r   ©r{   r­   r   r  r   )r&   r  r  r   r  r	   rK   r   r   rð   rü   ©
rƒ   rN   r   r  rà   r  r­   r   r°   r!  s
             r0   Ú	test_trmvzTestFBLAS2Simple.test_trmv	  s2  € ä�i‰i×#Ñ# DÓ)ˆØˆØ�Z‰Z˜˜A˜Ó¤ A£Ñ&×.Ñ.¨uÓ5ˆØ�J‰J�q‹M× Ñ  Ó'ˆØˆá�A˜Œ^ˆÜ�!‹W�[‰[˜‹^ˆÜ! " bÔ)á�A˜ Ô#ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑÜ�!‹W�[‰[˜‹^ˆÜ! " bÔ)á�A˜ ¨!Ô,ˆÜ�!‹W�Y‰Y�]‰]˜1ÓˆÜ! " bÔ)á�A˜ ¨!Ô,ˆÜ�!‹W�\‰\‹^×Ñ×!Ñ! !Ó$ˆÜ! " bÕ)r2   Útrsvc                 ó"  — t         j                  j                  d«      }d}|j                  ||f«      t        |«      z   j	                  |«      }|j                  |«      j	                  |«      }|} |||¬«      }t        t        |«      |«      }	t        ||	«        |||d¬«      }t        t        |«      |«      }	t        ||	«        |||d¬«      } |d«      |t        |«      t        |«      f<   t        t        |«      |«      }	t        ||	«        |||dd¬«      }t        t        |«      j                  |«      }	t        ||	«        |||dd¬«      }t        t        |«      j                  «       j                  |«      }	t        ||	«       y )	Nr  é   rY  rT   )r{   r­   rÜ   rZ  r[  r   )r&   r  r  r   r  r   r	   r   r
   r   rð   rü   r\  s
             r0   Ú	test_trsvzTestFBLAS2Simple.test_trsv"  sR  € ä�i‰i×#Ñ# DÓ)ˆØˆØ�Z‰Z˜˜A˜Ó¤ A£Ñ&×.Ñ.¨uÓ5ˆØ�J‰J�q‹M× Ñ  Ó'ˆØˆá�A˜Œ^ˆÜ”4˜“7˜AÓˆÜ! " bÔ)á�A˜ !Ô$ˆÜ”4˜“7˜AÓˆÜ! " bÔ)á�A˜ Ô#ˆÙ"'¨£(ˆŒ&�‹)”V˜A“YÐ
ÑÜ”4˜“7˜AÓˆÜ! " bÔ)á�A˜ ¨!Ô,ˆÜ”4˜“7—9‘9˜aÓ ˆÜ! " bÔ)á�A˜ ¨!Ô,ˆÜ”4˜“7—<‘<“>×#Ñ# QÓ'ˆÜ! " bÕ)r2   N)r¹   rº   r»   rr   rÂ   rÉ   rÍ   rÐ   rù   rÿ   r  r  r"  r@   rg   rj   ÚDTYPESr,  ÚREAL_DTYPESr�   r6  r=  rA  rK  rN  rS  rV  r]  ra  )Ú.0r   s   00r0   r¾   r¾   ÷   s8  „ Ù�f˜fÓ%ñ1ó &ð1ñ �e˜TÓ"ñ
Dó #ð
Dñ �f˜dÓ#ñ@ó $ð@ñ �f˜dÓ#ñ@ó $ð@ñ �e˜VÓ$ñ0Jó %ð0Jñd �e˜TÓ"ñJó #ðJñ@ �f˜dÓ#ñ'Mó $ð'MñR �f˜dÓ#ñ.4ó $ð.4ñ` �f˜fÓ%ñ*ó &ð*ðB ‡[�[×Ñ˜W t¨U mÓ4Ø‡[�[×Ñ˜W fÓ-ñ!*ó .ó 5ð!*ðF ‡[�[×Ñ˜W t¨U mÓ4Ø‡[�[×Ñ˜]ð -Ø'2°^Ñ'C×	D˜eˆ6�5Š/Ó	Dð-à'5×	6˜eˆ6�5Š/Ó	6ð-ó ñ-ó	ó 5ð
-ð@ ‡[�[×Ñ˜W t¨U mÓ4Ø‡[�[×Ñ˜]ð -Ø&1°NÑ&B×	C˜Uˆ5�%Š.Ó	Cð-à&4×	5˜Uˆ5�%Š.Ó	5ð-ó ñ+ó	ó 5ð
+ð< ‡[�[×Ñ˜W t¨U mÓ4Ø‡[�[×Ñ˜W fÓ-ñ+ó .ó 5ð+ñ> �f˜fÓ%ñ#*ó &ð#*ñJ �f˜fÓ%ñ#*ó &ð#*ñJ �f˜fÓ%ñ*ó &ð*ñ@ �f˜fÓ%ñ*ó &ð*ñ@ �f˜fÓ%ñ*ó &ð*ñ0 �f˜fÓ%ñ*ó &ñ*ùó_ 
EùÛ	6ùóH 
DùÛ	5s   ÄI	ÄIÅ9IÆIr¾   c                   ó*   — e Zd Z edd«      d„ «       Zy)ÚTestFBLAS3Simpler#   ru   c           	      óÞ   — t         |ddgdg«      dgg«       t         |ddgdgddg«      dg«       |t        v r3t         |ddgdg«      dgg«       t         |ddgdgdd	g«      d
g«       y y rÁ   r€   r‚   s      r0   Ú	test_gemmzTestFBLAS3Simple.test_gemmA  s‚   € ä!¡! A¨ s¨R¨D£/°S°E°7Ô;Ü!¡! A¨ s¨R¨D°!°a°SÓ"9¸C¸5ÔAØ”NÑ"Ü%¡a¨¨T¨F°R°DÓ&9¸W¸I¸;ÔGÜ%¡a¨¨T¨F°R°D¸!¸b¸TÓ&BÀWÀIÕNð #r2   N)r¹   rº   r»   rr   rh  r¼   r2   r0   rf  rf  @  s   „ Ù�f˜fÓ%ñOó &ñOr2   rf  c                   ól   — e Zd Zd„ Z edd«      d„ «       Z edd«      d„ «       Z edd«      d„ «       Zy)ÚTestBLAS3Symmc                 óø   — t        j                  ddgddgg«      | _        t        j                  g d¢g d¢g«      | _        t        j                  d«      | _        t        j                  g d¢g d¢g«      | _        y )	NrØ   rå   ç        )rØ   rl  ç      @)rl  ç      ð¿rå   )r   r4   )rå   rn  g       @)rm  rl  g      "@)r&   Úarrayr{   rø   r   r%   Út©rƒ   s    r0   Úsetup_methodzTestBLAS3Symm.setup_methodL  sg   € Ü—‘˜B ˜8Ø ˜8ð%ó &ˆŒä—‘š<Ú(ð*ó +ˆŒä—‘˜“ˆŒÜ—‘š=Ú'ð)ó *ˆ�r2   Úsymmru   c                 óÞ  —  || j                   | j                  | j                  dd¬«      }t        || j                  «        || j                   j
                  | j                  d| j                  dd¬«      }t        || j                  «        || j                   | j                  j
                  d| j                  j
                  dd¬«      }t        || j                  j
                  «       y )NrØ   ©r{   rø   r%   r  r  rT   ©r{   rø   rÜ   r%   r  r  )r{   rø   Úsider%   r  r  )r{   rø   r%   r   rp  rð   ©rƒ   rN   r   Úress       r0   Ú	test_symmzTestBLAS3Symm.test_symmU  s�   € á�$—&‘&˜DŸF™F d§f¡f°B¸RÔ@ˆÜ! # t§v¡vÔ.á�$—&‘&—(‘(˜dŸf™f¨A°·±¸rÈÔKˆÜ! # t§v¡vÔ.á�$—&‘&˜DŸF™FŸH™H¨1°·±·±Ø˜rô#ˆä! # t§v¡v§x¡xÕ0r2   c                 ó    — t        j                  t        «      5   || j                  | j                  dd¬«       ddd«       y# 1 sw Y   yxY w)z|`side=1` means C <- B*A, hence shapes of A and B are to be
        compatible. Otherwise, f2py exception is raised.
        rT   )r{   rø   r  rw  N)r@   r   rò   r{   rø   r‚   s      r0   Útest_symm_wrong_sidez"TestBLAS3Symm.test_symm_wrong_sidea  s;   € ô �]‰]œ9Ó%ñ 	3Ù�—‘˜$Ÿ&™&¨°Õ2÷	3÷ 	3ñ 	3ús   š!AÁAc                 ó:  —  || j                   | j                  | j                  dd¬«      }t        j                  || j
                  «      sJ ‚ || j                   | j                  d| j                  dd¬«      }t        j                  || j
                  «      rJ ‚y)z°SYMM only considers the upper/lower part of A. Hence setting
        wrong value for `lower` (default is lower=0, meaning upper triangle)
        gives a wrong result.
        rØ   ru  rT   rv  N)r{   rø   r%   r&   Úallcloserp  rx  s       r0   Útest_symm_wrong_uploz"TestBLAS3Symm.test_symm_wrong_uploj  su   € ñ �$—&‘&˜DŸF™F d§f¡f°B¸RÔ@ˆÜ�{‰{˜3 §¡Ô'Ð'Ð'Ù�$—&‘&˜DŸF™F¨!¨t¯v©v¸RÀbÔIˆÜ—;‘;˜s D§F¡FÔ+Ð+Ð+Ð+r2   N)r¹   rº   r»   rr  rr   rz  r|  r  r¼   r2   r0   rj  rj  J  sX   „ ò*ñ �f˜fÓ%ñ	1ó &ð	1ñ �f˜fÓ%ñ3ó &ð3ñ �f˜fÓ%ñ,ó &ñ,r2   rj  c                   óN   — e Zd Zd„ Z edd«      d„ «       Z edd«      d„ «       Zy)ÚTestBLAS3Syrkc                 óÐ   — t        j                  ddgddgddgg«      | _        t        j                  g d¢g d¢g d¢g«      | _        t        j                  d	d
gd
dgg«      | _        y )NrØ   rl  ç       Àrå   rm  )rØ   rl  rå   )rl  ç      @ç      À)rå   r…  ç      *@ç      @ç      @r†  )r&   ro  r{   rp  Úttrq  s    r0   rr  zTestBLAS3Syrk.setup_methodw  sn   € Ü—‘˜B ˜8Ø ˜9Ø ˜8ð%ó &ˆŒô —‘š<Ú(Ú)ð+ó ,ˆŒô —(‘(˜R ˜HØ ˜Ið'ó (ˆ�r2   Úsyrkru   c                 óä  —  || j                   d¬«      }t        t        j                  |«      t        j                  | j                  «      «        || j                   dd¬«      }t        t        j
                  |«      t        j
                  | j                  «      «       t        j                  | j                  j                  «      } || j                   dd|¬«      }t        t        j                  |«      t        j                  | j                  |z   «      «        || j                   dd¬«      }t        t        j                  |«      t        j                  | j                  «      «       y )NrØ   ©r{   r  rT   )r{   r  rÜ   )r{   r  r  r%   )r{   r  r  )	r{   r   r&   r	   rp  r
   r   Úshaper‰  ©rƒ   rN   r   r%   Úc0s        r0   Ú	test_syrkzTestBLAS3Syrk.test_syrk�  sÞ   € á�—‘˜bÔ!ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f«oÔ>á�—‘˜b¨Ô*ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f«oÔ>ä�W‰W�T—V‘V—\‘\Ó"ˆÙ�—‘˜b r¨RÔ0ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f¸R±iÓ.@ÔAá�—‘˜b¨Ô*ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·g±gÓ.>Õ?r2   c                 ó°   — t        j                  t        «      5   || j                  dt	        j
                  d«      ¬«       d d d «       y # 1 sw Y   y xY w)NrØ   )ry   rˆ   )r{   r  r%   )r@   r   rò   r{   r&   r   r‚   s      r0   Útest_syrk_wrong_czTestBLAS3Syrk.test_syrk_wrong_c’  s=   € ô �]‰]œ9Ó%ñ 	5Ù�—‘˜b¤B§G¡G¨F£OÕ4÷	5÷ 	5ñ 	5ús   š)AÁAN)r¹   rº   r»   rr  rr   r�  r’  r¼   r2   r0   r�  r�  v  s?   „ ò(ñ �f˜fÓ%ñ@ó &ð@ñ  �f˜fÓ%ñ5ó &ñ5r2   r�  c                   óN   — e Zd Zd„ Z edd«      d„ «       Z edd«      d„ «       Zy)ÚTestBLAS3Syr2kc                 ó  — t        j                  ddgddgddgg«      | _        t        j                  ddgddgddgg«      | _        t        j                  g d¢g d¢g d	¢g«      | _        t        j                  ddgdd
gg«      | _        y )NrØ   rl  rƒ  rå   rm  r   )rl  rn  rm  )rn  rl  rl  )rm  rl  rˆ  r§   )r&   ro  r{   rø   rp  r‰  rq  s    r0   rr  zTestBLAS3Syr2k.setup_method›  s™   € Ü—‘˜B ˜8Ø ˜9Ø ˜8ð%ó &ˆŒô —‘˜B ˜8Ø ˜8Ø˜r˜7ð$ó %ˆŒô —‘š=Ú(Ú'ð)ó *ˆŒô —(‘(˜R ˜HØ ˜Gð%ó &ˆ�r2   Úsyr2kru   c                 ó<  —  || j                   | j                  d¬«      }t        t        j                  |«      t        j                  | j
                  «      «        || j                   | j                  dd¬«      }t        t        j                  |«      t        j                  | j
                  «      «       t        j                  | j
                  j                  «      } || j                   | j                  dd|¬«      }t        t        j                  |«      t        j                  | j
                  |z   «      «        || j                   | j                  dd¬«      }t        t        j                  |«      t        j                  | j                  «      «       y )NrØ   ©r{   rø   r  rT   )r{   rø   r  rÜ   )r{   rø   r  r  r%   )r{   rø   r  r  )
r{   rø   r   r&   r	   rp  r
   r   r�  r‰  rŽ  s        r0   Ú
test_syr2kzTestBLAS3Syr2k.test_syr2k¨  sö   € á�—‘˜$Ÿ&™&¨Ô+ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f«oÔ>á�—‘˜$Ÿ&™&¨°!Ô4ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f«oÔ>ä�W‰W�T—V‘V—\‘\Ó"ˆÙ�—‘˜$Ÿ&™&¨°°rÔ:ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·f±f¸R±iÓ.@ÔAá�—‘˜$Ÿ&™&¨°!Ô4ˆÜ!¤"§'¡'¨!£*¬b¯g©g°d·g±gÓ.>Õ?r2   c           	      óÆ   — t        j                  t        «      5   || j                  | j                  dt        j                  d«      ¬«       d d d «       y # 1 sw Y   y xY w)NrØ   )r`  rˆ   )r{   rø   r  r%   )r@   r   rò   r{   rø   r&   r   r‚   s      r0   Útest_syr2k_wrong_cz!TestBLAS3Syr2k.test_syr2k_wrong_c¸  sF   € ä�]‰]œ9Ó%ñ 	AÙ�—‘˜$Ÿ&™&¨¬b¯h©h°wÓ.?Õ@÷	A÷ 	Añ 	Aús   š4AÁA N)r¹   rº   r»   rr  rr   r™  r›  r¼   r2   r0   r”  r”  š  sA   „ ò&ñ �g˜vÓ&ñ@ó 'ð@ñ �g˜vÓ&ñAó 'ñAr2   r”  c                   óÊ   — e Zd ZdZd„ Z edd«      d„ «       Z edd«      d„ «       Z edd«      d	„ «       Z ed
d«      d„ «       Z	 edd«      d„ «       Z
 edd«      d„ «       Zy)ÚTestSyHez2Quick and simple tests for (zc)-symm, syrk, syr2k.c                 óD   — t        j                  ddgddgg«      | _        y )Nrl  y       €      ð¿rÇ   )r&   ro  Úsigma_yrq  s    r0   rr  zTestSyHe.setup_methodÂ  s$   € Ü—x‘x " d Ø"% r ð!,ó -ˆ�r2   rs  Úzcc                 óª   —  || j                   | j                   d¬«      }t        t        j                  |«      t        j                  ddg«      «       y )NrØ   r˜  rT   rx   ©rŸ  r   r&   r	   r   rx  s       r0   rz  zTestSyHe.test_symmÆ  s9   € ñ �$—,‘, $§,¡,°bÔ9ˆÜ!¤"§'¡'¨#£,´·±¸¸B¸Ó0@ÕAr2   Úhemmc                 óª   —  || j                   | j                   d¬«      }t        t        j                  |«      t        j                  ddg«      «       y )NrØ   r˜  rT   r¢  rx  s       r0   Ú	test_hemmzTestSyHe.test_hemmÌ  s8   € ñ �$—,‘, $§,¡,°bÔ9ˆÜ!¤"§'¡'¨#£,´·±¸¸A¸³Õ@r2   rŠ  c                 ó”   —  || j                   d¬«      }t        t        j                  |«      t        j                  ddg«      «       y )NrØ   rŒ  rx   r¢  rx  s       r0   r�  zTestSyHe.test_syrkÒ  s1   € á�$—,‘, bÔ)ˆÜ!¤"§'¡'¨#£,´·±¸¸R¸Ó0AÕBr2   Úherkc                 ó”   —  || j                   d¬«      }t        t        j                  |«      t        j                  ddg«      «       y )NrØ   rŒ  rT   r¢  rx  s       r0   Ú	test_herkzTestSyHe.test_herk×  s0   € á�$—,‘, bÔ)ˆÜ!¤"§'¡'¨#£,´·±¸¸A¸³Õ@r2   r–  c                 ó°   —  || j                   | j                   d¬«      }t        t        j                  |«      dt        j                  ddg«      z  «       y )NrØ   r˜  rå   rx   r¢  rx  s       r0   Útest_syr2k_zrzTestSyHe.test_syr2k_zrÜ  s<   € á�$—,‘, $§,¡,°bÔ9ˆÜ!¤"§'¡'¨#£,°´2·7±7¸BÀ¸8Ó3DÑ0DÕEr2   Úher2kc                 ó°   —  || j                   | j                   d¬«      }t        t        j                  |«      dt        j                  ddg«      z  «       y )NrØ   r˜  rå   rT   r¢  rx  s       r0   Útest_her2k_zrzTestSyHe.test_her2k_zrá  s;   € á�$—,‘, $§,¡,°bÔ9ˆÜ!¤"§'¡'¨#£,°´2·7±7¸A¸q¸6³?Ñ0BÕCr2   N)r¹   rº   r»   Ú__doc__rr  rr   rz  r¥  r�  r©  r«  r®  r¼   r2   r0   r�  r�  ¿  s¸   „ Ù<ò-ñ �f˜dÓ#ñBó $ðBñ
 �f˜dÓ#ñAó $ðAñ
 �f˜dÓ#ñCó $ðCñ �f˜dÓ#ñAó $ðAñ �g˜tÓ$ñFó %ðFñ �g˜tÓ$ñDó %ñDr2   r�  c                   óŽ   — e Zd ZdZd„ Z edd«      d„ «       Z edd«      d„ «       Z edd«      d„ «       Z edd«      d	„ «       Z	y
)ÚTestTRMMz!Quick and simple tests for *trmm.c                 ó*  — t        j                  ddgddgg«      | _        t        j                  g d¢g d¢g«      | _        t        j                  g d¢g d¢g d¢g d	¢gd
¬«      | _        t        j                  ddgddgddgddgddggd
¬«      | _        y )NrØ   rå   rƒ  ©rm  r„  rn  ©r‡  rˆ  rƒ  )rT   rT   r   r4   )r   rT   r‡   ry   )r   r   rT   r§   )r   r   r   rT   rN   )r   rT   r‡   r   ry   r4   r§   r|   rˆ   r}   r¨   )r&   ro  r{   rø   Úa2Úb2rq  s    r0   rr  zTestTRMM.setup_methodê  s›   € Ü—‘˜B ˜:Ø ˜9ð&ó 'ˆŒä—‘š=Ú(ð*ó +ˆŒô —(‘(šLÚ(Ú(Ú(ð*ð 25ô6ˆŒô —(‘(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸GÐDØ!$ô&ˆ�r2   ÚtrmmÚsdzcc           	      ó¢  — |}t        t        |d| j                  | j                  «        |d| j                  j	                  |«      | j                  j	                  |«      d¬«      }| j                  j
                  d   }t        || j                  | j                  d |…d |…f   z  ddt        j                  |«      j                  z  ¬«       y )NrØ   rT   )rw  rl  éd   )rÚ   Úatol)
rñ   rò   rµ  r¶  r  r�  r   r&   rî   rï   )rƒ   rN   r   r·  ry  r(  s         r0   Ú	test_sidezTestTRMM.test_side÷  sŸ   € àˆä”i  s¨D¯G©G°T·W±WÔ=Ù�3˜Ÿ™Ÿ™ uÓ-¨t¯w©w¯~©~¸eÓ/DØôˆà�G‰G�M‰M˜!ÑˆÜ˜˜TŸW™W t§w¡w¨r°¨r°2°A°2¨v¡Ñ6¸RØ ¤§¡¨%£×!4Ñ!4Ñ4ö	6r2   ru   c                 óŽ   —  |d| j                   | j                  «      }t        j                  g d¢g d¢g«      }t	        ||«       y )NrØ   )r†  g      0@g      Àr´  ©r{   rø   r&   ro  r   ©rƒ   rN   r   ÚresultÚexpecteds        r0   Útest_abzTestTRMM.test_ab  s:   € á�2�t—v‘v˜tŸv™vÓ&ˆä—8‘8š_Ú,ð.ó /ˆä! &¨(Õ3r2   c                 ó’   —  |d| j                   | j                  d¬«      }t        j                  g d¢g d¢g«      }t	        ||«       y )NrØ   TrÛ   r³  )rn  rƒ  rl  r¾  r¿  s        r0   Útest_ab_lowerzTestTRMM.test_ab_lower
  s<   € á�2�t—v‘v˜tŸv™v¨TÔ2ˆÜ—8‘8š_Ú,ð.ó /ˆä! &¨(Õ3r2   c                 óö  — | j                   j                  |«      }dD ]d  }|j                  «       } |d| j                  ||¬«      }|j                  j
                  rJ ‚t        j                  ||«      rJ ‚t        ||«       Œf t        j                  |j                  «       «      } |d| j                  |d¬«      }|j                  j
                  sJ ‚t        j                  ||«      sJ ‚t        ||«       y )N)TFrØ   )Úoverwrite_bT)rø   r  r…   r{   ÚflagsÚf_contiguousr&   Úmay_share_memoryr   Úasfortranarrayr   )rƒ   rN   r   rø   ÚoverwrÚbcopyrÀ  s          r0   Útest_b_overwriteszTestTRMM.test_b_overwrites  sÖ   € ð �F‰F�M‰M˜%Ó ˆØ#ò 	#ˆFØ—F‘F“HˆEÙ�r˜4Ÿ6™6 5°fÔ=ˆFà—{‘{×/Ò/Ð/Ð/Ü×*Ñ*¨5°&Ô9Ð9Ð9Ü˜ Õ"ð	#ô ×!Ñ! !§&¡&£(Ó+ˆÙ�2�t—v‘v˜u°$Ô7ˆØ�{‰{×'Ò'Ð'Ð'Ü×"Ñ" 5¨&Ô1Ð1Ð1Ü! %¨Õ0r2   N)
r¹   rº   r»   r¯  rr  rr   r¼  rÂ  rÄ  rÍ  r¼   r2   r0   r±  r±  ç  sv   „ Ù+ò&ñ �f˜fÓ%ñ6ó &ð6ñ �f˜fÓ%ñ4ó &ð4ñ �f˜fÓ%ñ4ó &ð4ñ �f˜fÓ%ñ1ó &ñ1r2   r±  Útrsmru   c                 ó4  — t         j                  j                  d«      }t        j                  |«      j                  dz  }| }|j                  d«      j                  |«      }|j                  d«      j                  |«      } |d«      }t        t        ||||«       t        t        |||j                  |«       d}d}	 |d«      }|t        v r7|j                  |	|	f«      |j                  |	|	f«      d	z  z   t        |	«      z   }n|j                  |	|	f«      t        |	«      z   }|j                  |«      }t        |«      }
t        |«      }|j                  |	|f«      j                  |«      }|j                  ||	f«      j                  |«      } ||||¬
«      }t        |j                  |j                  «       t        |
||z  «      }t!        |||¬«        ||||d¬«      }t        |
j                  ||z  «      }t!        |||¬«        ||||d¬«      }t        |
j#                  «       j                  ||z  «      }t!        |||¬«        ||||d¬«      } |d«      |
t%        |	«      t%        |	«      f<   t        |
||z  «      }t!        |||¬«        ||||dd¬«      }t        |
j#                  «       j                  ||j#                  «       j                  z  «      }t!        ||j#                  «       j                  |¬«        ||||ddd¬«      } |d«      |t%        |	«      t%        |	«      f<   t        |j#                  «       j                  ||j#                  «       j                  z  «      }t!        ||j#                  «       j                  |¬«       y )Nr  iè  )r‡   ry   râ   rT   rˆ   r|   g      ÀrÇ   )r  r{   rø   )r»  )r  r{   rø   Útrans_ar   )r  r{   rø   r   )r  r{   rø   r   rw  )r  r{   rø   r   rw  rÜ   )r&   r  r  rî   rï   r  rñ   rò   rð   r�   r   r	   r
   r   r�  r   r   rü   r   )rN   r   r  Útolr   r  ÚBr  rà   r  ÚAuÚAlÚB1ÚB2r¯   Úx2s                   r0   Ú	test_trsmrØ  %  sõ  € ä
�)‰)×
Ñ
 Ó
%€CÜ
�(‰(�5‹/×
Ñ
˜dÑ
"€CØ€Dð 	�
‰
�6Ó×!Ñ! %Ó(€AØ�
‰
�6Ó×!Ñ! %Ó(€AÙ�!‹H€EÜ”)˜T 5¨!¨QÔ/Ü”)˜T 5¨!¯#©#¨qÔ1à	€AØ	€AÙ�$‹K€EØ”ÑØ�Z‰Z˜˜A˜Ó #§*¡*¨a°¨VÓ"4°RÑ"7Ñ7¼3¸q»6ÑA‰à�J‰J˜˜1�vÓ¤ Q£Ñ'ˆØ	�‰�‹€AÜ	ˆa‹€BÜ	ˆa‹€BØ	�‰�Q˜�FÓ	×	"Ñ	" 5Ó	)€BØ	�‰�Q˜�FÓ	×	"Ñ	" 5Ó	)€Bá	�E˜Q "Ô	%€BÜ�—‘˜2Ÿ8™8Ô$Ü	ˆr�5˜‘8Ó	€BÜ�B˜ Õ%á	�E˜Q "¨aÔ	0€BÜ	ˆr�t‰t�U˜2‘XÓ	€BÜ�B˜ Õ%á	�E˜Q "¨aÔ	0€BÜ	ˆr�w‰w‹y�{‰{˜E "™HÓ	%€BÜ�B˜ Õ%á	�E˜Q "¨1Ô	-€BÙ$ Q›x€B„vˆaƒy”&˜“)ÐÑÜ	ˆr�5˜‘8Ó	€BÜ�B˜ Õ%á	�E˜Q "¨1°1Ô	5€BÜ	ˆr�w‰w‹y�{‰{˜E "§'¡'£)§+¡+Ñ-Ó	.€BÜ�B˜Ÿ™›	Ÿ™¨#Õ.á	�E˜Q "¨1°1¸AÔ	>€BÙ$ Q›x€B„vˆaƒy”&˜“)ÐÑÜ	ˆr�w‰w‹y�{‰{˜E "§'¡'£)§+¡+Ñ-Ó	.€BÜ�B˜Ÿ™›	Ÿ™¨#Ö.r2   zgh-16930)Úrunrc   c                  óÊ   — t        j                  dd«      } t        j                  j                  j                  | ddd«      }t        j                  d«      }t        ||«       y )Nr¨   r}   ry   r4   rx   iô  )	r&   ÚrepeatÚscipyÚlinalgÚblasÚdnrm2r¢   r£   r   )r­   ÚactualrÁ  s      r0   Útest_gh_169309rá  [  sK   € ô 	�	‰	�"�aÓ€AÜ�\‰\×Ñ×$Ñ$ Q¨¨1¨bÓ1€FÜ�y‰y˜‹~€HÜ�F˜HÕ%r2   zdoes not fail with ILP64 MKLrb   c                  óì   — t        j                  dd«      } d}t        j                  j                  j                  d| fd¬«      }t        t        «      5   || dd|«       d d d «       y # 1 sw Y   y xY w)	Nr¨   r}   rx   rJ   r5   r6   ry   r4   )r&   rÛ  rÜ  rÝ  rÞ  r   rñ   ÚFBLAS_ERROR)r­   rÞ   rß  s      r0   Útest_dnrm2_neg_incxrä  d  sg   € ô
 	�	‰	�"�aÓ€AØ€DÜ�L‰L×Ñ×,Ñ,¨V°a°TÀÐ,ÓM€EÜ	”{Ó	#ñ Ùˆa��A�tÔ÷÷ ñ ús   ÁA*Á*A3)N)@r¢   r@   Únumpyr&   Únumpy.testingr   r   r   r   r   rñ   r   r	   r
   r   r   r   r   r   r   r   rÜ  Úscipy.linalgr   r   r   Úscipy.linalg.blasr   r   rE   Ú__fblas_errorrã  rF   ÚImportErrorr   r8   Ú__fblas_64_errorr[   r,   rc  r(   r)   r�   rb  r1   r>   rB   rH   rQ   r^   rr   rt   r¾   rf  rj  r�  r”  r�  r±  rØ  rg   Úxfailrá  rä  r¼   r2   r0   ú<module>rí     sÀ  ðó
 Û Û ÷Gó Gå *÷/÷ /÷ /ó ß 8Ñ 8Ý 'ðÝ,Ø×%Ñ%€KØ€Nð
Ý2Ø×+Ñ+€Kð
 �z‰z˜2Ÿ:™:Ð&€Ø—,‘, §¡Ð.€Ø	�~Ñ	%€ò!#òH	Dò=ò>òò
ó+7÷\?.ñ ?.÷HF	*ñ F	*÷ROñ O÷),ñ ),÷X 5ñ  5÷H!Añ !A÷J%Dñ %D÷P;1ñ ;1ñ| �&˜&Ó!ñ2/ó "ð2/ðj ‡�×Ñ�uØ$ð ó &ñ&ó&ð&ð ‡�×Ñ�9Ð%CÐÓDñó Eñøð]" ò Ø€EØƒNðûð ò ØƒHðús$   ÁE$ Á!E4 Å$	E1Å0E1Å4E?Å>E?