
    doiے                     t   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Jr   S SKJr  \R>                  \R@                  /r!\RD                  \RF                  /r$\!\$-   r%S r&S r'S	 r( " S
 S5      r) " S S5      r* " S S5      r+ " S S5      r, " S S5      r- " S S5      r. " S S5      r/ " S S5      r0 " S S5      r1\Rd                  Rg                  S\%5      S 5       r4\Rd                  Rk                  SSS 9S! 5       r6S" r7g! \ a    Sr Nf = 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)_fblasget_blas_funcstoeplitzsolve)_cblasc            
      r   [        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        [        b,  [        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cblasrotgdgemmr   cr   )r   npempty	complex64
complex128r   typecoder    module_nameclongdoublefloat64)f1f2f3s      X/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/linalg/tests/test_blas.pytest_get_blas_funcsr2      s=      	&C	8	&S	9	;
JBB c"c"R^^W-R^^W- 
	Bc" 
bll	3Bc"	c	*Bc" 
bnn	5Bc" 
&

;&=?
B c"    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%   )r6   dotcdotu)r   r&   r(   r*   r-   )fghs      r1   test_get_blas_funcs_aliasr<   C   s_    />DA::::4BJJGGA!6M66M6r3   c           	         U c  [         R                  R                  SS9$ / nU H  nSU;   a  [        R                  nOFSU;   a  [        R
                  nO/SU;   a  [        R                  nOSU;   d   e[        R                  n[        XU-   5      nUR                  [         R                  " XeXA-   S95        M     [         R                  R                  SU5      $ )	Nzcblas not available)reasonr   r%   r"   s)idzf,dtype)pytestmarkskipr&   r)   r(   r-   float32getattrr   paramparametrize)mod	func_nameprefixesparamsprefixr   r9   s          r1   parametrize_blasrM   N   s    
{{{'<==F&=MMEF]LLEF]JJE&= =JJEC)+,fll10BCD  ;;""9f55r3   c                   4    \ rS rSr\" \SS5      S 5       rSrg)TestCBLAS1Simplec   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   r      )r   rV      a)   	      )rU                  @rV   )r[   y            $@r]   r   COMPLEX_DTYPESselfr9   r   s      r1   	test_axpyTestCBLAS1Simple.test_axpyd   ;    !!IzQ"?",	.N"%a
J!&D&46 #r3    N)__name__
__module____qualname____firstlineno__rM   r    rc   __static_attributes__rf   r3   r1   rO   rO   c   s    eVV,6 -6r3   rO   c                   d   \ 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)TestFBLAS1Simplem   r   rQ   c                 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 rS   r_   ra   s      r1   rc   TestFBLAS1Simple.test_axpyo   re   r3   copyc                     [        U" / SQS/S-  5      / SQ5        U[        ;   a  [        U" / SQS/S-  5      / SQ5        g g )N)rV      rX      rV   )rV                 @y      @      @r_   ra   s      r1   	test_copyTestFBLAS1Simple.test_copyw   s=    !!Is1u"5yAN"%as1u&=}M #r3   asum)r?   r"   scdzc                 j    [        U" / SQ5      S5        U[        ;   a  [        U" / SQ5      S5        g g )NrV   rX                    @r}         @         )r   r`   ra   s      r1   	test_asumTestFBLAS1Simple.test_asum}   s,    AjM2.N". 126 #r3   r6   sdc                 2    [        U" / SQ/ SQ5      S5        g )Nr|   )r   rX   rU   ir   ra   s      r1   test_dotTestFBLAS1Simple.test_dot   s    Aj)4b9r3   r8   czc                 2    [        U" / SQ/ SQ5      S5        g )Nr   r   rV   rU   y      "       @r   ra   s      r1   	test_dotuTestFBLAS1Simple.test_dotu   s    Ani8%@r3   r7   c                 2    [        U" / SQ/ SQ5      S5        g )Nr   r   r   rU   y      @      ,r   ra   s      r1   	test_dotcTestFBLAS1Simple.test_dotc   s    Anj95Ar3   r5   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`   ra   s      r1   	test_nrm2TestFBLAS1Simple.test_nrm2   s<    AjM499R=9N". 1499R=A #r3   scal)r?   r"   cszdc                 v    [        U" S/ SQ5      / SQ5        U[        ;   a  [        U" S/ SQ5      / SQ5        g g )Nr   r|   )   i
   rV   r   )y              "@iy      "@      (r_   ra   s      r1   	test_scalTestFBLAS1Simple.test_scal   s2    !!Az"2K@N"%a>&:<LM #r3   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   )rV   r[   r   )r   rV   y      @      r_   )rb   r9   r   xyx1y1s          r1   	test_swapTestFBLAS1Simple.test_swap   sS    *11!"(!"(N"}qqWFB%b,%b,	 #r3   amax)isr@   icizc                 j    [        U" / SQ5      S5        U[        ;   a  [        U" / SQ5      S5        g g )N)r   rs   rV   rU   )y      @      @r   )r   r`   ra   s      r1   	test_amaxTestFBLAS1Simple.test_amax   s,    Qz]A&N"=)1- #r3   rf   N)rg   rh   ri   rj   rM   fblasrc   rv   r   r   r   r   r   r   r   r   rk   rf   r3   r1   rm   rm   m   s0   eVV,6 -6 eVV,N -N
 eV%;<7 =7
 eUD): *: eVT*A +A eVT*B +B eV%;<B =B
 eV%;<N =N
 eVV,
- -
- eV%=>. ?.r3   rm   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\R                  R!                  S\5      S 5       r\R                  R!                  S\5      S 5       r\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       r\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       r\R                  R!                  S\5      S 5       r\R                  R!                  S\5      S  5       r\R                  R!                  S\5      S! 5       r\R                  R!                  S\5      S" 5       r\R                  R!                  S\5      S# 5       r\R                  R!                  S\5      S$ 5       r\R                  R!                  S\5      S% 5       rS&rg's  snn f s  snn f s  snn f s  snn f )(TestFBLAS2Simple   gemvrQ   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 NrV   r}   irX   ir   r   y      H      By              @y      H      5r_   ra   s      r1   	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 #r3   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 )NrU   r   rV   rs   r   rt   rT   r~      r]      rY   r\                 ?r   ru   r   r^   r   r_   ra   s      r1   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 #r3   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 )NrU   r   r   rV   rs   r   ru   r   rt   r   r   r~   r   r]   r   r   ra   s      r1   	test_geruTestFBLAS2Simple.test_geru   s[    !!AAwA"7$&8aV"4	6!!Br2h"?$%q6B8b"X">	@r3   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 )NrU   r   r   rV   rs   r   ru   r   rt   r   r~   r   r]   r   r   ra   s      r1   	test_gercTestFBLAS2Simple.test_gerc   s[    !!AAwA"7$&8aV"4	6!!A|b"X">$%q6B8b"X">	@r3   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 ) NrU   rX   r"   r$   rW   r         !@   Fendpointr\   Drs         ?rtolTlowerr   incxoffxnr   rV   rs   rs   r   rZ   overwrite_a       @rY   r   r   r   r   )r&   r   r	   newaxislinspaceviewc_r   ravelfinfoepsr   Tr`   assert_raises	Exception)rb   r9   r   r   resxresx_reverser   r   reszresz_reversewr   rZ   bs                 r1   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Ir3   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 )NrU   rX   r"   r$   r\   r   rW   rs   r   r   Tr   rV   r   r   r   r   r   r   rY   r   r   r   r   r   r   r   )r&   r   r   r	   r   conjr   r   r   r   r   r   r   r   r   )rb   r9   r   r   r   rehzrehz_reverser   r   rZ   r   s              r1   test_herTestFBLAS2Simple.test_her	  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Ir3   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 )!NrU   rX   r"   r$   r\   rW   r   r   r   Fr   r   r   rV   r   Tr   r   r   r   r   incyoffyr   r   r   r  r   r   r   r   r   r   rY   r   r   r   r  r   )r&   r   r	   r   r   r   r   r   r   r   r   r   )rb   r9   r   r   r   resxyresxy_reverseqr   rZ   r   s              r1   	test_syr2TestFBLAS2Simple.test_syr2*  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Lr3   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 ) NrU   r\   r"   r$   r   r   rW   rs   r   r   rV   r   Tr   r   r  r   r   r   r   r   rY   r   r   rX   r   r   r  r  r   r   )r&   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   )rb   r9   r   r   r   r  r  uvr   rZ   r   s               r1   	test_her2TestFBLAS2Simple.test_her2T  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	4r3   r   c                 6   [         R                  R                  S5      nSnSnSnSn[        [	        UR                  US-   5      [        XE-
  S-
  5      5      [	        UR                  US-   5      [        X6-
  S-
  5      5      5      nUR                  U5      n[        XV-   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      p[        SUS9u  nU" XCXeXXUS9	nXR                  U	5      -  X-  -   n[        X5        U" XCXeXXUSS9
nXR                  R                  U
5      -  X-  -   n[        X5        g )N  r[   rX   rU   r   r$   )r   r   )r   rU   r   )r   r   r   )rU   r   rV   rs   r   )gbmv)	mr   kuklalpharZ   r   r   beta)
r  r   r  r  r  rZ   r   r   r  trans)r&   randomdefault_rngr   r   r   astyper   r6   r   r   )rb   r   rngr   r  r  r  AAbr   r   r  r  funcr   y2s                   r1   	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y6Ar'UU1X(!")ArQ0SSWWQZ$(*!")r3   c           	      >   [         R                  R                  S5      nSnSn[        X34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                  X7-
  5      nX[	        X7-
  5      [	        Xs5      4'   XSU-
  US 24'   M=     UR                  U5      nU[        ;   a)  XUR                  5       R                  -  n[        SUS9u  n	OXUR                  -  n[        SU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      pU	" XLXjXS9nXR                  U
5      -  X-  -   n[        X5        g )Nr  r   r   r$   rU   rW   )hbmv)sbmv      ?rV   )kr  rZ   r   r   r  )r&   r  r  r   r   ranger  r`   r   r   r   r   r6   r   )rb   r   r  r   r'  r  r  ind2tempr  r   r   r  r  r   r   s                   r1   test_sbmv_hbmvTestFBLAS2Simple.test_sbmv_hbmv  s|   ii##D)1&&AaC85) #&**Q-&)VAY
!QqSMD::af%D15fQVnfTo-.!%r$w~ " HHUON"OA"9E:EDHA"9E:EDG2q5	JJqM  'JJqM  'Dk58tAb>UU1X(!")r3   zfname,dtypespmvhpmvc                    [         R                  R                  S5      nSnUR                  XD45      R                  U5      nU[        ;   a  XSR                  XD45      S-  -  nXQS:X  a  UR
                  OUR                  5       R
                  -  n[        U5      u  pgXWU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      p[        U4US9u  nU" XMXXS9nXR                  U	5      -  X-  -   n[        UU5        U" US	-
  XXUSSXDS
9
nXS S2S S24   -  R                  USS S2   5      XSS S2   -  -   n[        USS S2   U5        [        US   US   5        g )Nr  rV   r   r-  r   r&  r$   )r   r  apr   r   r  rU   )
r   r  r  r   r   r0  r   r   r   r  rW   rs   )r&   r  r  r  r`   r   r   r   r   r   r   r6   r   r   )rb   fnamer   r  r   r  r%   rApr   r   xlongylongr  r  r  r   r   s                     r1   test_spmv_hpmvTestFBLAS2Simple.test_spmv_hpmv  s   
 ii##D)JJv%%e,N"QF#B&&A	VOQSS3A!tWJJqM  'JJqM  'qs""5)QqS	  'Dk58txu5Ar!?UU1X(!"b) AaCu5bqq2SbSk!&&uQTT{3d14a4[6HH!"QTT(B/BqE58,r3   sprhprc                 N   [         R                  R                  S5      nSnUR                  XD45      R                  U5      nU[        ;   a  XSR                  XD45      S-  -  nXQS:X  a  UR
                  OUR                  5       R
                  -  n[        U5      u  pgXWU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9u  nXS S 2S 4   R                  U	S S S 24   R                  5       5      -  U-   nO0[        S	US9u  nXS S 2S 4   R                  U	S S S 24   5      -  U-   nU" XJXS
9n[        SUS9nXXv4'   US:X  a  UR                  5       OUXU4'   [        X5        g )Nr  rV   r   r8  g      @r9  )r9  r$   )r8  )r   r  r0  r   rV   rV   )r&   r  r  r  r`   r   r   r   r   r   typer   r6   r   r   )rb   r1  r   r  r   r  r%   r2  r3  r   r  r  r   r   y1fs                  r1   test_spr_hprTestFBLAS2Simple.test_spr_hpr  sz   
 ii##D)JJv%%e,N"QF#B&&A	UNQSS

2A!tWJJqM  '%%**3/E>"859ED1d7$'
(9::Q>B"859ED1d7$'
33a7BAr/F%(AD	!&%BGGIRqD	!#*r3   c                 @   [         R                  R                  S5      nSnUR                  X345      R                  U5      nU[        ;   a@  XBR                  X345      S-  -  nXDR                  5       R                  -  n[        SUS9u  nOXDR                  -  n[        SUS9u  n[        U5      u  pgXGU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XL-   UR                  5       R                  -   nU" X;XUS9n[        S	US9nXXv4'   U/ S
Q   R                  5       U/ SQ/ SQ4'   [        X5        g )Nr  rV   r   )hpr2r$   )spr2r   )r   r  r   r   r0  r;  )rU   rV   rs   )rU   r   r   )r   r   rU   )r&   r  r  r  r`   r   r   r   r   r6   r   r   )rb   r   r  r   r  r  r%   r2  r3  r   r   r  r  r   r   r=  s                   r1   test_spr2_hpr2TestFBLAS2Simple.test_spr2_hpr2  sj   ii##D)JJv%%e,N"QF#B&&AOA"9E:EDHA"9E:EDA!tWJJqM  'JJqM  'aJJL1QW:>>!D!G*//*;<<UQVVXZZAa4F%(AD	$&yM$6$6$8Iy !!#*r3   c           
         [         R                  R                  S5      nSnSnUR                  U5      R                  U5      n[	        X34US9n[        US-   5       H/  nUR                  X7-
  5      U[        X7-
  5      [        Xs5      4'   M1     U[        ;   aH  U[        U5      ==   SUR                  US-   U-  XDS-   -  S-  -
  5      R                  U5      -  -  ss'   [	        US-   U4US9n[        US-   5       H  n	[        XiS9X* S-
  U	S 24'   M     [        S	US9u  n
U
" XHUS
9nUR                  U5      n[        X5        U
" XHUSS9nU" S5      U[        U5      [        U5      4'   UR                  U5      n[        X5        U
" XHUSSS9nUR                  R                  U5      n[        X5        U
" XHUSSS9nUR                  5       R                  R                  U5      n[        X5        g )Nr  r   rV   r$   rU   r   r   r'  )tbmvr'  rZ   r   r'  rZ   r   r   r'  rZ   r   r   r  )r&   r  r  r  r   r(  r   r`   r   r   r   r6   r   r   r   rb   r   r  r   r'  r   r  supr  rowr  r   r   s                r1   	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| y6Aq!UU1X!")Aqq)"'(&)VAY
UU1X!")Aqq2SSWWQZ!")Aqq2VVXZZ^^A!")r3   c           
         [         R                  R                  S5      nSnSnUR                  U5      R                  U5      n[	        X34US9n[        US-   5       H/  nUR                  X7-
  5      U[        X7-
  5      [        Xs5      4'   M1     U[        ;   aH  U[        U5      ==   SUR                  US-   U-  XDS-   -  S-  -
  5      R                  U5      -  -  ss'   [	        US-   U4US9n[        US-   5       H  n	[        XiS9X* S-
  U	S 24'   M     [        S	US9u  n
U
" XHUS
9n[        Xe5      n[        X5        U
" XHUSS9nU" S5      U[        U5      [        U5      4'   [        Xe5      n[        X5        U
" XHUSSS9n[        UR                  U5      n[        X5        U
" XHUSSS9n[        UR                  5       R                  U5      n[        X5        g )Ni90  r   rV   r$   rU   r   r   rF  )tbsvrH  rI  rJ  )r&   r  r  r  r   r(  r   r`   r   r   r   r   r   r   r   rK  s                r1   	test_tbsvTestFBLAS2Simple.test_tbsvC  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| y6Aq!1[!")Aqq)"'(&)VAY
1[!")Aqq2133]!")Aqq21668::q!!")r3   c                    [         R                  R                  S5      nSnUR                  U5      R                  U5      nU[        ;   a2  [        UR                  X345      UR                  X345      S-  -   5      nO[        UR                  X345      5      n[        U5      u  pgXWU4   n[        SUS9u  n	U	" X8US9n
UR                  U5      n[        X5        U	" X8USS9n
U" S5      U[        U5      [        U5      4'   UR                  U5      n[        X5        U	" X8USSS	9n
UR                  R                  U5      n[        X5        U	" X8USS
S	9n
UR                  5       R                  R                  U5      n[        X5        g )Nr  r   r   )tpmvr$   r   r0  r   rU   r   r0  r   r   r   r0  r   r   r  r   )r&   r  r  r  r`   r	   r   r   r6   r   r   r   r   rb   r   r  r   r   r  r%   r2  r3  r  r   r   s               r1   	test_tpmvTestFBLAS2Simple.test_tpmvi  sX   ii##D)JJqM  'N"SZZ'#**aV*<R*??@ASZZ'(A A!tWy6A"UU1X!")A*"'(&)VAY
UU1X!")A3SSWWQZ!")A3VVXZZ^^A!")r3   c                    [         R                  R                  S5      nSnUR                  U5      R                  U5      nU[        ;   a2  [        UR                  X345      UR                  X345      S-  -   5      nO[        UR                  X345      5      nU[        U5      -  n[        U5      u  pgXWU4   n[        SUS9u  n	U	" X8US9n
[        XT5      n[        X5        U	" X8USS9n
U" S5      U[        U5      [        U5      4'   [        XT5      n[        X5        U	" X8USSS	9n
[        UR                  U5      n[        X5        U	" X8USS
S	9n
[        UR                  5       R                  U5      n[        X5        g )Nr  r   r   )tpsvr$   rV  rU   rW  rX  r   )r&   r  r  r  r`   r	   r   r   r   r   r   r   r   r   rY  s               r1   	test_tpsvTestFBLAS2Simple.test_tpsv  sW   ii##D)JJqM  'N"SZZ'#**aV*<R*??@ASZZ'(A	SVA!tWy6A"1[!")A*"'(&)VAY
1[!")A3133]!")A31668::q!!")r3   c                    [         R                  R                  S5      nSnUR                  X345      [        U5      -   R	                  U5      nUR                  S5      R	                  U5      n[        SUS9u  nU" XES9n[        U5      R                  U5      n[        Xx5        U" XESS9nU" S5      U[        U5      [        U5      4'   [        U5      R                  U5      n[        Xx5        U" XESSS9n[        U5      R                  R                  U5      n[        Xx5        U" XESS	S9n[        U5      R                  5       R                  R                  U5      n[        Xx5        g )
Nr  rV   )trmvr$   rZ   r   rU   rZ   r   r   rZ   r   r   r  r   )r&   r  r  r   r  r   r	   r6   r   r   r   r   	rb   r   r  r   r  r   r  r   r   s	            r1   	test_trmvTestFBLAS2Simple.test_trmv  s)   ii##D)ZZA&..u5JJqM  'y6A^!W[[^!")A#"'(&)VAY
!W[[^!")A!,!WYY]]1!")A!,!W\\^!!!$!")r3   c                    [         R                  R                  S5      nSnUR                  X345      [        U5      -   R	                  U5      nUR                  U5      R	                  U5      n[        SUS9u  nU" XES9n[        [        U5      U5      n[        Xx5        U" XESS9n[        [        U5      U5      n[        Xx5        U" XESS9nU" S5      U[        U5      [        U5      4'   [        [        U5      U5      n[        Xx5        U" XESSS	9n[        [        U5      R                  U5      n[        Xx5        U" XESS
S	9n[        [        U5      R                  5       R                  U5      n[        Xx5        g )Nr     )trsvr$   rb  rU   )rZ   r   r   rc  rd  r   )r&   r  r  r   r  r   r   r	   r   r
   r   r   r   re  s	            r1   	test_trsvTestFBLAS2Simple.test_trsv  sE   ii##D)ZZA&..u5JJqM  'y6A^47A!")A!$47A!")A#"'(&)VAY
47A!")A!,4799a !")A!,47<<>##Q'!")r3   rf   N) rg   rh   ri   rj   rM   r   r   r   r   r   r   r   r  r  rA   rB   rG   DTYPESr!  r+  REAL_DTYPESr`   r6  r>  rC  rN  rR  rZ  r^  rf  rk  rk   ).0r   s   00r1   r   r      s+   eVV,1 -1 eUD)
D *
D eVT*@ +@ eVT*@ +@ eUF+0J ,0Jd eUD)J *J@ eVT*'M +'MR eVT*.4 +.4` [[Wf-* .*B [[Wf-* .*< [[] -'2^'C	D'Ce65/'C	D-'5	6~e65/~	6- -	-6 [[] -&1N&B	C&BU5%.&B	C-&4	5nU5%.n	5- +	+2 [[Wf-+ .+4 [[Wf-#* .#*J [[Wf-#* .#*J [[Wf-* .*@ [[Wf-* .*@ [[Wf-* .*0 [[Wf-* .*} 
E	6< 
D	5s   *I"I(=I.I4r   c                   4    \ rS rSr\" \SS5      S 5       rSrg)TestFBLAS3Simplei  r#   rQ   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_   ra   s      r1   	test_gemmTestFBLAS3Simple.test_gemm  s    !!AsRD/SE7;!!AsRD!aS"9C5AN"%aTFRD&9WI;G%aTFRD!bT&BWIN #r3   rf   N)rg   rh   ri   rj   rM   r   rs  rk   rf   r3   r1   rq  rq    s    eVV,O -Or3   rq  c                   z    \ 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	)
TestBLAS3Symmi  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   rx        @)rx        r   )r   rV   )r   rz  g       @)ry  rx  g      "@)r&   arrayrZ   r   r   r%   trb   s    r1   setup_methodTestBLAS3Symm.setup_method  sg    B88% &<(* +=') *r3   symmrQ   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   rZ   r   r%   r  r  rU   rZ   r   r   r%   r  r  )rZ   r   sider%   r  r  )rZ   r   r%   r   r|  r   rb   r9   r   ress       r1   	test_symmTestBLAS3Symm.test_symm  s    $&&DFFdffBR@!#vv.$&&((dffArK!#vv.$&&DFFHH1r#!#vvxx0r3   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.
rU   )rZ   r   r  r  N)rA   r   r   rZ   r   ra   s      r1   test_symm_wrong_side"TestBLAS3Symm.test_symm_wrong_side  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  rU   r  N)rZ   r   r%   r&   allcloser|  r  s       r1   test_symm_wrong_uplo"TestBLAS3Symm.test_symm_wrong_uplo  sw     $&&DFFdffBR@{{3''''$&&DFF!tvvRbI;;sFF+++++r3   )rZ   r   r%   r|  N)rg   rh   ri   rj   r~  rM   r   r  r  r  rk   rf   r3   r1   rv  rv    s^    * eVV,	1 -	1 eVV,3 -3 eVV,, -,r3   rv  c                   Z    \ rS rSrS r\" \SS5      S 5       r\" \SS5      S 5       rSr	g)	TestBLAS3Syrki  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   rx         r   ry  )r   rx  r   )rx        @      )r   r        *@      @      @r  )r&   r{  rZ   r|  ttr}  s    r1   r~  TestBLAS3Syrk.setup_method  sn    B898% & <()+ , ((RHI' (r3   syrkrQ   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   rZ   r  rU   )rZ   r  r   )rZ   r  r  r%   )rZ   r  r  )	rZ   r   r&   r	   r|  r
   r   shaper  rb   r9   r   r%   c0s        r1   	test_syrkTestBLAS3Syrk.test_syrk#  s    b!!"''!*bggdffo>b*!"''!*bggdffo>WWTVV\\"brR0!"''!*bggdffRi.@Ab*!"''!*bggdgg.>?r3   c                     [         R                  " [        5         U" U R                  S[        R
                  " S5      S9  S S S 5        g ! , (       d  f       g = f)Nr   )rX   rt   )rZ   r  r%   )rA   r   r   rZ   r&   r   ra   s      r1   test_syrk_wrong_cTestBLAS3Syrk.test_syrk_wrong_c4  s4     ]]9%bBGGFO4 &%%s   'A
A)rZ   r|  r  N)
rg   rh   ri   rj   r~  rM   r   r  r  rk   rf   r3   r1   r  r    sC    ( eVV,@ -@  eVV,5 -5r3   r  c                   Z    \ 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   rx  r  r   ry  r   )rx  rz  ry  )rz  rx  rx  )ry  rx  r  r   )r&   r{  rZ   r   r|  r  r}  s    r1   r~  TestBLAS3Syr2k.setup_method=  s    B898% & B88r7$ % =(') * ((RHG% &r3   syr2krQ   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   rZ   r   r  rU   )rZ   r   r  r   )rZ   r   r  r  r%   )rZ   r   r  r  )
rZ   r   r   r&   r	   r|  r
   r   r  r  r  s        r1   
test_syr2kTestBLAS3Syr2k.test_syr2kJ  s    $&&+!"''!*bggdffo>$&&!4!"''!*bggdffo>WWTVV\\"$&&r:!"''!*bggdffRi.@A$&&!4!"''!*bggdgg.>?r3   c           	          [         R                  " [        5         U" U R                  U R                  S[
        R                  " S5      S9  S S S 5        g ! , (       d  f       g = f)Nr   )ri  rt   )rZ   r   r  r%   )rA   r   r   rZ   r   r&   r   ra   s      r1   test_syr2k_wrong_c!TestBLAS3Syr2k.test_syr2k_wrong_cZ  s9    ]]9%$&&bhhw.?@ &%%s   2A
A$)rZ   r   r|  r  N)
rg   rh   ri   rj   r~  rM   r   r  r  rk   rf   r3   r1   r  r  <  sE    & eWf-@ .@ eWf-A .Ar3   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)TestSyHeia  z2Quick and simple tests for (zc)-symm, syrk, syr2k.c                 F    [         R                  " SS/SS//5      U l        g )Nrx  y             r   )r&   r{  sigma_yr}  s    r1   r~  TestSyHe.setup_methodd  s$    xx"d"%r!, -r3   r  zcc                     U" U R                   U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rU   rW   r  r   r&   r	   r   r  s       r1   r  TestSyHe.test_symmh  s9     $,,$,,b9!"''#,B0@Ar3   hemmc                     U" U R                   U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rU   r  r  s       r1   	test_hemmTestSyHe.test_hemmn  s8     $,,$,,b9!"''#,A@r3   r  c                     U" U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rW   r  r  s       r1   r  TestSyHe.test_syrkt  s1    $,,b)!"''#,R0ABr3   herkc                     U" U R                   SS9n[        [        R                  " U5      [        R                  " SS/5      5        g )Nr   r  rU   r  r  s       r1   	test_herkTestSyHe.test_herky  s0    $,,b)!"''#,A@r3   r  c                     U" U R                   U R                   SS9n[        [        R                  " U5      S[        R                  " SS/5      -  5        g )Nr   r  r   rW   r  r  s       r1   test_syr2k_zrTestSyHe.test_syr2k_zr~  s<    $,,$,,b9!"''#,277B83D0DEr3   her2kc                     U" U R                   U R                   SS9n[        [        R                  " U5      S[        R                  " SS/5      -  5        g )Nr   r  r   rU   r  r  s       r1   test_her2k_zrTestSyHe.test_her2k_zr  s;    $,,$,,b9!"''#,277Aq6?0BCr3   )r  N)rg   rh   ri   rj   __doc__r~  rM   r   r  r  r  r  r  r  rk   rf   r3   r1   r  r  a  s    <- eVT*B +B
 eVT*A +A
 eVT*C +C eVT*A +A eWd+F ,F eWd+D ,Dr3   r  c                       \ rS rSrSrS r\R                  R                  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  ry  r  rz  r  r  r  )rU   rU   r   rV   )r   rU   rs   rX   )r   r   rU   r   )r   r   r   rU   r9   )r   rU   rs   r   rX   rV   r   r[   rt   r\   r   )r&   r{  rZ   r   a2b2r}  s    r1   r~  TestTRMM.setup_method  s    B:9& '=(* + ((L(((* 256 ((QFQFQFQFQGD!$&r3   r   c           	         [        SUS9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[        X0R                  U R                  S U2S U24   -  SS[        R                  " U5      R                  -  S9  g )	Ntrmmr$   r   rU   )r  rx  d   )r   atol)r   r   r   r  r  r  r  r   r&   r   r   )rb   r   r  r  r'  s        r1   	test_sideTestTRMM.test_side  s    fE2isDGGTWW=3u-tww~~e/DGGMM!WWtwwrr2A2v6R %!4!44	6r3   r  rQ   c                     U" SU R                   U R                  5      n[        R                  " / SQ/ SQ/5      n[	        X45        g )Nr   )r  g      0@g      r  rZ   r   r&   r{  r   rb   r9   r   resultexpecteds        r1   test_abTestTRMM.test_ab  s8    2tvvtvv&88_,. /!&3r3   c                     U" SU R                   U R                  SS9n[        R                  " / SQ/ SQ/5      n[	        X45        g )Nr   Tr   r  )rz  r  rx  r  r  s        r1   test_ab_lowerTestTRMM.test_ab_lower  s:    2tvvtvvT288_,. /!&3r3   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   r  rq   rZ   flagsf_contiguousr&   may_share_memoryr   asfortranarrayr   )rb   r9   r   r   overwrbcopyr  s          r1   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!%0r3   )rZ   r  r   r  N)rg   rh   ri   rj   r  r~  rA   rB   rG   rm  r  rM   r   r  r  r  rk   rf   r3   r1   r  r    s    +& [[Wf-6 .6 eVV,4 -4 eVV,4 -4 eVV,1 -1r3   r  r   c           	         [         R                  R                  S5      n[         R                  " U 5      R                  S-  n[        SU S9u  nUR                  S5      R                  U 5      nUR                  S5      R                  U 5      nU " S5      n[        [        X6XE5        [        [        X6U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                  Xx45      R                  U 5      nU" XdUS9n[        UR                  UR                  5        [!        XU-  5      n[#        XUS9  U" XdUSS9n[!        U	R                  Xk-  5      n[#        XUS9  U" XdUSS9n[!        U	R%                  5       R                  Xk-  5      n[#        XUS9  U" XdUSS9nU " S5      U	['        U5      ['        U5      4'   [!        XU-  5      n[#        XUS9  U" XdUSSS9n[!        U	R%                  5       R                  XlR%                  5       R                  -  5      n[#        XR%                  5       R                  US9  U" XdUSSSS9nU " S5      U
['        U5      ['        U5      4'   [!        U
R%                  5       R                  XlR%                  5       R                  -  5      n[#        XR%                  5       R                  US9  g )Nr  i  )trsmr$   )rs   rX   r   rU   rt   r[   g      r   )r  rZ   r   )r  )r  rZ   r   trans_ar   )r  rZ   r   r   )r  rZ   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   r   r   )r   r  tolr  r  Br  r   r  AuAlB1B2r   x2s                  r1   	test_trsmr    s   
))


%C
((5/

d
"C9E2ED 	

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	#.r3   Fzgh-16930)runr>   c                      [         R                  " SS5      n [        R                  R                  R                  U SSS5      n[        R                  " S5      n[        X5        g )Nr   r\   rX   rV   rW   i  )	r&   repeatscipylinalgblasdnrm2r   r   r   )r   actualr  s      r1   test_gh_169309r    sI     			"aA\\$$Q1b1Fyy~HF%r3   c                      [         R                  " SS5      n Sn[        [        R                  5         [
        R                  R                  R                  U SSU5        S S S 5        g ! , (       d  f       g = f)Nr   r\   rW   rX   rV   )	r&   r  r   r   __fblas_errorr  r  r  r   )r   r   s     r1   test_dnrm2_neg_incxr    sQ     			"aAD	u**	+1a. 
,	+	+s   -A))
A7)8r   rA   numpyr&   numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r  scipy.linalgr   r   r   r   r   r   r    ImportErrorrD   r-   rn  r(   r)   r`   rm  r2   r<   rM   rO   rm   r   rq  rv  r  r  r  r  rB   rG   r  xfailr  r  rf   r3   r1   <module>r     sY  
   G G */ / /  I I, zz2::&,,.	~	%$#N6*6 6?. ?.Hn* n*bO O), ),X 5  5H!A !AJ%D %DP;1 ;1| &)2/ *2/j u$  &&&&/e  Es   D, ,D76D7