
    ^Mh                     J   d dl Z d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZm Z m!Z!m"Z" 	 d dlm#Z$ n# e%$ r dZ$Y nw xY weegZ&eegZ'e&e'z   Z(d Z)d Z* G d	 d
          Z+ G d d          Z, G d d          Z- G d d          Z.d#dZ/ G d d          Z0 G d d          Z1 G d d          Z2 G d d          Z3 G d d          Z4d Z5ej6        7                    dd           d!             Z8d" Z9dS )$    N)assert_equalassert_almost_equalassert_assert_array_almost_equalassert_allclose)raises)float32float64	complex64
complex128arangetriutrilzerostril_indicesonesmoddiagappendeyenonzero)_fblasget_blas_funcstoeplitzsolve)_cblasc            	      ~   t          dt          j        dt          j        d          t          j        dt          j        d          f          \  } }}t          | j        d           t          |j        d           t          *t          | j        d           t          |j        d           t          d          } t          | j        d	           t          d
t          j                  } t          | j        d           t          d
d          } t          | j        d           t          d
t          j	                  } t          | j        d           t          dt          j        dt          j
                  t          j        dt          j                  f          } t          | j        d           d S )N)axpyr   r      r    F)dtypeorderCzcblasrotgdgemmr"   cr   )r   npemptyr   r   r   typecoder&   module_nameclongdoubler
   )f1f2f3s      \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/linalg/tests/test_blas.pytest_get_blas_funcsr5      s      	&C	8	8	8	&S	9	9	9	;
 
JBB c"""c"""R^W---R^W--- 
		Bc""" 
bl	3	3	3Bc"""	c	*	*	*Bc""" 
bn	5	5	5Bc""" 
&
;;;&===?
 
B c"""""    c                      t          dt          j                  \  } }| j        dk    sJ |j        dk    sJ t          dt          j                  \  } }}| |u sJ | |u sJ d S )N)nrm2dotr*   r+   )r9   dotcdotu)r   r,   r   r.   r
   )fghs      r4   test_get_blas_funcs_aliasr?   E   sy    />>>DAq::4BJGGGGAq!6666666666r6   c                       e Zd Zd ZdS )TestCBLAS1Simplec                    dD ]@}t          t          |dz   d           }|t           |g dg dd          g d           AdD ]@}t          t          |dz   d           }|t           |g d	g dd          g d
           Ad S Nsdr      r       )r    rG      a)   	      cz)rF                  @rG   )rL   y            $@rN   )getattrr&   r   selfpr<   s      r4   	test_axpyzTestCBLAS1Simple.test_axpyR        	2 	2Aqx..Ay%aa			:::&C&C&C&0jj2 2 2 2 	6 	6Aqx..Ay%aa


JJJ!&D&D&D&4nn6 6 6 6		6 	6r6   N)__name__
__module____qualname__rU    r6   r4   rA   rA   P   s#        6 6 6 6 6r6   rA   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestFBLAS1Simplec                    dD ]@}t          t          |dz   d           }|t           |g dg dd          g d           AdD ]@}t          t          |dz   d           }|t           |g d	g dd          g d
           Ad S rC   rQ   fblasr   rR   s      r4   rU   zTestFBLAS1Simple.test_axpyc   rV   r6   c                    dD ]@}t          t          |dz   d           }|t           |g ddgdz            g d           AdD ]@}t          t          |dz   d           }|t           |g ddgdz            g d           Ad S )NrD   copy)rG      rI      rG   rO   )rG                 @y      @      @r^   rR   s      r4   	test_copyzTestFBLAS1Simple.test_copyq   s     	F 	FAqx..Ay%aa			A3q5&9&9999EEEE 	N 	NAqx..Ay%aas1u&=&=}}}MMMM		N 	Nr6   c                     dD ]9}t          t          |dz   d           }|t           |g d          d           :dD ]9}t          t          |dz   d           }|t           |g d          d           :d S )NrD   asumrG   rI      )scdz              @ri         @         rQ   r_   r   rR   s      r4   	test_asumzTestFBLAS1Simple.test_asum}   s     	3 	3Aqx..Ay***r2222 	7 	7Aqx..Ay... 1 126666		7 	7r6   c                     dD ]<}t          t          |dz   d           }|t           |g dg d          d           =d S )NrD   r9   rh   )r    rI   rF   rq   rR   s      r4   test_dotzTestFBLAS1Simple.test_dot   s_     	> 	>Aqw--Ay***iii 8 8"====		> 	>r6   c                     dD ]<}t          t          |dz   d           }|t           |g dg d          d           =d S )NrO   r;   rm   r    rG   rF   y      "       @rq   rR   s      r4   test_complex_dotuz"TestFBLAS1Simple.test_complex_dotu   sc     	E 	EAqx..Ay...))) < <eDDDD		E 	Er6   c                     dD ]<}t          t          |dz   d           }|t           |g dg d          d           =d S )NrO   r:   rm   r    rn   rF   y      @      ,rq   rR   s      r4   test_complex_dotcz"TestFBLAS1Simple.test_complex_dotc   sc     	F 	FAqx..Ay...*** = =uEEEE		F 	Fr6   c                 >   dD ]K}t          t          |dz   d           }|t           |g d          t          j        d                     LdD ]K}t          t          |dz   d           }|t           |g d          t          j        d                     Ld S )NrD   r8   rh   2   )r+   r%   rk   rl   rm   )rQ   r_   r   mathsqrtrR   s      r4   	test_nrm2zTestFBLAS1Simple.test_nrm2   s     	> 	>Aqx..Ay***ty}}====' 	B 	BAqx..Ay... 1 149R==AAAA		B 	Br6   c                    dD ]<}t          t          |dz   d           }|t           |dg d          g d           =dD ]<}t          t          |dz   d           }|t           |dg d          g d	           =d
D ]<}t          t          |dz   d           }|t           |dg d          g d           =d S )NrD   scalr    rh   )   i
   rO   rn   rm   )rt   y             (y      (@      "@)cszdrG   )y              "@iy      "@      (r^   rR   s      r4   	test_scalzTestFBLAS1Simple.test_scal   s    	E 	EAqx..Ay%aa:::&6&6DDDD 	P 	PAqx..Ay%aaNNN&;&;=N=N=NOOOO 	N 	NAqx..Ay%aa>>>&:&:<L<L<LMMMM		N 	Nr6   c                 f   dD ]U}t          t          |dz   d           }|g dg d}} |||          \  }}t          ||           t          ||           VdD ]U}t          t          |dz   d           }|g dg d}} |||          \  }}t          ||           t          ||           Vd S )NrD   swaprw   )rG   rL   rO   rz   )r   rG   y      @      r^   )rS   rT   r<   xyx1y1s          r4   	test_swapzTestFBLAS1Simple.test_swap   s     	- 	-Aqx..Ay99jjjqAQq!WWFB%b!,,,%b!,,,, 	- 	-Aqx..Ay::}}}qAQq!WWFB%b!,,,%b!,,,,	- 	-r6   c                     dD ]8}t          t          d|z   dz             }t           |g d          d           9dD ]8}t          t          d|z   dz             }t           |g d          d           9d S )NrD   iamax)r   rb   rG   rF   rO   )y      @      @r   )rQ   r_   r   rR   s      r4   	test_amaxzTestFBLAS1Simple.test_amax   s     	+ 	+As1uV|,,A:::**** 	. 	.As1uV|,,A===))1----	. 	.r6   N)rW   rX   rY   rU   re   rr   ru   rx   r{   r   r   r   r   rZ   r6   r4   r\   r\   a   s        6 6 6
N 
N 
N
7 
7 
7> > >E E EF F F
B 
B 
BN N N"- - -$. . . . .r6   r\   c                       e Zd Zd Zej        j        d             Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestFBLAS2Simplec           
         dD ]_}t          t          |dz   d           }|t           |ddggdg          dg           t           |ddggdgddg          dg           `dD ]_}t          t          |dz   d           }|t           |d	d
ggdg          dg           t           |d	d
ggdgddg          dg           `d S )NrD   gemvrG   ri   rI   rO   rn   ro         H      B              @      H      5r^   rR   s      r4   	test_gemvzTestFBLAS2Simple.test_gemv   s    	H 	HAqx..Ay%aaQC52$&7&7#???%aaQC52$A3&?&?#GGGG 	1 	1Aqx..Ay%aadVHrd&;&;gYGGG%aadVHrdAt&D&D'.i1 1 1 1	1 	1r6   c                    dD ]}t          t          |dz   d           }|t           |dddgddg          ddgddgg           t           |dg d	ddg          ddgd
dgddgg           t           |dddgddgddgddgg          ddgdd
gg           dD ]k}t          t          |dz   d           }|t           |dddgddg          ddgddgg           t           |dg dddg          ddgd
dgddgg           ldD ]p}dD ]k}t          t          ||z   d           }|t           |dddgddg          ddgddgg           t           |dg dddg          ddgd
dgddgg           lqd S )NrD   gerrF   r    rG   rb   r   rc   rE   rj      rN      rJ   rM   rO   geru              ?rn   rd   r   )r   rP   rn   )r   gercr^   )rS   rT   r<   names       r4   test_gerzTestFBLAS2Simple.test_ger   s     		P 		PAqw--Ay%aaAq6Aq6&:&:aVaV<LMMM%aa999q!f&=&=()1vBx"b&BD D D &aaAq6Aq6,-q6Aq6*:'< '< '<?@!fq"g=NP P P P  	D 	DAqx..Ay%aaB7QF&;&;(*Bx!Q&8: : :%aaLLL2r(&C&C()1vBx"b&BD D D D  	H 	HA' H HE1T64009)!!AAwA*?*?,.8aV*<> > >)!!A|||b"X*F*F,-q6B8b"X*FH H H HH	H 	Hr6   c                 |   t          j        ddd          }t          j        |d d t           j        f         |z            }t          j        |d d dt           j        f         |d d d         z            }t          j        dddd	
          }t          j        ddd                              d          }t          j        |d d t           j        f         |z            }t          j        |d d dt           j        f         |d d d         z            }t          j        |d d t           j        f         |                                z            }t          j        |d d dt           j        f         |d d d                                         z            }	t           j        t          j        d          |t          j        d          f         	                                }
t          dddg          D ]\  }}t          t          |dz   d           }|"t           |d|          ||           t           |d|d          |j        |           t           |d|ddd          ||           t           |d|ddd          ||           t          j        d|dk    rdndd          } |d||d          }t          |||            |d||          }t          ||u           t          |d |z  |           t!          t"          |d|d!           t!          t"          |d|d"           t!          t"          |d|d"           t!          t"          |d|d#           t!          t"          |d|d#           t!          t"          |d|d           t!          t"          |d|t          j        d$dd                     t          d%ddg          D ]\  }}t          t          |dz   d           }|"t           |d|          ||           t           |d|d          |j        |           t           |d|
d dd          ||           t           |d|
d&dd          ||           t          j        d|d'k    rdndd          } |d||d          }t          |||            |d||          }t          ||u           t          |d |z  |           t!          t"          |d|d!           t!          t"          |d|d"           t!          t"          |d|d"           t!          t"          |d|d#           t!          t"          |d|d#           t!          t"          |d|d           t!          t"          |d|t          j        d$dd                     t          d%ddg          D ]\  }}t          t          |d(z   d           }|"t           |d|          ||           t           |d|d          |j                                        |           t           |d|
d dd          ||           t           |d|
d&dd          |	|           t          j        d|d'k    rdndd          } |d||d          }t          |||            |d||          }t          ||u           t          |d |z  |           t!          t"          |d|d!           t!          t"          |d|d"           t!          t"          |d|d"           t!          t"          |d|d#           t!          t"          |d|d#           t!          t"          |d|d           t!          t"          |d|t          j        d$dd                     d S ))NrF   rI   r(   r*   rH   r         !@   FendpointrM   Drb   rD   Hz>+=syr      ?rtolTlowerr    )incxoffxnr   rb   rb   sr<   r!   rK   overwrite_a       @rJ   rG   r   r   r   r   rO   r+   her)r,   r   r   newaxislinspaceviewconjc_r   ravelziprQ   r_   r   Tr   assert_raises	Exception)rS   r   resxresx_reverser   r%   reszresz_reverserehzrehz_reversewrT   r   r<   rK   bs                   r4   test_syr_herzTestFBLAS2Simple.test_syr_her  s0   Ia#&&&wqBJ'!+,,wq2rz!12QtttW<==K3U333Ia#&&&++C00wqBJ'!+,,wq2rz!12QtttW<==wqBJ'!&&((233wq2rz!12QtttW\\^^CDDE"(1++q"(1++-.44664$// 	N 	NGAtqw--AyAAc1IIt$7777AAc1D11146EEEEAAc111:::DtLLLLAAc12A;;;(t5 5 5 5 Sc3??A#qA4000AAt$////#qAAAQJAqvD1111)QQQ7777)QQQ7777)QQR8888)QQ"5555)QQ!4444)QQa8888)QQ"(632L2LMMMMM4$// 	N 	NGAtqw--AyAAc1IIt$7777AAc1D11146EEEEAAc111:::DtLLLLAAc12A;;;(t5 5 5 5 Sc3??A#qA4000AAt$////#qAAAQJAqvD1111)QQQ7777)QQQ7777)QQR8888)QQ"5555)QQ!4444)QQa8888)QQ"(632L2LMMMMM4$// 	N 	NGAtqw--AyAAc1IIt$7777AAc1D11146;;==tLLLLAAc111:::DtLLLLAAc12A;;;(t5 5 5 5 Sc3??A#qA4000AAt$////#qAAAQJAqvD1111)QQQ7777)QQQ7777)QQR8888)QQ"5555)QQ!4444)QQa8888)QQ"(632L2LMMMMM3	N 	Nr6   c                    t          j        ddd          }t          j        ddd          }t          j        |d d t           j        f         |z  |d d t           j        f         |z  z             }t          j        |d d dt           j        f         |d d d         z  |d d dt           j        f         |d d d         z  z             }t          j        ddd	d
          }t          dddg          D ]\  }}t          t          |dz   d           }|"t           |d||          ||           t           |d||d          |d dd df         |           t           |d||d          |j	        |           t           |d||dddd          ||           t           |d||ddddd          |d dd df         |           t           |d||dddd          ||           t          j
        d|dk    rdndd          }	 |d|||	d          }
t          |	||            |d |||	!          }
t          |	|
u           t          |
d|z  |           t          t          |d||d"           t          t          |d||d#           t          t          |d||d#           t          t          |d||d$           t          t          |d||d%           t          t          |d||d%           t          t          |d||d           t          t          |d||d           t          t          |d||d           t          t          |d||t          j
        d&dd          !           d S )'NrF   rI   r(   r*   rM   rH   r   r   r   Fr   rD   r   r   syr2r   r   rG   r   Tr   r    r   r   r   incyoffyr   r   r   r   r   r   r   r   r<   r!   r   r   rJ   r   r   r   r   r   )r,   r   r   r   r   r   rQ   r_   r   r   r   r   r   r   )rS   r   r   resxyresxy_reverseqrT   r   r<   rK   r   s              r4   	test_syr2zTestFBLAS2Simple.test_syr2k  s&   Ia#&&&Ia#&&&!!!RZ-(1,qBJ/?!/CCDD$$B$
"2 3a"g ="#DDbD"*$4"5$$B$"?!@ A A K3U3334$// "	8 "	8GAtqx..AyAAc1aLL%d;;;;AAc1a1---uRaR!V}4HHHHAAc1at444egDIIIIAAc1aaaabIII!. . . .AAc1aaaabANNN!"1"bqb&M6 6 6 6 AAc1abqrKKK)6 6 6 6 Sc3??A#q!qd333AAu40000#q!q!!!AAQJAqwT2222)QQ::::)QQ::::)QQ;;;;)QQ::::)QQ::::)QQ;;;;)QQR8888)QQQ7777)QQ;;;;)QQHVS#668 8 8 8 8C"	8 "	8r6   c                 	   t          j        ddd                              d          }t          j        ddd                              d          }|d d t           j        f         |                                z  |d d t           j        f         |                                z  z   }t          j        |          }|d d dt           j        f         |d d d                                         z  }||d d dt           j        f         |d d d                                         z  z  }t          j        |          }t           j        t          j        d          |t          j        d          f                                         }t           j        t          j        d          |t          j        d          f                                         }t          d	d
dg          D ]\  }}t          t          |dz   d           }	|	"t           |	d||          ||           t           |	d||d          |d dd df         |           t           |	d||d          |j                                        |           t           |	d||dddd          ||           t           |	d||ddddd          |d dd df         |           t           |	d||dddd          ||           t          j        d|dk    rdndd          }
 |	d|||
d          }t          |
||            |	d|||
          }t          |
|u           t          |d|z  |           t          t           |	d||d           t          t           |	d||d           t          t           |	d||d            t          t           |	d||d!           t          t           |	d||d"           t          t           |	d||d "           t          t           |	d||d            t          t           |	d||d           t          t           |	d||d#           t          t           |	d||t          j        d$dd                     d S )%NrF   rM   r(   r*   r   r   rH   rb   rO   r   r   her2r   r   rG   r   Tr   r   r   r   r   r+   r!   r   r   rJ   r   r   rI   r   r   r   r   r    r   )r,   r   r   r   r   r   r   r   r   r   rQ   r_   r   r   r   r   r   )rS   r   r   r   r   uvrT   r   r<   rK   r   s               r4   	test_her2zTestFBLAS2Simple.test_her2  s   Ia#&&&++C00Ia3''',,S11!!!RZ- 16688+a2:.>.II$$B$
*+a"gllnn<44R4+,q2w||~~==..E"(1++q"(1++-.4466E"(1++q"(1++-.44664$// #	8 #	8GAtqx..AyAAc1aLL%d;;;;AAc1a1---uRaR!V}4HHHHAAc1at444egllnn!%' ' ' ' AAc1aaaaaHHH!. . . .AAc1aaaaa1MMM!"1"bqb&M6 6 6 6 AAc1abqrJJJ)6 6 6 6 Sc3??A#q!qd333AAu40000#q!q!!!AAQJAqwT2222)QQ::::)QQ::::)QQ;;;;)QQ::::)QQ::::)QQ;;;;)QQR8888)QQQ7777)QQ;;;;)QQHVS#668 8 8 8 8E#	8 #	8r6   c                 b   t           j                            d          }t          t                    D ]\  }}d}d}d}d}t          t          |                    |dz             t          ||z
  dz
                      t          |                    |dz             t          ||z
  dz
                                }|                    |          }t          ||z   dz   |f|          }	|d         |	dd df<   |d         |	ddd	f<   |d
         |	dddf<   |d         |	dd df<   |                    |                              |          }
|                    |                              |          } |d           |d          }}t          d|          \  } |||||||	|
||	  	        }||
                    |
          z  ||z  z   }t          ||            |||||||	||
|d
  
        }||j        
                    |          z  ||
z  z   }t          ||           d S )N  rL   rI   rF   r    r*   )r   r   )r   rF   r   )r   r    r   )rF   r   rG   rb   r   )gbmv)	mr   kuklalpharK   r   r   beta)
r   r   r   r   r   rK   r   r   r   trans)r,   randomdefault_rng	enumerateDTYPESr   r   r   astyper   r9   r   r   )rS   rngindr"   r   r   r   r   AAbr   r   r   r   funcr   y2s                    r4   	test_gbmvzTestFBLAS2Simple.test_gbmv  sS   i##D))#F++ 	. 	.JCAABB

2a4 0 0%"Q--@@

2a4 0 0%"Q--@@B BAA2a|5111B $Bq"1"uI4Bq!A#vJ4Bq!A#vJ$Bq"1"uI

1$$U++A

1$$U++A%((EE"II4E"9E:::EDQ2"ERQT+ + +Bq!D1H,B%b"---Q2"ERQT4 4 4B#dQh.B%b"----=	. 	.r6   c           	      N   t           j                            d          }t          t                    D ]\  }}d}d}t          ||f|          }t          |dz   |f|          }|                    |          |t          |          t          |          f<   t          d|dz             D ]K}|                    ||z
            }	|	|t          ||z
            t          ||          f<   |	|d|z
  |d f<   L|                    |          }|dk     r
||j	        z   n||
                                j	        z   }t          |          |dd d f<   |                    |                              |          }
|                    |                              |          } |d           |d          }}|dk    rt          d	|          \  }nt          d
|          \  } |||||
||          }||                    |
          z  ||z  z   }t          ||           d S )Nr   r   r    r*   rF   rH         ?rG   )hbmv)sbmv)kr   rK   r   r   r   )r,   r   r   r   r   r   r   ranger   r   r   r   r   r9   r   )rS   r   r   r"   r   r   r   r   ind2tempr   r   r   r   r   r   r   s                    r4   test_sbmv_hbmvzTestFBLAS2Simple.test_sbmv_hbmv  s$   i##D))#F++ 	. 	.JCAAq!fE***A!Qxu---B '*jjmmAfQii"#a1 * *zz!D&))59&4..&q//12%)2d7DEE>""A77ACAFFHHJAQBr111uI

1$$U++A

1$$U++A%++uuQxx4EQww&y>>>&y>>>"QTBBBBq!D1H,B%b"----3	. 	.r6   c                 .   t           j                            d          }t          t          t
          z             D ]W\  }}d}|                    ||f                              |          }|dk    r||                    ||f          dz  z  }|                    |          }|dk     r
||j        z   n||                                j        z   }t          |          \  }}|||f         }|                    |                              |          }	|                    |                              |          }
t          d|z                                |          }t          d|z                                |          } |d           |d          }}|dk    rt          d|	          \  }nt          d
|	          \  } |||||	|
|          }||                    |	          z  ||
z  z   }t          ||            ||dz
  |||||dd||
  
        }||d dd df         z                      |dd d                   ||dd d         z  z   }t          |dd d         |           t          |d         |d                    Yd S )Niba rG   rF   r   rb   r    r   )hpmvr*   )spmv)r   r   apr   r   r   )
r   r   r   r   r   r  r   r   r   r   rH   )r,   r   r   r   r   COMPLEX_DTYPESr   r   r   r   r   r   r   r9   r   r   )rS   r   r   r"   r   r   r+   rApr   r   xlongylongr   r   r   r   r   s                     r4   test_spmv_hpmvzTestFBLAS2Simple.test_spmv_hpmv	  s   i##H--#F>$9:: 	1 	1JCA

Aq6""))%00AQwwSZZA''**A77ACAFFHHJA??DAq1a4B

1$$U++A

1$$U++A1Q3KK&&u--E1II$$U++E%++uuQxx4EQww&y>>>&y>>>2adCCCBq!D1H,B%b"--- !5tu"1116 6 6B!CRC"H+%**5A;77$qt!t:LLB%bAh3331uQx00009	1 	1r6   c                 t   t           j                            d          }t          t          t
          z             D ]\  }}d}|                    ||f                              |          }|dk    r||                    ||f          dz  z  }|                    |          }|dk     r
||j        z   n||                                j        z   }t          |          \  }}|||f         }|                    |                              |          }	t	          t
          z   t          |d                   d          }
|dk    rUt          d|          \  }|
|	d d d f                             |	d d d f                                                   z  |z   }nBt          d	|          \  }|
|	d d d f                             |	d d d f                   z  |z   } |||
||	
          }t          d|          }||||f<   |dk    r|                                n||||f<   t          ||           d S )Nr   rG   rF   r   rb   g      @)hprr*   )spr)r   r   r  r   rG   rG   )r,   r   r   r   r   r	  r   r   r   r   r   r   r9   r   r   )rS   r   r   r"   r   r   r+   r
  r  r   r   r   r   r   y1fs                  r4   test_spr_hprzTestFBLAS2Simple.test_spr_hpr)  s+   i##D))#F>$9:: 	/ 	/JCA

Aq6""))%00AQwwSZZA''**A77ACAFFHHJA??DAq1a4B

1$$U++AN*CQKK8==EQww&xu===Qqqq$wZ^^AdAAAgJOO,=,=>>>B&xu===Qqqq$wZ^^AdAAAgJ777!;2333Be,,,CC1I%(1WW			"C1I%c2..../	/ 	/r6   c                 |   t           j                            d          }t          t                    D ]\  }}d}|                    ||f                              |          }|dk    r||                    ||f          dz  z  }|                    |          }|dk     r
||j        z   n||                                j        z   }t          |          \  }}|||f         }|                    |                              |          }	|                    |                              |          }
 |d          }|dk    rt          d|          \  }nt          d|          \  }|                                |	d d d f         
                    |
d d d f                                                   z  }||z   |                                j        z   } ||||	|
|	          }t          d
|          }||||f<   |g d                                         |g dg df<   t          ||           d S )Nr   rG   rF   r   r    )hpr2r*   )spr2)r   r   r   r   r  r  )rF   rG   rb   )rF   r    r    )r   r   rF   )r,   r   r   r   r   r   r   r   r   r   r9   r   r   )rS   r   r   r"   r   r   r+   r
  r  r   r   r   r   r   r   r   r  s                    r4   test_spr2_hpr2zTestFBLAS2Simple.test_spr2_hpr2D  s%   i##D))#F++ 	/ 	/JCA

Aq6""))%00AQwwSZZA''**A77ACAFFHHJA??DAq1a4B

1$$U++A

1$$U++AE!HHEQww&y>>>&y>>>

qDz~~aaaajoo.?.?@@@AQ#B!qR888Be,,,CC1I(*999(:(:(<(<C			999$%%c2....1	/ 	/r6   c                 8   t           j                            d          }t          t                    D ]d\  }}d}d}|                    |                              |          }t          ||f|          }t          |dz             D ]=}|                    ||z
            |t          ||z
            t          ||          f<   >|dk    rX|t          |          xx         d|                    |dz   |z  ||dz   z  dz  z
                                |          z  z  cc<   t          |dz   |f|          }	t          |dz             D ]}
t          ||
          |	|
 dz
  |
d f<   t          d	|          \  } |||	|
          }|                    |          }t          ||            |||	|d          } |d          |t          |          t          |          f<   |                    |          }t          ||            |||	|dd          }|j                            |          }t          ||            |||	|dd          }|                                j                            |          }t          ||           fd S )Nr   r   rG   r*   rF   r   r    r   )tbmvr   rK   r   r   rK   r   r   r   rK   r   r   r   )r,   r   r   r   r   r   r   r  r   r   r   r   r9   r   r   r   rS   r   r   r"   r   r   r   r   supr   rowr   r   r   s                 r4   	test_tbmvzTestFBLAS2Simple.test_tbmv`  s   i##D))#F++ "	. "	.JCAA

1$$U++Aq!fE***AQqSzz E E36::ae3D3D&3--Q/00 Qww'!**cjj!A#q!QqS'1*1E&F&F&M&Me&T&T!TT !Qxu---BQqSzz 2 2#'S>>>C46344<  "9E:::EDR1%%%BqB%b"---R11---B&+eAhhAfQii"#qB%b"---R11A666BB%b"---R11A666B""B%b"----E"	. "	.r6   c                    t           j                            d          }t          t                    D ]P\  }}d}d}|                    |                              |          }t          ||f|          }t          |dz             D ]=}|                    ||z
            |t          ||z
            t          ||          f<   >|dk    rX|t          |          xx         d|                    |dz   |z  ||dz   z  dz  z
                                |          z  z  cc<   t          |dz   |f|          }	t          |dz             D ]}
t          ||
          |	|
 dz
  |
d f<   t          d	|          \  } |||	|
          }t          ||          }t          ||            |||	|d          } |d          |t          |          t          |          f<   t          ||          }t          ||            |||	|dd          }t          |j        |          }t          ||            |||	|dd          }t          |                                j        |          }t          ||           Rd S )Nr   r   rG   r*   rF   r   r    r  )tbsvr  r  r  )r,   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r  s                 r4   	test_tbsvzTestFBLAS2Simple.test_tbsv  s   i##D))#F++ "	. "	.JCAA

1$$U++Aq!fE***AQqSzz E E36::ae3D3D&3--Q/00 Qww'!**cjj!A#q!QqS'1*1E&F&F&M&Me&T&T!TT !Qxu---BQqSzz 2 2#'S>>>C46344<  "9E:::EDR1%%%Bq!B%b"---R11---B&+eAhhAfQii"#q!B%b"---R11A666BqsAB%b"---R11A666Bqvvxxz1%%B%b"----E"	. "	.r6   c                 0   t           j                            d          }t          t                    D ]\  }}d}|                    |                              |          }|dk     r%t          |                    ||f                    }n?t          |                    ||f          |                    ||f          dz  z             }t          |          \  }}|||f         }	t          d|          \  }
 |
||	|          }|	                    |          }t          ||            |
||	|d	          } |d          |t          |          t          |          f<   |	                    |          }t          ||            |
||	|dd
          }|j        	                    |          }t          ||            |
||	|dd
          }|                                j        	                    |          }t          ||           d S )Nr   r   r    r   )tpmvr*   r   r  r   rF   r   r  r   r   r   r  r   r   r   )r,   r   r   r   r   r   r   r   r   r9   r   r   r   r   rS   r   r   r"   r   r   r   r+   r
  r  r   r   r   s                r4   	test_tpmvzTestFBLAS2Simple.test_tpmv  s   i##D))#F++ 	. 	.JCA

1$$U++AQwwQF++,,QF++cjj!Q.@.@.CCDD  ??DAq1a4B"9E:::EDbA&&&BqB%b"---bAA...B&+eAhhAfQii"#qB%b"---bAAQ777BB%b"---bAAQ777B""B%b"----;	. 	.r6   c                 ,   t           j                            d          }t          t                    D ]\  }}d}|                    |                              |          }|dk     r%t          |                    ||f                    }n?t          |                    ||f          |                    ||f          dz  z             }|t          |          z  }t          |          \  }}|||f         }	t          d|          \  }
 |
||	|          }t          ||          }t          ||            |
||	|d	          } |d          |t          |          t          |          f<   t          ||          }t          ||            |
||	|dd
          }t          |j        |          }t          ||            |
||	|dd
          }t          |                                j        |          }t          ||           d S )Nr   r   r    r   )tpsvr*   r(  rF   r)  r*  )r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+  s                r4   	test_tpsvzTestFBLAS2Simple.test_tpsv  s   i##D))#F++ 	. 	.JCA

1$$U++AQwwQF++,,QF++cjj!Q.@.@.CCDDQKA??DAq1a4B"9E:::EDbA&&&Bq!B%b"---bAA...B&+eAhhAfQii"#q!B%b"---bAAQ777BqsAB%b"---bAAQ777Bqvvxxz1%%B%b"----;	. 	.r6   c                    t           j                            d          }t          t                    D ]\  }}d}|                    ||f          t          |          z                       |          }|                    d                              |          }t          d|          \  } |||          }t          |          	                    |          }	t          ||	            |||d          } |d          |t          |          t          |          f<   t          |          	                    |          }	t          ||	            |||dd          }t          |          j        	                    |          }	t          ||	            |||dd	          }t          |                                          j        	                    |          }	t          ||	           d S )
Nr   rG   )trmvr*   rK   r   rF   rK   r   r   rK   r   r   r   r    )r,   r   r   r   r   r   r   r   r   r9   r   r   r   r   
rS   r   r   r"   r   r   r   r   r   r   s
             r4   	test_trmvzTestFBLAS2Simple.test_trmv  s   i##D))#F++ 	. 	.JCAQF##CFF*22599A

1$$U++A"9E:::EDQBaQB%b"---QQ'''B&+eAhhAfQii"#aQB%b"---QQa000Baq!!B%b"---QQa000Ba!%%a((B%b"----+	. 	.r6   c                 F   t           j                            d          }t          t                    D ]\  }}d}|                    ||f          t          |          z                       |          }|                    |                              |          }t          d|          \  } |||          }t          t          |          |          }	t          ||	            |||d          }t          t          |          |          }	t          ||	            |||d          } |d          |t          |          t          |          f<   t          t          |          |          }	t          ||	            |||dd	          }t          t          |          j        |          }	t          ||	            |||dd
	          }t          t          |                                          j        |          }	t          ||	           d S )Nr      )trsvr*   r2  rF   )rK   r   r   r3  r4  r    )r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5  s
             r4   	test_trsvzTestFBLAS2Simple.test_trsv  s   i##D))#F++ 	. 	.JCAQF##CFF*22599A

1$$U++A"9E:::EDQBtAww""B%b"---Qa(((BtAww""B%b"---QQ'''B&+eAhhAfQii"#tAww""B%b"---QQa000BtAwwy!$$B%b"---QQa000BtAww||~~'++B%b"----3	. 	.r6   N)rW   rX   rY   r   pytestmarkthread_unsafer   r   r   r   r   r  r  r  r  r"  r%  r,  r/  r6  r:  rZ   r6   r4   r   r      s)       1 1 1" [H H H@^N ^N ^N@+8 +8 +8Z08 08 08d .  .  .D. . .:1 1 1@/ / /6/ / /8$. $. $.L$. $. $.L. . .B. . .B. . .2. . . . .r6   r   c                       e Zd Zd ZdS )TestFBLAS3Simplec           
         dD ]^}t          t          |dz   d           }|t           |ddgdg          dgg           t           |ddgdgddg          dg           _dD ]^}t          t          |dz   d           }|t           |d	d
gdg          dgg           t           |d	d
gdgddg          dg           _d S )NrD   r)   rG   ri   r   rI   r   rO   rn   ro   r   r   r   r^   rR   s      r4   	test_gemmzTestFBLAS3Simple.test_gemm'  s    	F 	FAqx..Ay%aaA3oow???%aaA3a!&=&=uEEEE 	O 	OAqx..Ay%aaTFRD&9&9WI;GGG%aaTFRD!bT&B&BWINNNN	O 	Or6   N)rW   rX   rY   rA  rZ   r6   r4   r?  r?  %  s(        O O O O Or6   r?  sdzcc              #   T   K   |D ]"}t          t          || z   d          }||V  #dS )z;Just a helper: return a specified BLAS function w/typecode.N)rQ   r_   )r   psrT   r<   s       r4   	_get_funcrE  6  sG        E1T64((9	 r6   c                   &    e Zd Zd Zd Zd Zd ZdS )TestBLAS3Symmc                     t          j        ddgddgg          | _        t          j        g dg dg          | _        t          j        d          | _        t          j        g dg dg          | _        d S )	Nr   r           )r   rI        @)rI        r   )r    rG   )r   rK  g       @)rJ  rI  g      "@)r,   arrayrK   r   r   r+   trS   s    r4   setup_methodzTestBLAS3Symm.setup_methodA  s    B88% & &<<<(==* + +==='<<) * *r6   c           	         t          d          D ]} || j        | j        | j        dd          }t	          || j                    || j        j        | j        d| j        dd          }t	          || j                    || j        | j        j        d| j        j        dd          }t	          || j        j                   d S )Nsymmr   rK   r   r+   r   r   rF   rK   r   r   r+   r   r   )rK   r   sider+   r   r   )rE  rK   r   r+   r   rM  r   rS   r<   ress      r4   	test_symmzTestBLAS3Symm.test_symmJ  s    6"" 		5 		5A!df$&DDDC%c46222!dfh$&TV2BOOOC%c46222!dfqDFH2' ' 'C%c4684444		5 		5r6   c           	      ~    t          t          dd           }|$t          t          |fi | j        | j        ddd d S d S )NdsymmrF   )rK   r   r   rT  )rQ   r_   r   r   rK   r   rS   r<   s     r4   test_summ_wrong_sidez"TestBLAS3Symm.test_summ_wrong_sideV  si    E7D))=)Q C CTV45q+B +B C C C C C =r6   c                 (   t          t          dd          }|w || j        | j        | j        dd          }t          j        || j                  sJ  || j        | j        d| j        dd          }t          j        || j                  rJ dS dS )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.
        rY  Nr   rR  rF   rS  )rQ   r_   rK   r   r+   r,   allcloserM  rU  s      r4   test_symm_wrong_uploz"TestBLAS3Symm.test_symm_wrong_uplo^  s    
 E7D))=!df$&DDDC;sDF+++++!dfa46"MMMC{3///// =
 0/r6   N)rW   rX   rY   rO  rW  r[  r^  rZ   r6   r4   rG  rG  ?  sS        * * *
5 
5 
5C C C0 0 0 0 0r6   rG  c                        e Zd Zd Zd Zd ZdS )TestBLAS3Syrkc                     t          j        ddgddgddgg          | _        t          j        g dg dg dg          | _        t          j        d	d
gd
dgg          | _        d S )Nr   rI         r   rJ  )r   rI  r   )rI        @      )r   rd        *@      @      @re  )r,   rL  rK   rM  ttrN  s    r4   rO  zTestBLAS3Syrk.setup_methodm  s    B898% & & <<<(==)>>+ , , (RHI' ( (r6   c                    t          d          D ]T} || j        d          }t          t          j        |          t          j        | j                              || j        dd          }t          t          j        |          t          j        | j                             t          j        | j        j                  } || j        dd|          }t          t          j        |          t          j        | j        |z                         || j        dd          }t          t          j        |          t          j        | j	                             Vd S )Nsyrkr   rK   r   rF   )rK   r   r   )rK   r   r   r+   )rK   r   r   )
rE  rK   r   r,   r   rM  r   r   shaperh  rS   r<   r+   c0s       r4   	test_syrkzTestBLAS3Syrk.test_syrkw  s-   6"" 	D 	DADF"%%%A%bgajj"'$&//BBBDF"A...A%bgajj"'$&//BBB&&BDF"2444A%bgajj"'$&)2D2DEEEDF"A...A%bgajj"'$'2B2BCCCC	D 	Dr6   c           	          t          t          dd           }|0t          t          |fi | j        dt          j        d          d d S d S )Ndsyrkr   )rI   rc   )rK   r   r+   )rQ   r_   r   r   rK   r,   r   rZ  s     r4   test_syrk_wrong_czTestBLAS3Syrk.test_syrk_wrong_c  sm    E7D))=)Q B B02+A +A B B B B B =r6   N)rW   rX   rY   rO  ro  rr  rZ   r6   r4   r`  r`  l  sI        ( ( (D D D$B B B B Br6   r`  c                        e Zd Zd Zd Zd ZdS )TestBLAS3Syr2kc                    t          j        ddgddgddgg          | _        t          j        ddgddgddgg          | _        t          j        g dg dg d	g          | _        t          j        ddgdd
gg          | _        d S )Nr   rI  rb  r   rJ  r   )rI  rK  rJ  )rK  rI  rI  )rJ  rI  rg  r   )r,   rL  rK   r   rM  rh  rN  s    r4   rO  zTestBLAS3Syr2k.setup_method  s    B898% & & B88r7$ % % ===(=='<<) * * (RHG% & &r6   c                     t          d          D ]l} || j        | j        d          }t          t	          j        |          t	          j        | j                              || j        | j        dd          }t          t	          j        |          t	          j        | j                             t	          j        | j        j	                  } || j        | j        dd|          }t          t	          j        |          t	          j        | j        |z                         || j        | j        dd          }t          t	          j        |          t	          j        | j
                             nd S )Nsyr2kr   rK   r   r   rF   )rK   r   r   r   )rK   r   r   r   r+   )rK   r   r   r   )rE  rK   r   r   r,   r   rM  r   r   rl  rh  rm  s       r4   
test_syr2kzTestBLAS3Syr2k.test_syr2k  s=   7## 	D 	DADFdfB///A%bgajj"'$&//BBBDFdfBa888A%bgajj"'$&//BBB&&BDFdfBR2>>>A%bgajj"'$&)2D2DEEEDFdfBa888A%bgajj"'$'2B2BCCCC	D 	Dr6   c           
          t          t          dd           }|6t          t          |fi | j        | j        dt          j        d          d d S d S )Ndsyr2kr   )r8  rc   )rK   r   r   r+   )rQ   r_   r   r   rK   r   r,   r   rZ  s     r4   test_syr2k_wrong_cz!TestBLAS3Syr2k.test_syr2k_wrong_c  su    E8T**=)Q D D0446020A0A+C +C D D D D D =r6   N)rW   rX   rY   rO  ry  r|  rZ   r6   r4   rt  rt    sI        & & &D D D D D D D Dr6   rt  c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestSyHez2Quick and simple tests for (zc)-symm, syrk, syr2k.c                 D    t          j        ddgddgg          | _        d S )NrI  y             r   )r,   rL  sigma_yrN  s    r4   rO  zTestSyHe.setup_method  s+    x"d"%r!, - -r6   c                     t          dd          D ]P} || j        | j        d          }t          t          j        |          t          j        ddg                     Qd S )NrQ  zcr   rx  rF   rH   rE  r  r   r,   r   r   rU  s      r4   test_symm_zczTestSyHe.test_symm_zc  sl    64(( 	F 	FA!dldl"===C%bgcllBGQG4D4DEEEE	F 	Fr6   c                     t          dd          D ]P} || j        | j        d          }t          t          j        |          t          j        ddg                     Qd S )Nhemmr  r   rx  rF   r  rU  s      r4   test_hemm_zczTestSyHe.test_hemm_zc  sj    64(( 	E 	EA!dldl"===C%bgcllBGQFOODDDD	E 	Er6   c                     t          dd          D ]J} || j        d          }t          t          j        |          t          j        ddg                     Kd S )Nrj  r  r   rk  rH   r  rU  s      r4   test_syrk_zrzTestSyHe.test_syrk_zr  sh    64(( 	G 	GA!dl"---C%bgcllBGRH4E4EFFFF	G 	Gr6   c                     t          dd          D ]J} || j        d          }t          t          j        |          t          j        ddg                     Kd S )Nherkr  r   rk  rF   r  rU  s      r4   test_herk_zrzTestSyHe.test_herk_zr  sf    64(( 	E 	EA!dl"---C%bgcllBGQFOODDDD	E 	Er6   c           	          t          dd          D ]S} || j        | j        d          }t          t          j        |          dt          j        ddg          z             Td S )Nrw  r  r   rx  r   rH   r  rU  s      r4   test_syr2k_zrzTestSyHe.test_syr2k_zr  sq    7D)) 	J 	JA!dldl"===C%bgcllBrwBx7H7H4HIIII	J 	Jr6   c           	          t          dd          D ]S} || j        | j        d          }t          t          j        |          dt          j        ddg          z             Td S )Nher2kr  r   rx  r   rF   r  rU  s      r4   test_her2k_zrzTestSyHe.test_her2k_zr  so    7D)) 	H 	HA!dldl"===C%bgcllBrw1v4FGGGG	H 	Hr6   N)rW   rX   rY   __doc__rO  r  r  r  r  r  r  rZ   r6   r4   r~  r~    s        <<- - -F F FE E EG G G
E E E
J J J
H H H H Hr6   r~  c                   r    e Zd ZdZd Zej                            de          d             Z	d Z
d Zd ZdS )	TestTRMMz!Quick and simple tests for dtrmm.c                 $   t          j        ddgddgg          | _        t          j        g dg dg          | _        t          j        g dg dg dg d	gd
          | _        t          j        ddgddgddgddgddggd
          | _        d S )Nr   r   rb  rJ  rc  rK  rf  rg  rb  )rF   rF   r    rG   )r   rF   rb   rI   )r   r   rF   r   )r   r   r   rF   r<   )r#   rF   rb   r    rI   rG   r   rL   rc   rM   r   )r,   rL  rK   r   a2b2rN  s    r4   rO  zTestTRMM.setup_method  s    B:9& ' '===(==* + + (LLL(LL(LL(LL* 256 6 6 (QFQFQFQFQGD!$& & &r6   dtype_c           	         t          d|          }t          t          |d| j        | j                    |d| j                            |          | j                            |          d          }| j        j        d         }t          || j        | j        d |d |f         z  ddt          j	        |          j
        z             d S )	Ntrmmr*   r   rF   )rT  rI  d   )r   atol)r   r   r   r  r  r   rl  r   r,   finfoeps)rS   r  r  rV  r   s        r4   	test_sidezTestTRMM.test_side  s    fF333isDGTW===d3v..v0F0F  GM!TWtwrr2A2v6R &!1!1!55	7 	7 	7 	7 	7 	7r6   c                     t          t          dd           }|C |d| j        | j                  }t	          j        g dg dg          }t          ||           d S d S )Ndtrmmr   )re  g      0@g      r  rQ   r_   rK   r   r,   rL  r   rS   r<   resultexpecteds       r4   test_abzTestTRMM.test_ab  so    E7D))=Qr4646**Fx!.!0 1 1H%fh77777 =r6   c                     t          t          dd           }|E |d| j        | j        d          }t	          j        g dg dg          }t          ||           d S d S )Nr  r   Tr   r  )rK  rb  rI  r  r  s       r4   test_ab_lowerzTestTRMM.test_ab_lower  st    E7D))=Qr4646666Fx!/!1 2 2H%fh77777	 =r6   c                 .   t          t          dd           }|dD ]v}| j                                        } |d| j        ||          }t          |j        j        du ot          j	        ||          du            t          || j                   wt          j        | j                                                  } |d| j        |d          }t          |j        j        du ot          j	        ||          du            t          ||           d S d S )Nr  )TFr   )overwrite_bFT)rQ   r_   r   ra   rK   r   flagsf_contiguousr,   may_share_memoryr   asfortranarrayr   )rS   r<   overwrbcopyr  s        r4   test_b_overwriteszTestTRMM.test_b_overwrites  s/    E7D))=' , ,2tvu&AAA0E9 D+E6::eCE E EUDF++++%dfkkmm44EQr465d;;;FEK,4 ?'v66$>@ @ @%eV44444 =r6   N)rW   rX   rY   r  rO  r;  r<  parametrizer   r  r  r  r  rZ   r6   r4   r  r    s        ++& & & [Xv..7 7 /.78 8 88 8 85 5 5 5 5r6   r  c            	         t           j                            d          } t          t                    D ]\  }}t          j        |          j        dz  }t          d|          \  }|                     d                              |          }|                     d                              |          } |d          }t          t          ||||           t          t          |||j        |           d}d	}	 |d
          }|dk     r(|                     |	|	f          t          |	          z   }nB|                     |	|	f          |                     |	|	f          dz  z   t          |	          z   }|                    |          }t          |          }
t          |          }|                     |	|f                              |          }|                     ||	f                              |          } ||||          }t          |j        |j                   t#          |
||z            }t%          |||            ||||d          }t#          |
j        ||z            }t%          |||            ||||d          }t#          |
                                j        ||z            }t%          |||            ||||d          } |d          |
t)          |	          t)          |	          f<   t#          |
||z            }t%          |||            ||||dd          }t#          |
                                j        ||                                j        z            }t%          ||                                j        |            ||||ddd          } |d          |t)          |	          t)          |	          f<   t#          |                                j        ||                                j        z            }t%          ||                                j        |           d S )Nr   i  )trsmr*   )rb   rI   r   rF   rc   rL   g      r    r   )r   rK   r   )r  )r   rK   r   trans_a)r   rK   r   r   )r   rK   r   r   rT  )r   rK   r   r   rT  r   )r,   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   rl  r   r   r   r   )r   r   r"   tolr   r   Br   r   r   AuAlB1B2r   x2s                   r4   	test_trsmr  !  s   
)


%
%C'' 13 13
Uhuoo!$&y666 JJv%%e,,JJv%%e,,aiua333iuac1555d77

Aq6""SVV+AAQF##cjj!Q&8&8&;;s1vvEAHHUOO!WW!WWZZA&&u--ZZA&&u--Tb)))RXrx(((2uRx  BS))))Tb!44424r""BS))))Tb!44427799;b))BS))))Tbq111#(5886!99fQii 2uRx  BS))))Tbqq99927799;bggiik 122BGGIIKc2222TbqqBBB#(5886!99fQii 27799;bggiik 122BGGIIKc22222c13 13r6   Fzgh-16930)runreasonc                      t          j        dd          } t          j        j                            | ddd          }t          j        d          }t          ||           d S )Nr   rM   rI   rG   rH   i  )	r,   repeatscipylinalgblasdnrm2r~   r   r   )r   actualr  s      r4   test_gh_169309r  W  sV     		"aA\$$Q1b11Fy~~HFH%%%%%r6   c                      t          j        dd          } d}t          t          j                  5  t
          j        j                            | dd|           d d d            d S # 1 swxY w Y   d S )Nr   rM   rH   rI   rG   )	r,   r  r   r_   __fblas_errorr  r  r  r  )r   r   s     r4   test_dnrm2_neg_incxr  `  s     		"aAD	u*	+	+ / /1a.../ / / / / / / / / / / / / / / / / /s   (A&&A*-A*)rB  ):r~   r;  numpyr,   numpy.randomnumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r  scipy.linalgr   r_   r   r   r   r   r&   ImportErrorREAL_DTYPESr	  r   r5   r?   rA   r\   r   r?  rE  rG  r`  rt  r~  r  r  r<  xfailr  r  rZ   r6   r4   <module>r     s  
          G G G G G G G G G G G G G G * * * * * *                                   I I I I I I I I I I I I,,,,,,,   EEE  Z(	~	%$# $# $#N  6 6 6 6 6 6 6 6"r. r. r. r. r. r. r. r.lK	. K	. K	. K	. K	. K	. K	. K	.\O O O O O O O O"   *0 *0 *0 *0 *0 *0 *0 *0Z!B !B !B !B !B !B !B !BJ$D $D $D $D $D $D $D $DP%H %H %H %H %H %H %H %HP=5 =5 =5 =5 =5 =5 =5 =5@33 33 33l u$  & && && &&/ / / / /s   A A)(A)