
    Bpj                        S SK r S SKrS SKrS SKJrJrJrJr  S SKJ	r
  S SKJrJrJrJrJrJrJrJrJrJr  S SKrS SKJrJrJr  S SKJr   S SKJr  \R<                  rSr  S S
KJ"r#  \#RH                  r\RJ                  \RL                  /r'\RP                  \RR                  /r*\'\*-   r+S r,S r-S r.S r/S r0S r1S+S jr2 " S S5      r3 " S S5      r4 " S S5      r5 " S S5      r6 " S S5      r7 " S S5      r8 " S S5      r9 " S  S!5      r:\2" S"S#5      S$ 5       r;\Rx                  R{                  S	S%S&9S' 5       r>\Rx                  R{                  \S(S)9S* 5       r?g! \! a    SrS	r  GNf = f! \! a    Sr# GNf = f),    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            
         [        S[        R                  " S[        R                  SS9[        R                  " S[        R                  SS945      u  pn[        U R                  S5        [        UR                  S5        [        S5      n [        U R                  S5        [        S	[        R                  S
9n [        U R                  S5        [        S	SS
9n [        U R                  S5        [        S	[        R                  S
9n [        U R                  S5        [        S[        R                  " S[        R                  S
9[        R                  " S[        R                  S
945      n [        U R                  S5        g )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      X/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_blas.pytest_get_blas_funcsr1   '   s      	&C	8	&S	9	;
JBB c"c" 
	Bc" 
bll	3Bc"	c	*Bc" 
bnn	5Bc" 
&

;&=?
B c"    c                     [        S[        R                  " S5      4SS9n [        (       a   U R                  [        R
                  :X  d   e[        R                  (       d   e[        (       a  U R                  S:X  d   e [        S[        R                  " S5      45      n [        (       a   U R                  [        R
                  :X  d   e[        R                  (       d   e[        (       a  U R                  S:X  d   eg g )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    &266!9,kBD)24>>RXX%@@@@-6Y4z)CCG &266!9,/D)24>>RXX%@@@@-6Y4z)CCG)r2   c                  h   [         (       aS  [        S[        R                  " S5      4SS9n U R                  [        R
                  :X  d   eU R                  S:X  d   eg [        R                  " [        5         [        S[        R                  " S5      4SS9  S S S 5        g ! , (       d  f       g = f)Nr#   r4   Tr6   r8   )
r   r   r&   r   r9   r:   r<   pytestr   RuntimeErrorr=   s    r0   test_get_blas_funcs_ilp_truerB   W   sw    yfrvvayl$?~~))):---]]<(6BFF1I<t< )((   9!B##
B1c                  h   [         (       aS  [        S[        R                  " S5      4SS9n U R                  [        R
                  :X  d   eU R                  S:X  d   eg [        R                  " [        5         [        S[        R                  " S5      4SS9  S S S 5        g ! , (       d  f       g = f)Nr#   r4   Fr6   fblas)
HAS_LP64_FBLASr   r&   r   r9   r;   r<   r@   r   
ValueErrorr=   s    r0   test_get_blas_funcs_ilp_falserH   b   sw    ~frvvayl%@~~)))7***]]:&6BFF1I<u= '&&rC   c                      [        S[        R                  S9u  pU R                  S:X  d   eUR                  S:X  d   e[        S[        R                  S9u  pnXL d   eXL d   eg )N)nrm2dotr$   r%   )rK   dotcdotu)r   r&   r(   r*   r,   )fghs      r0   test_get_blas_funcs_aliasrQ   m   s_    />DA::::4BJJGGA!6M66M6r2   c                     U R                  S5      (       a  U SS n OU S;   a  U S   n OU S;   a  U S   n [        R                  [        R                  [        R                  [        R
                  S.nX   $ )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   sf    	<		<	==r||"**2::VF>r2   c                    Uc  [         S4[        S4/n/ nU H  u  pEU H  n[        U5      nUc=  [        R                  " SUU SU U  3[        R
                  R                  U S3S9S9nO*[        XFU -   5      n	[        R                  " XU SU U  3S9nUR                  U5        M     M     [        R
                  R                  S	U5      $ )
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 F#F+E{%"1VHYK8 ++**XJ>O2P*Q C)!34ahZq3TUMM&!  !" ;;"":v66r2   c                   P   \ rS rSr\" SS5      S 5       r\" SS5      S 5       r\" S/ SQ5      S	 5       r\" S
S5      S 5       r\" SS5      S 5       r	\" SS5      S 5       r
\" S/ SQ5      S 5       r\" S/ SQ5      S 5       r\" SS5      S 5       r\" S/ SQ5      S 5       rSrg)TestFBLAS1Simple   r   sdczc                 z    [        U" / SQ/ SQSS9/ SQ5        U[        ;   a  [        U" / SQ/ SQSS9/ SQ5        g g )NrT   r   r4   )r   r4      a)   	      )rT                  @r4   )r}   y            $@r   r   COMPLEX_DTYPESselfrN   r   s      r0   	test_axpyTestFBLAS1Simple.test_axpy   s;    !!IzQ"?",	.N"%a
J!&D&46 #r2   copyc                     [        U" / SQS/S-  5      / SQ5        U[        ;   a  [        U" / SQS/S-  5      / SQ5        g g )N)r4      rz      r4   )r4                 @y      @      @r   r   s      r0   	test_copyTestFBLAS1Simple.test_copy   s=    !!Is1u"5yAN"%as1u&=}M #r2   asum)rY   r"   rU   rV   c                 j    [        U" / SQ5      S5        U[        ;   a  [        U" / SQ5      S5        g g )Nr4   rz                    @r         @         )r   r   r   s      r0   	test_asumTestFBLAS1Simple.test_asum   s,    AjM2.N". 126 #r2   rK   sdc                 2    [        U" / SQ/ SQ5      S5        g )Nr   )r   rz   rT   ir   r   s      r0   test_dotTestFBLAS1Simple.test_dot   s    Aj)4b9r2   rM   czc                 2    [        U" / SQ/ SQ5      S5        g )Nr   r   r4   rT   y      "       @r   r   s      r0   	test_dotuTestFBLAS1Simple.test_dotu   s    Ani8%@r2   rL   c                 2    [        U" / SQ/ SQ5      S5        g )Nr   r   r   rT   y      @      ,r   r   s      r0   	test_dotcTestFBLAS1Simple.test_dotc   s    Anj95Ar2   rJ   c                     [        U" / SQ5      [        R                  " S5      5        U[        ;   a)  [        U" / SQ5      [        R                  " S5      5        g g )Nr   2   r   )r   mathsqrtr   r   s      r0   	test_nrm2TestFBLAS1Simple.test_nrm2   s<    AjM499R=9N". 1499R=A #r2   scal)rY   r"   rW   rX   c                 v    [        U" S/ SQ5      / SQ5        U[        ;   a  [        U" S/ SQ5      / SQ5        g g )Nr   r   )   i
   r4   r   )y              "@iy      "@      (r   r   s      r0   	test_scalTestFBLAS1Simple.test_scal   s2    !!Az"2K@N"%a>&:<LM #r2   swapc                     / SQ/ SQpCU" X45      u  pV[        XT5        [        Xc5        U[        ;   a(  / SQ/ SQpCU" X45      u  pV[        XT5        [        Xc5        g g )Nr   )r4   r}   r   )r   r4   y      @      r   )r   rN   r   xyx1y1s          r0   	test_swapTestFBLAS1Simple.test_swap   sS    *11!"(!"(N"}qqWFB%b,%b,	 #r2   amax)isrd   icizc                 j    [        U" / SQ5      S5        U[        ;   a  [        U" / SQ5      S5        g g )N)r   r   r4   rT   )y      @      @r   )r   r   r   s      r0   	test_amaxTestFBLAS1Simple.test_amax   s,    Qz]A&N"=)1- #r2    N)__name__
__module____qualname____firstlineno__rr   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r2   r0   rt   rt      s   ff%6 &6 ff%N &N
 f457 67
 eT": #: fd#A $A fd#B $B f45B 6B
 f45N 6N
 ff%
- &
- f67. 8.r2   rt   c                      \ rS rSr\" SS5      S 5       r\" SS5      S 5       r\" SS	5      S
 5       r\" SS	5      S 5       r\" SS5      S 5       r	\" SS	5      S 5       r
\" SS5      S 5       r\" SS	5      S 5       r\" SS5      S 5       r\R                  R!                  SSS/5      \R                  R!                  S\5      S 5       5       r\R                  R!                  SSS/5      \R                  R!                  S/ \\-    V Vs/ s H  nSU4PM	     snn Q\ V Vs/ s H  nSU4PM	     snn Q5      S 5       5       r\R                  R!                  SSS/5      \R                  R!                  S/ \\-    V Vs/ s H  nS U4PM	     snn Q\ V Vs/ s H  nS!U4PM	     snn Q5      S" 5       5       r\R                  R!                  SSS/5      \R                  R!                  S\5      S# 5       5       r\" S$S5      S% 5       r\" S&S5      S' 5       r\" S(S5      S) 5       r\" S*S5      S+ 5       r\" S,S5      S- 5       r\" S.S5      S/ 5       rS0rg1s  snn f s  snn f s  snn f s  snn f )2TestFBLAS2Simple   gemvrv   c           	          [        U" SS//S/5      S/5        [        U" SS//S/SS/5      S/5        U[        ;   a4  [        U" SS//S/5      S/5        [        U" SS//S/SS	/5      S
/5        g g Nr4   r   irz   ir   r   y      H      By              @y      H      5r   r   s      r0   	test_gemvTestFBLAS2Simple.test_gemv   s    !!Aurd"3cU;!!AurdAs";cUCN"%adVHrd&;gYG%adVHrdAt&D'.i1 #r2   gerr   c           
      \   [        U" SSS/SS/5      SS/SS//5        [        U" S/ SQSS/5      SS/SS	/S
S//5        [        U" SSS/SS/SS/SS//S9SS/SS//5        U[        ;   a@  [        U" SSS/SS/5      SS/SS//5        [        U" S/ SQSS/5      SS/SS	/S
S//5        g g )NrT   r   r4   r   r   r   rx   r      r      r{   r~                 ?r   r   r   r   r   r   r   s      r0   test_gerTestFBLAS2Simple.test_ger  s    !!A1v1v"6!Q!Q8HI!!Ay1a&"9$%q6B8b"X">	@!!A1v1v&'VaV$4#69:AB7H	JN"%aB7QF&;(*Bx!Q&8:%a<"b&B()1vBx"b&BD #r2   gerur   c                     [        U" SSS/SS/5      SS/SS	//5        [        U" S
/ SQSS/5      SS	/SS/SS//5        g )NrT   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r0   	test_geruTestFBLAS2Simple.test_geru  s[    !!AAwA"7$&8aV"4	6!!Br2h"?$%q6B8b"X">	@r2   gercc                     [        U" SSS/SS/5      SS/SS	//5        [        U" S/ S
QSS/5      SS	/SS/SS//5        g )NrT   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   r   s      r0   	test_gercTestFBLAS2Simple.test_gerc  s[    !!AAwA"7$&8aV"4	6!!A|b"X">$%q6B8b"X">	@r2   syrc                    [         R                  " SSSS9n[         R                  " US S 2[         R                  4   U-  5      n[         R                  " US S S2[         R                  4   US S S2   -  5      n[         R                  " SSSS	S
9n[         R                  " SSSS9R                  S5      n[         R                  " US S 2[         R                  4   U-  5      n[         R                  " US S S2[         R                  4   US S S2   -  5      n	[         R                  [         R                  " S5      U[         R                  " S5      4   R                  5       n
[         R                  " U5      R                  n[        U" SU5      XKS9  [        U" SUSS9UR                  US9  [        U" SUSSSS9XKS9  [        U" SUSSSS9X[S9  U[        ;   a  [        U" SU5      XS9  [        U" SUSS9UR                  US9  [        U" SU
SSSS9XS9  [        U" SU
SSSS9XS9  [         R                  " SUS5      nU" SX|SS9n[        XUS9  U" SX|S9nXLd   e[        USU-  US9  OE[         R                  " SUS5      nU" SX<SS9n[        XUS9  U" SX<S9nXLd   e[        USU-  US9  [        [        USUSS9  [        [        USUSS9  [        [        USUSS9  [        [        USUSS9  [        [        USUSS9  [        [        USUSS9  [        [        USU[         R                  " SSS5      S9  g ) NrT   rz   r"   r$   ry   r         !@   Fendpointr~   Dr         ?rtolTlowerr   incxoffxnr   r4   r   r   r   r|   overwrite_a       @r{   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_syrTestFBLAS2Simple.test_syr  s   IIa#&wwqBJJ'!+,wwq2rzz!12QttW<=KK3U3IIa#&++C0wwqBJJ'!+,wwq2rzz!12QttW<=EE"((1+q"((1+-.446xx""#q	43#q-tvvDA#qqqA6H#qrQ7$	1 N"Ac1It7Ac1D1466EAc111:DLAc12A;(5 ,A#q40AA$/#qA::AqvD1 ,A#q40AA$/#qA::AqvD1iC3iC3iC4iCb1iCa0iC!4iCbhhvsC.HIr2   herc                    [         R                  " SSSS9n[         R                  " SSSS9R                  S5      n[         R                  " US S 2[         R                  4   UR                  5       -  5      n[         R                  " US S S2[         R                  4   US S S2   R                  5       -  5      n[         R                  [         R                  " S5      U[         R                  " S5      4   R                  5       n[         R                  " U5      R                  n[        U" S	U5      XXS
9  [        U" S	USS9UR                  R                  5       US
9  [        U" S	USSSS9XXS
9  [        U" S	USSSS9XhS
9  [         R                  " SUS5      n	U" S	XISS9n
[        XUS
9  U" SXIS9n
XLd   e[        U
SU-  US
9  [        [        US	USS9  [        [        US	USS9  [        [        US	USS9  [        [        US	USS9  [        [        US	USS9  [        [        US	USS9  [        [        US	U[         R                  " SSS5      S9  g )NrT   rz   r"   r$   r~   r   ry   r   r   r   Tr   r4   r   r   r   r   r   r   r{   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_herTestFBLAS2Simple.test_herO  s   IIa#&IIa#&++C0wwqBJJ'!&&(23wwq2rzz!12QttW\\^CDEE"((1+q"((1+-.446xx""#q	43#q-tvv{{}4H#qqqA6H#qrQ7$	1 HHVUC(c1t,d+c1Nzz1T6-iC3iC3iC4iCb1iCa0iC!4iCbhhvsC.HIr2   syr2c                 ,   [         R                  " SSSS9n[         R                  " SSSS9n[         R                  " US S 2[         R                  4   U-  US S 2[         R                  4   U-  -   5      n[         R                  " US S S2[         R                  4   US S S2   -  US S S2[         R                  4   US S S2   -  -   5      n[         R                  " SSS	S
S9n[         R
                  " U5      R                  n[        U" SX45      XXS9  [        U" SX4SS9US S2S S24   US9  [        U" SX4SS9UR                  US9  [        U" SXwSSSSS9XXS9  [        U" SXwSSSSSS9US S2S S24   US9  [        U" SXwSSSSS9XhS9  [         R                  " SUS5      n	U" SX4U	SS9n
[        XUS9  U" SX4U	S9n
XLd   e[        U
SU-  US9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4SS9  [        [        USX4[         R                  " S SS5      S9  g )!NrT   rz   r"   r$   r~   ry   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   r{   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_syr2TestFBLAS2Simple.test_syr2p  s   IIa#&IIa#&!RZZ-(1,qBJJ/?!/CCD$B$

"2 3a"g ="#DbD"**$4"5$B$"?!@ A KK3U3xx""#qe7#qq)5!RaR=tD#q40%''E#q!!!"E	*#q!!!"Jbqb"1"fD	2 	#q"12BG%	2 HHVUC(c11$/t,c11zz1U7.iCA6iCA6iCB7iCA6iCA6iCB7iC4iC3iCQ7iC&#s1KLr2   her2c                     [         R                  " SSSS9R                  S5      n[         R                  " SSSS9R                  S5      nUS S 2[         R                  4   UR	                  5       -  US S 2[         R                  4   UR	                  5       -  -   n[         R
                  " U5      nUS S S2[         R                  4   US S S2   R	                  5       -  nXdS S S2[         R                  4   US S S2   R	                  5       -  -  n[         R
                  " U5      n[         R                  [         R                  " S5      U[         R                  " S5      4   R                  5       n[         R                  [         R                  " S5      U[         R                  " S5      4   R                  5       n[         R                  " U5      R                  n	[        U" S	X45      XYS
9  [        U" S	X4SS9US S2S S24   U	S
9  [        U" S	X4SS9UR                  R	                  5       U	S
9  [        U" S	XxSSSSS9XYS
9  [        U" S	XxSSSSSS9US S2S S24   U	S
9  [        U" S	XxSSSSS9XiS
9  [         R                  " SUS5      n
U" S	X4U
SS9n[        XU	S
9  U" SX4U
S9nXLd   e[        USU-  U	S
9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4SS9  [        [        US	X4[         R                  " SSS5      S9  g ) NrT   r~   r"   r$   r   r   ry   r   r   r   r4   r   Tr   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   r  r  r  )r   rN   r   r   r   r  r  uvr   r|   r
  s               r0   	test_her2TestFBLAS2Simple.test_her2  s    IIa#&++C0IIa3',,S1!RZZ- 1668+a2::.>.II$B$

*+a"glln<4R4+,q2w||~==.EE"((1+q"((1+-.446EE"((1+q"((1+-.446xx""#qe7#qq)5!RaR=tD#q40%'',,.!	# 	#q!!!!D	*#q!!!!qIbqb"1"fD	2 	#q"12AF%	2 HHVUC(c11$/t,c11zz1U7.iCA6iCA6iCB7iCA6iCA6iCB7iC4iC3iCQ7iCc2	4r2   gbmvc                 &   [         R                  R                  S5      nSnSnSnSn[        [	        UR                  US-   5      [        XV-
  S-
  5      5      [	        UR                  US-   5      [        XG-
  S-
  5      5      5      nUR                  U5      n[        Xg-   S-   U4US9n	US   U	SS S24'   US   U	SSS	24'   US
   U	SSS24'   US   U	SS S24'   UR                  U5      R                  U5      n
UR                  U5      R                  U5      nU" S5      U" S5      pUnU" XTXvXXUS9	nXR                  U
5      -  X-  -   n[        UU5        U" XTXvXXUSS9
nXR                  R                  U5      -  X-  -   n[        UU5        g )N  r}   rz   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_gbmvTestFBLAS2Simple.test_gbmv  s   ii##D)VCJJr!t,eADFm<CJJr!t,eADFm<>HHUOBE!GQ<u- dG1bqb5	tW1ac6
tW1ac6
dG1bqb5	JJqM  'JJqM  'Ahb	tAr'UU1X(!"b)ArQ0SSWWQZ$(*!"b)r2   r7   TFr   c           	         U(       a  [         O[        nUc$  U(       a  SOSn[        R                  " U S35        [        R
                  R                  S5      nSnSn[        Xf4US9n[        US-   U4US9n	UR                  U5      U[        U5      [        U5      4'   [        SUS-   5       H;  n
UR                  Xj-
  5      nX[        Xj-
  5      [        X5      4'   XS	U
-
  U
S 24'   M=     UR                  U5      nU[        ;   a*  XR                  5       R                  -  n[        S
USS9u  nOXR                  -  n[        SUSS9u  n[        U5      U	S	S S 24'   UR                  U5      R                  U5      nUR                  U5      R                  U5      nU" S5      U" S5      nnU" XXUUS9nXR!                  U5      -  UU-  -   n[#        UU5        g )Nr8   rE   ra   r)  r   r   r$   rT   ry   )hbmvr5   r   r7   )sbmv      ?r4   )kr-  r|   r   r   r.  )r8   rE   r@   rh   r&   r0  r1  r   r   ranger2  r   r  r  r   r   rK   r   )r   r   r7   ro   rp   r3  r   r?  r4  r5  ind2tempr6  r   r   r-  r.  r   r7  s                      r0   test_sbmv_hbmvTestFBLAS2Simple.test_sbmv_hbmv  s     hU;%*zHKK8*$567ii##D)1&&AaC85) #&**Q-&)VAY
!QqSMD::af%D15fQVnfTo-.!%r$w~ " HHUON"OA"9EMEDHA"9EMEDG2q5	JJqM  'JJqM  'Dk58tAb>UU1Xq(!"b)r2   zfname,dtypespmvhpmvc                    U(       a  [         O[        nUc$  U(       a  SOSn[        R                  " U S35        [        R
                  R                  S5      nSnUR                  Xw45      R                  U5      nU[        ;   a  XR                  Xw45      S-  -  nXS:X  a  UR                  OUR                  5       R                  -  n[        U5      u  pXU	4   nUR                  U5      R                  U5      nUR                  U5      R                  U5      n[        SU-  5      R                  U5      n[        SU-  5      R                  U5      nU" S	5      U" S5      nn[        U4US
S9u  nU" UUXUUS9nUUR                  U5      -  UU-  -   n[!        UU5        U" US-
  UUXUSSXwS9
nUUS S2S S24   -  R                  USS S2   5      UUSS S2   -  -   n[!        USS S2   U5        [#        US   US   5        g )Nr8   rE   ra   r)  r4   r   rE  r   r>  r5   r<  )r   r-  apr   r   r.  rT   )
r   r-  r.  r   r   rH  r   r  r   r  ry   r   )r8   rE   r@   rh   r&   r0  r1  r2  r   r  r  r   r   r   r   rK   r   r   )r   fnamer   r7   ro   rp   r3  r   r4  r%   rApr   r   xlongylongr-  r.  r6  r   r7  s                        r0   test_spmv_hpmvTestFBLAS2Simple.test_spmv_hpmv  s     hU;%*zHKK8*$567ii##D)JJv%%e,N"QF#B&&A	VOQSS3A!tWJJqM  'JJqM  'qs""5)QqS	  'Dk58txuKHAUr!$?QUU1Xq(!"b) AaCu45bqq2aSbSk!&&uQTT{3dU14a4[6HH!"QTT(B/BqE58,r2   sprhprc                    U(       a  [         O[        nUc$  U(       a  SOSn[        R                  " U S35        [        R
                  R                  S5      nSnUR                  Xw45      R                  U5      nU[        ;   a  XR                  Xw45      S-  -  nXS:X  a  UR                  OUR                  5       R                  -  n[        U5      u  pXU	4   nUR                  U5      R                  U5      n[        R                  " U5      R                  R                  S5      nUS	:X  a@  [        S
USS9u  nXS S 2S 4   R!                  US S S 24   R                  5       5      -  U-   nO1[        SUSS9u  nXS S 2S 4   R!                  US S S 24   5      -  U-   nU" X}XS9n[#        SUS9nUUX4'   US	:X  a  UR                  5       OUUX4'   [%        UU5        g )Nr8   rE   ra   r)  r4   r   rP  g      @rQ  )rQ  r5   r<  )rP  )r   r-  rH  r   r4   r4   r$   )r8   rE   r@   rh   r&   r0  r1  r2  r   r  r  r   r   r   typer   rK   r   r   )r   rI  r   r7   ro   rp   r3  r   r4  r%   rJ  rK  r   r-  r6  r7  r   y1fs                     r0   test_spr_hprTestFBLAS2Simple.test_spr_hpr7  s     hU;%*zHKK8*$567ii##D)JJv%%e,N"QF#B&&A	UNQSS

2A!tWJJqM  '%%**3/E>"85LED1d7$'
(9::Q>B"85LED1d7$'
33a7BAr/F%(AD	!&%BGGIRAD	!#r*r2   c                    U(       a  [         O[        nUc$  U(       a  SOSn[        R                  " U S35        [        R
                  R                  S5      nSnUR                  Xf45      R                  U5      nU[        ;   aA  XuR                  Xf45      S-  -  nXwR                  5       R                  -  n[        SUSS	9u  nOXwR                  -  n[        S
USS	9u  n[        U5      u  pXzU	4   nUR                  U5      R                  U5      nUR                  U5      R                  U5      nU" S5      nUR                  5       US S 2S 4   R                  US S S 24   R                  5       5      -  nX-   UR                  5       R                  -   nU" XnXUS9n[        SUS9nUUX4'   U/ SQ   R                  5       U/ SQ/ SQ4'   [        UU5        g )Nr8   rE   ra   r)  r4   r   )hpr2r5   r<  )spr2r   )r   r-  r   r   rH  rS  r$   )rT   r4   r   )rT   r   r   )r   r   rT   )r8   rE   r@   rh   r&   r0  r1  r2  r   r  r  r   r   rK   r   r   )r   r   r7   ro   rp   r3  r   r4  r6  r%   rJ  rK  r   r   r-  r#  r7  r   rU  s                      r0   test_spr2_hpr2TestFBLAS2Simple.test_spr2_hpr2Z  s     hU;%*zHKK8*$567ii##D)JJv%%e,N"QF#B&&AOA"9EMEDHA"9EMEDA!tWJJqM  'JJqM  'aJJL1QW:>>!D!G*//*;<<UQVVXZZAa4F%(AD	$&yM$6$6$8Iy !!#r*r2   tbmvc           
         [         R                  R                  S5      nSnSnUR                  U5      R                  U5      n[	        XD4US9n[        US-   5       H/  nUR                  XH-
  5      U[        XH-
  5      [        X5      4'   M1     U[        ;   aH  U[        U5      ==   SUR                  US-   U-  XUS-   -  S-  -
  5      R                  U5      -  -  ss'   [	        US-   U4US9n	[        US-   5       H  n
[        XzS9X* S-
  U
S 24'   M     UnU" XYUS	9nUR                  U5      n[        X5        U" XYUSS
9nU" S5      U[        U5      [        U5      4'   UR                  U5      n[        X5        U" XYUSSS9nUR                  R                  U5      n[        X5        U" XYUSSS9nUR                  5       R                  R                  U5      n[        X5        g )Nr)  r   r4   r$   rT   r   r   r?  r?  r|   r   r?  r|   r   r   r?  r|   r   r   r/  )r&   r0  r1  r2  r   r@  r   r   r   r   rK   r   r  r  r   rN   r   r3  r   r?  r   r4  supr5  rowr6  r   r7  s                 r0   	test_tbmvTestFBLAS2Simple.test_tbmv{  s   ii##D)JJqM  '1&&1:C/2zz!%/@AfQUmVC^+,  N"gajMR#**ac1Wa1gqj-A"B"I"I%"PPPM AaC85)1:C#A~BtAvst| Aq!UU1X!")Aqq)"'(&)VAY
UU1X!")Aqq2SSWWQZ!")Aqq2VVXZZ^^A!")r2   tbsvc           
         [         R                  R                  S5      nSnSnUR                  U5      R                  U5      n[	        XD4US9n[        US-   5       H/  nUR                  XH-
  5      U[        XH-
  5      [        X5      4'   M1     U[        ;   aH  U[        U5      ==   SUR                  US-   U-  XUS-   -  S-  -
  5      R                  U5      -  -  ss'   [	        US-   U4US9n	[        US-   5       H  n
[        XzS9X* S-
  U
S 24'   M     UnU" XYUS	9n[        Xv5      n[        X5        U" XYUSS
9nU" S5      U[        U5      [        U5      4'   [        Xv5      n[        X5        U" XYUSSS9n[        UR                  U5      n[        X5        U" XYUSSS9n[        UR                  5       R                  U5      n[        X5        g )Ni90  r   r4   r$   rT   r   r   r_  r`  ra  rb  )r&   r0  r1  r2  r   r@  r   r   r   r   r   r   r  r  rc  s                 r0   	test_tbsvTestFBLAS2Simple.test_tbsv  s   ii##E*JJqM  '1&&1:C/2zz!%/@AfQUmVC^+,  N"gajMR#**ac1Wa1gqj-A"B"I"I%"PPPM AaC85)1:C#A~BtAvst| Aq!1[!")Aqq)"'(&)VAY
1[!")Aqq2133]!")Aqq21668::q!!")r2   tpmvc                    [         R                  R                  S5      nSnUR                  U5      R                  U5      nU[        ;   a2  [        UR                  XD45      UR                  XD45      S-  -   5      nO[        UR                  XD45      5      n[        U5      u  pxXhU4   n	Un
U
" XIUS9nUR                  U5      n[        X5        U
" XIUSS9nU" S5      U[        U5      [        U5      4'   UR                  U5      n[        X5        U
" XIUSSS9nUR                  R                  U5      n[        X5        U
" XIUSSS9nUR                  5       R                  R                  U5      n[        X5        g 	Nr)  r   r   )r   rH  r   rT   )r   rH  r   r   )r   rH  r   r   r/  r   )r&   r0  r1  r2  r   r	   r   rK   r   r   r  r  r   rN   r   r3  r   r   r4  r%   rJ  rK  r6  r   r7  s                r0   	test_tpmvTestFBLAS2Simple.test_tpmv  sO   ii##D)JJqM  'N"SZZ'#**aV*<R*??@ASZZ'(A A!tWA"UU1X!")A*"'(&)VAY
UU1X!")A3SSWWQZ!")A3VVXZZ^^A!")r2   tpsvc                    [         R                  R                  S5      nSnUR                  U5      R                  U5      nU[        ;   a2  [        UR                  XD45      UR                  XD45      S-  -   5      nO[        UR                  XD45      5      nU[        U5      -  n[        U5      u  pxXhU4   n	Un
U
" XIUS9n[        Xe5      n[        X5        U
" XIUSS9nU" S5      U[        U5      [        U5      4'   [        Xe5      n[        X5        U
" XIUSSS9n[        UR                  U5      n[        X5        U
" XIUSSS9n[        UR                  5       R                  U5      n[        X5        g rn  )r&   r0  r1  r2  r   r	   r   r   r   r   r   r  r  ro  s                r0   	test_tpsvTestFBLAS2Simple.test_tpsv  sN   ii##D)JJqM  'N"SZZ'#**aV*<R*??@ASZZ'(A	SVA!tWA"1[!")A*"'(&)VAY
1[!")A3133]!")A31668::q!!")r2   trmvc                    [         R                  R                  S5      nSnUR                  XD45      [        U5      -   R	                  U5      nUR                  S5      R	                  U5      nUnU" XVS9n[        U5      R                  U5      n	[        X5        U" XVSS9nU" S5      U[        U5      [        U5      4'   [        U5      R                  U5      n	[        X5        U" XVSSS9n[        U5      R                  R                  U5      n	[        X5        U" XVSSS9n[        U5      R                  5       R                  R                  U5      n	[        X5        g )Nr)  r4   r|   r   rT   r|   r   r   r|   r   r   r/  r   )r&   r0  r1  r   r2  r	   rK   r   r   r  r  
r   rN   r   r3  r   r4  r   r6  r   r7  s
             r0   	test_trmvTestFBLAS2Simple.test_trmv	  s    ii##D)ZZA&..u5JJqM  'A^!W[[^!")A#"'(&)VAY
!W[[^!")A!,!WYY]]1!")A!,!W\\^!!!$!")r2   trsvc                    [         R                  R                  S5      nSnUR                  XD45      [        U5      -   R	                  U5      nUR                  U5      R	                  U5      nUnU" XVS9n[        [        U5      U5      n	[        X5        U" XVSS9n[        [        U5      U5      n	[        X5        U" XVSS9nU" S5      U[        U5      [        U5      4'   [        [        U5      U5      n	[        X5        U" XVSSS9n[        [        U5      R                  U5      n	[        X5        U" XVSSS9n[        [        U5      R                  5       R                  U5      n	[        X5        g )	Nr)     rx  rT   )r|   r   r   ry  rz  r   )r&   r0  r1  r   r2  r   r	   r   r
   r   r  r  r{  s
             r0   	test_trsvTestFBLAS2Simple.test_trsv"  s<   ii##D)ZZA&..u5JJqM  'A^47A!")A!$47A!")A#"'(&)VAY
47A!")A!,4799a !")A!,47<<>##Q'!")r2   r   N)r   r   r   r   rr   r   r   r   r   r  r  r  r%  r8  r@   rg   rj   DTYPESrC  REAL_DTYPESr   rN  rV  r[  rf  rj  rp  rt  r|  r  r   ).0r   s   00r0   r   r      sL   ff%1 &1 eT"
D #
D fd#@ $@ fd#@ $@ eV$0J %0Jd eT"J #J@ fd#'M $'MR fd#.4 $.4` ff%* &*B [[WtUm4[[Wf-!* . 5!*F [[WtUm4[[] -'2^'C	D'Ce65/'C	D-'5	6~e65/~	6- -	 5
-@ [[WtUm4[[] -&1N&B	C&BU5%.&B	C-&4	5nU5%.n	5- +	 5
+< [[WtUm4[[Wf-+ . 5+> ff%#* &#*J ff%#* &#*J ff%* &*@ ff%* &*@ ff%* &*0 ff%* &*_ 
E	6H 
D	5s   I$II%I+r   c                   2    \ rS rSr\" SS5      S 5       rSrg)TestFBLAS3Simplei@  r#   rv   c           	          [        U" SS/S/5      S//5        [        U" SS/S/SS/5      S/5        U[        ;   a3  [        U" SS/S/5      S//5        [        U" SS/S/SS	/5      S
/5        g g r   r   r   s      r0   	test_gemmTestFBLAS3Simple.test_gemmA  s    !!AsRD/SE7;!!AsRD!aS"9C5AN"%aTFRD&9WI;G%aTFRD!bT&BWIN #r2   r   N)r   r   r   r   rr   r  r   r   r2   r0   r  r  @  s    ff%O &Or2   r  c                   t    \ rS rSrS r\" SS5      S 5       r\" SS5      S 5       r\" SS5      S 5       rSr	g	)
TestBLAS3SymmiJ  c                     [         R                  " SS/SS//5      U l        [         R                  " / SQ/ SQ/5      U l        [         R                  " S5      U l        [         R                  " / SQ/ SQ/5      U l        g )	Nr   r           )r   r        @)r        r   )r   r4   )r   r  g       @)r  r  g      "@)r&   arrayr|   r
  r   r%   tr   s    r0   setup_methodTestBLAS3Symm.setup_methodL  sg    B88% &<(* +=') *r2   symmrv   c           	         U" U R                   U R                  U R                  SSS9n[        X0R                  5        U" U R                   R
                  U R                  SU R                  SSS9n[        X0R                  5        U" U R                   U R                  R
                  SU R                  R
                  SSS9n[        X0R                  R
                  5        g )Nr   r|   r
  r%   r-  r.  rT   r|   r
  r   r%   r-  r.  )r|   r
  sider%   r-  r.  )r|   r
  r%   r   r  r  r   rN   r   ress       r0   	test_symmTestBLAS3Symm.test_symmU  s    $&&DFFdffBR@!#vv.$&&((dffArK!#vv.$&&DFFHH1r#!#vvxx0r2   c                     [         R                  " [        5         U" U R                  U R                  SSS9  SSS5        g! , (       d  f       g= f)zl`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-  r  N)r@   r   r  r|   r
  r   s      r0   test_symm_wrong_side"TestBLAS3Symm.test_symm_wrong_sidea  s2     ]]9%$&&2 &%%s   A
Ac           	      B   U" U R                   U R                  U R                  SSS9n[        R                  " X0R
                  5      (       d   eU" U R                   U R                  SU R                  SSS9n[        R                  " X0R
                  5      (       a   eg)zSYMM 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   r  rT   r  N)r|   r
  r%   r&   allcloser  r  s       r0   test_symm_wrong_uplo"TestBLAS3Symm.test_symm_wrong_uploj  sw     $&&DFFdffBR@{{3''''$&&DFF!tvvRbI;;sFF+++++r2   )r|   r
  r%   r  N)
r   r   r   r   r  rr   r  r  r  r   r   r2   r0   r  r  J  sX    * ff%	1 &	1 ff%3 &3 ff%, &,r2   r  c                   V    \ rS rSrS r\" SS5      S 5       r\" SS5      S 5       rSrg)	TestBLAS3Syrkiv  c                     [         R                  " SS/SS/SS//5      U l        [         R                  " / SQ/ SQ/ SQ/5      U l        [         R                  " S	S
/S
S//5      U l        g )Nr   r         r   r  )r   r  r   )r        @      )r   r        *@      @      @r  )r&   r  r|   r  ttr  s    r0   r  TestBLAS3Syrk.setup_methodw  sn    B898% & <()+ , ((RHI' (r2   syrkrv   c                    U" U R                   SS9n[        [        R                  " U5      [        R                  " U R                  5      5        U" U R                   SSS9n[        [        R
                  " U5      [        R
                  " U R                  5      5        [        R                  " U R                  R                  5      nU" U R                   SSUS9n[        [        R                  " U5      [        R                  " U R                  U-   5      5        U" U R                   SSS9n[        [        R                  " U5      [        R                  " U R                  5      5        g )Nr   r|   r-  rT   )r|   r-  r   )r|   r-  r.  r%   )r|   r-  r/  )	r|   r   r&   r	   r  r
   r   shaper  r   rN   r   r%   c0s        r0   	test_syrkTestBLAS3Syrk.test_syrk  s    b!!"''!*bggdffo>b*!"''!*bggdffo>WWTVV\\"brR0!"''!*bggdffRi.@Ab*!"''!*bggdgg.>?r2   c                     [         R                  " [        5         U" U R                  S[        R
                  " S5      S9  S S S 5        g ! , (       d  f       g = f)Nr   )rz   r   )r|   r-  r%   )r@   r   r  r|   r&   r   r   s      r0   test_syrk_wrong_cTestBLAS3Syrk.test_syrk_wrong_c  s4     ]]9%bBGGFO4 &%%s   'A
A)r|   r  r  N)	r   r   r   r   r  rr   r  r  r   r   r2   r0   r  r  v  s?    ( ff%@ &@  ff%5 &5r2   r  c                   V    \ rS rSrS r\" SS5      S 5       r\" SS5      S 5       rSrg)	TestBLAS3Syr2ki  c                    [         R                  " SS/SS/SS//5      U l        [         R                  " SS/SS/SS//5      U l        [         R                  " / SQ/ SQ/ S	Q/5      U l        [         R                  " SS/SS
//5      U l        g )Nr   r  r  r   r  r   )r  r  r  )r  r  r  )r  r  r  r   )r&   r  r|   r
  r  r  r  s    r0   r  TestBLAS3Syr2k.setup_method  s    B898% & B88r7$ % =(') * ((RHG% &r2   syr2krv   c                 6   U" U R                   U R                  SS9n[        [        R                  " U5      [        R                  " U R
                  5      5        U" U R                   U R                  SSS9n[        [        R                  " U5      [        R                  " U R
                  5      5        [        R                  " U R
                  R                  5      nU" U R                   U R                  SSUS9n[        [        R                  " U5      [        R                  " U R
                  U-   5      5        U" U R                   U R                  SSS9n[        [        R                  " U5      [        R                  " U R                  5      5        g )Nr   r|   r
  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  s        r0   
test_syr2kTestBLAS3Syr2k.test_syr2k  s    $&&+!"''!*bggdffo>$&&!4!"''!*bggdffo>WWTVV\\"$&&r:!"''!*bggdffRi.@A$&&!4!"''!*bggdgg.>?r2   c           	          [         R                  " [        5         U" U R                  U R                  S[
        R                  " S5      S9  S S S 5        g ! , (       d  f       g = f)Nr   )r  r   )r|   r
  r-  r%   )r@   r   r  r|   r
  r&   r   r   s      r0   test_syr2k_wrong_c!TestBLAS3Syr2k.test_syr2k_wrong_c  s9    ]]9%$&&bhhw.?@ &%%s   2A
A$)r|   r
  r  r  N)	r   r   r   r   r  rr   r  r  r   r   r2   r0   r  r    sA    & gv&@ '@ gv&A 'Ar2   r  c                       \ rS rSrSrS r\" SS5      S 5       r\" SS5      S 5       r\" S	S5      S
 5       r	\" SS5      S 5       r
\" SS5      S 5       r\" SS5      S 5       rSrg)TestSyHei  z2Quick and simple tests for (zc)-symm, syrk, syr2k.c                 F    [         R                  " SS/SS//5      U l        g )Nr  y             r   )r&   r  sigma_yr  s    r0   r  TestSyHe.setup_method  s$    xx"d"%r!, -r2   r  zcc                     U" U R                   U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rT   ry   r  r   r&   r	   r   r  s       r0   r  TestSyHe.test_symm  s9     $,,$,,b9!"''#,B0@Ar2   hemmc                     U" U R                   U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rT   r  r  s       r0   	test_hemmTestSyHe.test_hemm  s8     $,,$,,b9!"''#,A@r2   r  c                     U" U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  ry   r  r  s       r0   r  TestSyHe.test_syrk  s1    $,,b)!"''#,R0ABr2   herkc                     U" U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rT   r  r  s       r0   	test_herkTestSyHe.test_herk  s0    $,,b)!"''#,A@r2   r  c                     U" U R                   U R                   SS9n[        [        R                  " U5      S[        R                  " SS/5      -  5        g )Nr   r  r   ry   r  r  s       r0   test_syr2k_zrTestSyHe.test_syr2k_zr  s<    $,,$,,b9!"''#,277B83D0DEr2   her2kc                     U" U R                   U R                   SS9n[        [        R                  " U5      S[        R                  " SS/5      -  5        g )Nr   r  r   rT   r  r  s       r0   test_her2k_zrTestSyHe.test_her2k_zr  s;    $,,$,,b9!"''#,277Aq6?0BCr2   )r  N)r   r   r   r   __doc__r  rr   r  r  r  r  r  r  r   r   r2   r0   r  r    s    <- fd#B $B
 fd#A $A
 fd#C $C fd#A $A gt$F %F gt$D %Dr2   r  c                       \ rS rSrSrS r\" SS5      S 5       r\" SS5      S 5       r\" SS5      S	 5       r	\" SS5      S
 5       r
Srg)TestTRMMi  z!Quick and simple tests for *trmm.c                 &   [         R                  " SS/SS//5      U l        [         R                  " / SQ/ SQ/5      U l        [         R                  " / SQ/ SQ/ SQ/ S	Q/S
S9U l        [         R                  " SS/SS/SS/SS/SS//S
S9U l        g )Nr   r   r  r  r  r  r  r  r  )rT   rT   r   r4   )r   rT   r   rz   )r   r   rT   r   )r   r   r   rT   rN   )r   rT   r   r   rz   r4   r   r}   r   r~   r   )r&   r  r|   r
  a2b2r  s    r0   r  TestTRMM.setup_method  s    B:9& '=(* + ((L(((* 256 ((QFQFQFQFQGD!$&r2   trmmsdzcc           	         Un[        [        USU R                  U R                  5        U" SU R                  R	                  U5      U R                  R	                  U5      SS9nU R                  R
                  S   n[        X@R                  U R                  S U2S U24   -  SS[        R                  " U5      R                  -  S9  g )Nr   rT   )r  r  d   )r   atol)
r  r  r  r  r2  r  r   r&   r   r  )r   rN   r   r  r  r?  s         r0   	test_sideTestTRMM.test_side  s    isDGGTWW=3u-tww~~e/DGGMM!WWtwwrr2A2v6R %!4!44	6r2   rv   c                     U" SU R                   U R                  5      n[        R                  " / SQ/ SQ/5      n[	        X45        g )Nr   )r  g      0@g      r  r|   r
  r&   r  r   r   rN   r   resultexpecteds        r0   test_abTestTRMM.test_ab  s8    2tvvtvv&88_,. /!&3r2   c                     U" SU R                   U R                  SS9n[        R                  " / SQ/ SQ/5      n[	        X45        g )Nr   Tr   r  )r  r  r  r  r  s        r0   test_ab_lowerTestTRMM.test_ab_lower
  s:    2tvvtvvT288_,. /!&3r2   c                    U R                   R                  U5      nS Hj  nUR                  5       nU" SU R                  XTS9nUR                  R
                  (       a   e[        R                  " XV5      (       a   e[        XS5        Ml     [        R                  " UR                  5       5      nU" SU R                  USS9nUR                  R
                  (       d   e[        R                  " XV5      (       d   e[        XV5        g )N)TFr   )overwrite_bT)r
  r2  r   r|   flagsf_contiguousr&   may_share_memoryr   asfortranarrayr   )r   rN   r   r
  overwrbcopyr  s          r0   test_b_overwritesTestTRMM.test_b_overwrites  s     FFMM% #FFFHEr4665=F{{////**59999" $ !!!&&(+2tvvu$7{{''''""51111!%0r2   )r|   r  r
  r  N)r   r   r   r   r  r  rr   r  r  r  r  r   r   r2   r0   r  r    sv    +& ff%6 &6 ff%4 &4 ff%4 &4 ff%1 &1r2   r  trsmrv   c           	         [         R                  R                  S5      n[         R                  " U5      R                  S-  nU nUR                  S5      R                  U5      nUR                  S5      R                  U5      nU" S5      n[        [        XGXV5        [        [        XGUR                  U5        SnSn	U" S5      nU[        ;   a5  UR                  X45      UR                  X45      S	-  -   [        U	5      -   nOUR                  X45      [        U	5      -   nUR                  U5      n[        U5      n
[        U5      nUR                  X45      R                  U5      nUR                  X45      R                  U5      nU" XuUS
9n[        UR                  UR                  5        [        XU-  5      n[!        XUS9  U" XuUSS9n[        U
R                  X|-  5      n[!        XUS9  U" XuUSS9n[        U
R#                  5       R                  X|-  5      n[!        XUS9  U" XuUSS9nU" S5      U
[%        U	5      [%        U	5      4'   [        XU-  5      n[!        XUS9  U" XuUSSS9n[        U
R#                  5       R                  X}R#                  5       R                  -  5      n[!        XR#                  5       R                  US9  U" XuUSSSS9nU" S5      U[%        U	5      [%        U	5      4'   [        UR#                  5       R                  X}R#                  5       R                  -  5      n[!        XR#                  5       R                  US9  g )Nr)  i  )r   rz   r   rT   r   r}   g      r   )r-  r|   r
  )r  )r-  r|   r
  trans_ar   )r-  r|   r
  r   )r-  r|   r
  r   r  )r-  r|   r
  r   r  r   )r&   r0  r1  r   r  r2  r  r  r  r   r   r	   r
   r   r  r   r   r  r   )rN   r   r3  tolr6  r4  Br-  r   r*  AuAlB1B2r   x2s                   r0   	test_trsmr  %  s   
))


%C
((5/

d
"CD 	

6!!%(A

6!!%(A!HE)T!/)T!##q1	A	A$KEZZ#**aV"4R"773q6AJJvQ'	A	aB	aB	QF		"	"5	)B	QF		"	"5	)B	E"	%B288$	r8	BB%	E"a	0B	rttUX	BB%	E"a	0B	rwwy{{EH	%BB%	E"1	-B$QxBvay&)	r8	BB%	E"11	5B	rwwy{{E'')++-	.BB	#.	E"11A	>B$QxBvay&)	rwwy{{E'')++-	.BB	#.r2   zgh-16930)runrc   c                      [         R                  " SS5      n [        R                  R                  R                  U SSS5      n[        R                  " S5      n[        X5        g )Nr   r~   rz   r4   ry   i  )	r&   repeatscipylinalgblasdnrm2r   r   r   )r   actualr  s      r0   test_gh_169309r  [  sI     			"aA\\$$Q1b1Fyy~HF%r2   zdoes not fail with ILP64 MKLrb   c                      [         R                  " SS5      n Sn[        R                  R                  R                  SU 4SS9n[        [        5         U" U SSU5        S S S 5        g ! , (       d  f       g = f)	Nr   r~   ry   rJ   r5   r6   rz   r4   )r&   r  r  r  r  r   r  FBLAS_ERROR)r   r   r  s      r0   test_dnrm2_neg_incxr  d  s^    
 			"aADLL,,VaT,ME	{	#aAt 
$	#	#s   A((
A6)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,   r  r(   r)   r   r  r1   r>   rB   rH   rQ   r^   rr   rt   r   r  r  r  r  r  r  r  rg   xfailr  r  r   r2   r0   <module>r%     s  
   G G */ / /  8 8 ',%%KN
2++K
 zz2::&,,.	~	%!#H	D=>
+7\?. ?.HF	* F	*RO O), ),X 5  5H!A !AJ%D %DP;1 ;1| &&!2/ "2/j u$  &&&& 9%CD E]"  EN  Hs$   E !E0 
E-,E-0E<;E<