
    e!h                        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$ 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jl                  jo                  dd      d         Z8d! Z9y# e%$ r dZ$Y w xY w)#    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       y )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      d/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/linalg/tests/test_blas.pytest_get_blas_funcsr5      s?      	&C	8	&S	9	;
JBB c"c"R^^W-R^^W- 
	Bc" 
bll	3Bc"	c	*Bc" 
bnn	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 y )N)nrm2dotr*   r+   )r9   dotcdotu)r   r,   r   r.   r
   )fghs      r4   test_get_blas_funcs_aliasr?   E   sg    />DAq::::4BJJGGAq!6M66M6r6   c                       e Zd Zd Zy)TestCBLAS1Simplec                     dD ]4  }t        t        |dz   d       }|t         |g dg dd      g d       6 dD ]4  }t        t        |dz   d       }|t         |g d	g dd      g d
       6 y Nsdr      r       )r    rG      a)   	      cz)rF                  @rG   )rL   y            $@rN   )getattrr&   r   selfpr<   s      r4   	test_axpyzTestCBLAS1Simple.test_axpyR        	2Aqx.Ay%a	:&C&02		2  	6Aqx.Ay%a
J!&D&46		6r6   N)__name__
__module____qualname__rU    r6   r4   rA   rA   P   s    6r6   rA   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestFBLAS1Simplec                     dD ]4  }t        t        |dz   d       }|t         |g dg dd      g d       6 dD ]4  }t        t        |dz   d       }|t         |g d	g dd      g d
       6 y rC   rQ   fblasr   rR   s      r4   rU   zTestFBLAS1Simple.test_axpyc   rV   r6   c                     dD ]4  }t        t        |dz   d       }|t         |g ddgdz        g d       6 dD ]4  }t        t        |dz   d       }|t         |g ddgdz        g d       6 y )NrD   copy)rG      rI      rG   rO   )rG                 @y      @      @r^   rR   s      r4   	test_copyzTestFBLAS1Simple.test_copyq   s     	FAqx.Ay%a	A3q5&99E		F
  	NAqx.Ay%as1u&=}M		Nr6   c                     dD ]-  }t        t        |dz   d       }|t         |g d      d       / dD ]-  }t        t        |dz   d       }|t         |g d      d       / y )NrD   asumrG   rI      )scdz              @ri         @         rQ   r_   r   rR   s      r4   	test_asumzTestFBLAS1Simple.test_asum}   ss     	3Aqx.Ay*r2		3
  	7Aqx.Ay. 126		7r6   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrD   r9   rh   )r    rI   rF   rq   rR   s      r4   test_dotzTestFBLAS1Simple.test_dot   s<     	>Aqw-Ay*i 8"=		>r6   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrO   r;   rm   r    rG   rF   y      "       @rq   rR   s      r4   test_complex_dotuz"TestFBLAS1Simple.test_complex_dotu   s>     	EAqx.Ay.) <eD		Er6   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrO   r:   rm   r    rn   rF   y      @      ,rq   rR   s      r4   test_complex_dotcz"TestFBLAS1Simple.test_complex_dotc   s>     	FAqx.Ay.* =uE		Fr6   c                    dD ]@  }t        t        |dz   d       }|t         |g d      t        j                  d             B dD ]@  }t        t        |dz   d       }|t         |g d      t        j                  d             B y )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*tyy}=		>
 ( 	BAqx.Ay. 1499R=A		Br6   c                 B   dD ]0  }t        t        |dz   d       }|t         |dg d      g d       2 dD ]0  }t        t        |dz   d       }|t         |dg d      g d	       2 d
D ]0  }t        t        |dz   d       }|t         |dg d      g d       2 y )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Aqx.Ay%a:&6D		E
  	PAqx.Ay%aN&;=NO		P
  	NAqx.Ay%a>&:<LM		Nr6   c                 ,   dD ]E  }t        t        |dz   d       }|g dg d}} |||      \  }}t        ||       t        ||       G dD ]E  }t        t        |dz   d       }|g dg d}} |||      \  }}t        ||       t        ||       G y )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jqAq!WFB%b!,%b!,	-  	-Aqx.Ay}qAq!WFB%b!,%b!,	-r6   c                     dD ],  }t        t        d|z   dz         }t         |g d      d       . dD ],  }t        t        d|z   dz         }t         |g d      d       . y )NrD   iamax)r   rb   rG   rF   rO   )y      @      @r   )rQ   r_   r   rR   s      r4   	test_amaxzTestFBLAS1Simple.test_amax   sg     	+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   s9    6
N
7>EF
B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y)TestFBLAS2Simplec           
      H   dD ]L  }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       N dD ]L  }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       N y )NrD   gemvrG   ri   rI   rO   rn   ro         H      B              @      H      5r^   rR   s      r4   	test_gemvzTestFBLAS2Simple.test_gemv   s     	HAqx.Ay%aQC52$&7#?%aQC52$A3&?#G	H  	1Aqx.Ay%adVHrd&;gYG%adVHrdAt&D'.i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 ]X  }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       Z dD ]_  }dD ]X  }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       Z a y )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Aqw-Ay%aAq6Aq6&:aVaV<LM%a9q!f&=()1vBx"b&BD &aAq6Aq6,-q6Aq6*:'<?@!fq"g=NP		P  	DAqx.Ay%aB7QF&;(*Bx!Q&8:%aL2r(&C()1vBx"b&BD	D  	HA' HE1T6409)!AAwA*?,.8aV*<>)!A|b"X*F,-q6B8b"X*FHH	Hr6   c                 x   t        j                  ddd      }t        j                  |d d t         j                  f   |z        }t        j                  |d d dt         j                  f   |d d d   z        }t        j                  dddd	
      }t        j                  ddd      j                  d      }t        j                  |d d t         j                  f   |z        }t        j                  |d d dt         j                  f   |d d d   z        }t        j                  |d d t         j                  f   |j                         z        }t        j                  |d d dt         j                  f   |d d d   j                         z        }	t         j                  t        j                  d      |t        j                  d      f   j                         }
t        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                  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              y ))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  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<=wwqBJJ'!&&(23wwq2rzz!12QttW\\^CDEE"((1+q"((1+-.4464$/ 	NGAtqw-AyAc1It$7Ac1D1466EAc111:DtLAc12A;(t5 Sc3?A#qA40AAt$/#qAAAQJAqvD1)QQQ7)QQQ7)QQR8)QQ"5)QQ!4)QQa8)QQ"((632LM3	N6 4$/ 	NGAtqw-AyAc1It$7Ac1D1466EAc111:DtLAc12A;(t5 Sc3?A#qA40AAt$/#qAAAQJAqvD1)QQQ7)QQQ7)QQR8)QQ"5)QQ!4)QQa8)QQ"((632LM3	N6 4$/ 	NGAtqw-AyAc1It$7Ac1D1466;;=tLAc111:DtLAc12A;(t5 Sc3?A#qA40AAt$/#qAAAQJAqvD1)QQQ7)QQQ7)QQR8)QQ"5)QQ!4)QQa8)QQ"((632LM3	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      !        y )'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   IIa#&IIa#&!RZZ-(1,qBJJ/?!/CCD$B$

"2 3a"g ="#DbD"**$4"5$B$"?!@ A KK3U34$/ "	8GAtqx.AyAc1aL%d;Ac1a1-uRaR!V}4HAc1at4eggDIAc1aaaabI!.Ac1aaaabAN!"1"bqb&M6 Ac1abqrK)6 Sc3?A#q!qd3AAu40#q!q!AAQJAqwT2)QQ:)QQ:)QQ;)QQ:)QQ:)QQ;)QQR8)QQQ7)QQ;)QQHHVS#68C"	8r6   c                    t        j                  ddd      j                  d      }t        j                  ddd      j                  d      }|d d t         j                  f   |j	                         z  |d d t         j                  f   |j	                         z  z   }t        j
                  |      }|d d dt         j                  f   |d d d   j	                         z  }||d d dt         j                  f   |d d d   j	                         z  z  }t        j
                  |      }t         j                  t        j                  d      |t        j                  d      f   j                         }t         j                  t        j                  d      |t        j                  d      f   j                         }t        d	d
dg      D ])  \  }}t        t        |dz   d       }	|	t         |	d||      ||       t         |	d||d      |d dd df   |       t         |	d||d      |j                  j	                         |       t         |	d||dddd      ||       t         |	d||ddddd      |d dd df   |       t         |	d||dddd      ||       t        j                  d|d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             , y )%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~   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4$/ #	8GAtqx.AyAc1aL%d;Ac1a1-uRaR!V}4HAc1at4egglln!%' Ac1aaaaaH!.Ac1aaaaa1M!"1"bqb&M6 Ac1abqrJ)6 Sc3?A#q!qd3AAu40#q!q!AAQJAqwT2)QQ:)QQ:)QQ;)QQ:)QQ:)QQ;)QQR8)QQQ7)QQ;)QQHHVS#68E#	8r6   c                    t         j                  j                  d      }t        t              D ]  \  }}d}d}d}d}t        t        |j                  |dz         t        ||z
  dz
              t        |j                  |dz         t        ||z
  dz
                    }|j                  |      }t        ||z   dz   |f|      }	|d   |	dd df<   |d   |	ddd	f<   |d
   |	dddf<   |d   |	dd df<   |j                  |      j                  |      }
|j                  |      j                  |      } |d       |d      }}t        d|      \  } |||||||	|
||	      }||j                  |
      z  ||z  z   }t        ||        |||||||	||
|d
      }||j                  j                  |      z  ||
z  z   }t        ||        y )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  s   ii##D)#F+ 	.JCAABB

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

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

1$$U+A

1$$U+A(E"I4E"9E:EDQ2"ERQT+Bq!D1H,B%b"-Q2"ERQT4B#dQh.B%b"-=	.r6   c           	         t         j                  j                  d      }t        t              D ]  \  }}d}d}t        ||f|      }t        |dz   |f|      }|j                  |      |t        |      t        |      f<   t        d|dz         D ]?  }|j                  ||z
        }	|	|t        ||z
        t        ||      f<   |	|d|z
  |d f<   A |j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      |dd d f<   |j                  |      j                  |      }
|j                  |      j                  |      } |d       |d      }}|dkD  rt        d	|      \  }nt        d
|      \  } |||||
||      }||j                  |
      z  ||z  z   }t        ||        y )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   ii##D)#F+ 	.JCAAq!fE*A!Qxu-B '*jjmAfQi"#a1 *zz!D&)59&4.&q/12%)2d7DE>"* A7ACCAFFHJJAQBr1uI

1$$U+A

1$$U+A+uQx4EQw&y>&y>"QTBBq!D1H,B%b"-3	.r6   c                 H   t         j                  j                  d      }t        t        t
        z         D ]  \  }}d}|j                  ||f      j                  |      }|dkD  r||j                  ||f      dz  z  }|j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      \  }}|||f   }|j                  |      j                  |      }	|j                  |      j                  |      }
t        d|z        j                  |      }t        d|z        j                  |      } |d       |d      }}|dkD  rt        d|	      \  }nt        d
|	      \  } |||||	|
|      }||j                  |	      z  ||
z  z   }t        ||        ||dz
  |||||dd||
      }||d dd df   z  j                  |dd d         ||dd d   z  z   }t        |dd d   |       t        |d   |d           y )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   ii##H-#F>$9: 	1JCA

Aq6"))%0AQwSZZA'**A7ACCAFFHJJA?DAq1a4B

1$$U+A

1$$U+A1Q3K&&u-E1I$$U+E+uQx4EQw&y>&y>2adCBq!D1H,B%b"- !5tu"1116B!CRC"H+%**5A;7$qt!t:LLB%bAh31uQx09	1r6   c                    t         j                  j                  d      }t        t        t
        z         D ]  \  }}d}|j                  ||f      j                  |      }|dkD  r||j                  ||f      dz  z  }|j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      \  }}|||f   }|j                  |      j                  |      }	t	        t
        z   t        |d         d      }
|dkD  rCt        d|      \  }|
|	d d d f   j                  |	d d d f   j                               z  |z   }n4t        d	|      \  }|
|	d d d f   j                  |	d d d f         z  |z   } |||
||	
      }t        d|      }||||f<   |dkD  r|j                         n||||f<   t        ||        y )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   ii##D)#F>$9: 	/JCA

Aq6"))%0AQwSZZA'**A7ACCAFFHJJA?DAq1a4B

1$$U+AN*CQK8=EQw&xu=Qq$wZ^^AdAgJOO,=>>B&xu=Qq$wZ^^AdAgJ77!;23Be,CC1I%(1W	"C1I%c2./	/r6   c                    t         j                  j                  d      }t        t              D ]  \  }}d}|j                  ||f      j                  |      }|dkD  r||j                  ||f      dz  z  }|j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      \  }}|||f   }|j                  |      j                  |      }	|j                  |      j                  |      }
 |d      }|dkD  rt        d|      \  }nt        d|      \  }|j                         |	d d d f   j                  |
d d d f   j                               z  }||z   |j                         j                  z   } ||||	|
|	      }t        d
|      }||||f<   |g d   j                         |g dg df<   t        ||        y )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   ii##D)#F+ 	/JCA

Aq6"))%0AQwSZZA'**A7ACCAFFHJJA?DAq1a4B

1$$U+A

1$$U+A!HEQw&y>&y>

qDz~~aajoo.?@@AQ#B!qR8Be,CC1I(*9(:(:(<C	9$%%c2.1	/r6   c                 ^   t         j                  j                  d      }t        t              D ]  \  }}d}d}|j                  |      j                  |      }t        ||f|      }t        |dz         D ]1  }|j                  ||z
        |t        ||z
        t        ||      f<   3 |dkD  rI|t        |      xx   d|j                  |dz   |z  ||dz   z  dz  z
        j                  |      z  z  cc<   t        |dz   |f|      }	t        |dz         D ]  }
t        ||
      |	|
 dz
  |
d f<    t        d	|      \  } |||	|
      }|j                  |      }t        ||        |||	|d      } |d      |t        |      t        |      f<   |j                  |      }t        ||        |||	|dd      }|j                  j                  |      }t        ||        |||	|dd      }|j                         j                  j                  |      }t        ||        y )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   ii##D)#F+ "	.JCAA

1$$U+Aq!fE*AQqSz E36::ae3D&3-Q/0E Qw'!*cjj!A#q!QqS'1*1E&F&M&Me&T!TT !Qxu-BQqSz 2#'S>C4634< 2"9E:EDR1%BqB%b"-R11-B&+AhAfQi"#qB%b"-R11A6BB%b"-R11A6B"B%b"-E"	.r6   c                 6   t         j                  j                  d      }t        t              D ]  \  }}d}d}|j                  |      j                  |      }t        ||f|      }t        |dz         D ]1  }|j                  ||z
        |t        ||z
        t        ||      f<   3 |dkD  rI|t        |      xx   d|j                  |dz   |z  ||dz   z  dz  z
        j                  |      z  z  cc<   t        |dz   |f|      }	t        |dz         D ]  }
t        ||
      |	|
 dz
  |
d f<    t        d	|      \  } |||	|
      }t        ||      }t        ||        |||	|d      } |d      |t        |      t        |      f<   t        ||      }t        ||        |||	|dd      }t        |j                  |      }t        ||        |||	|dd      }t        |j                         j                  |      }t        ||        y )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   ii##D)#F+ "	.JCAA

1$$U+Aq!fE*AQqSz E36::ae3D&3-Q/0E Qw'!*cjj!A#q!QqS'1*1E&F&M&Me&T!TT !Qxu-BQqSz 2#'S>C4634< 2"9E:EDR1%Bq!B%b"-R11-B&+AhAfQi"#q!B%b"-R11A6BqssAB%b"-R11A6Bqvvxzz1%B%b"-E"	.r6   c                 v   t         j                  j                  d      }t        t              D ]  \  }}d}|j                  |      j                  |      }|dk  rt        |j                  ||f            }n3t        |j                  ||f      |j                  ||f      dz  z         }t        |      \  }}|||f   }	t        d|      \  }
 |
||	|      }|j                  |      }t        ||        |
||	|d	      } |d      |t        |      t        |      f<   |j                  |      }t        ||        |
||	|dd
      }|j                  j                  |      }t        ||        |
||	|dd
      }|j                         j                  j                  |      }t        ||        y )Nr   r   r    r   )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   ii##D)#F+ 	.JCA

1$$U+AQwQF+,QF+cjj!Q.@.CCD  ?DAq1a4B"9E:EDbA&BqB%b"-bAA.B&+AhAfQi"#qB%b"-bAAQ7BB%b"-bAAQ7B"B%b"-;	.r6   c                 j   t         j                  j                  d      }t        t              D ]  \  }}d}|j                  |      j                  |      }|dk  rt        |j                  ||f            }n3t        |j                  ||f      |j                  ||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                         j                  |      }t        ||        y )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   ii##D)#F+ 	.JCA

1$$U+AQwQF+,QF+cjj!Q.@.CCDQKA?DAq1a4B"9E:EDbA&Bq!B%b"-bAA.B&+AhAfQi"#q!B%b"-bAAQ7BqssAB%b"-bAAQ7Bqvvxzz1%B%b"-;	.r6   c                 >   t         j                  j                  d      }t        t              D ]k  \  }}d}|j                  ||f      t        |      z   j                  |      }|j                  d      j                  |      }t        d|      \  } |||      }t        |      j                  |      }	t        ||	        |||d      } |d      |t        |      t        |      f<   t        |      j                  |      }	t        ||	        |||dd      }t        |      j                  j                  |      }	t        ||	        |||dd	      }t        |      j                         j                  j                  |      }	t        ||	       n y )
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  sS   ii##D)#F+ 	.JCAQF#CF*2259A

1$$U+A"9E:EDQBaQB%b"-QQ'B&+AhAfQi"#aQB%b"-QQa0Baq!B%b"-QQa0Ba!!%%a(B%b"-+	.r6   c                 n   t         j                  j                  d      }t        t              D ]  \  }}d}|j                  ||f      t        |      z   j                  |      }|j                  |      j                  |      }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                         j                  |      }	t        ||	        y )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  ss   ii##D)#F+ 	.JCAQF#CF*2259A

1$$U+A"9E:EDQBtAw"B%b"-Qa(BtAw"B%b"-QQ'B&+AhAfQi"#tAw"B%b"-QQa0BtAwyy!$B%b"-QQa0BtAw||~''+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      sy    1" [[H H@^N@+8Z08d .D.:1@/6/8$.L$.L.B.B.2.r6   r   c                       e Zd Zd Zy)TestFBLAS3Simplec           
      D   dD ]K  }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       M dD ]K  }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       M y )NrD   r)   rG   ri   r   rI   r   rO   rn   ro   r   r   r   r^   rR   s      r4   	test_gemmzTestFBLAS3Simple.test_gemm'  s     	FAqx.Ay%aA3ow?%aA3a!&=uE	F  	OAqx.Ay%aTFRD&9WI;G%aTFRD!bT&BWIN	Or6   N)rW   rX   rY   rA  rZ   r6   r4   r?  r?  %  s    Or6   r?  c              #   P   K   |D ]  }t        t        || z   d      }||  yw)z;Just a helper: return a specified BLAS function w/typecode.N)rQ   r_   )r   psrT   r<   s       r4   	_get_funcrD  6  s4      E1T64(9	s   $&c                   $    e Zd Zd Zd Zd Zd Zy)TestBLAS3Symmc                     t        j                  ddgddgg      | _        t        j                  g dg dg      | _        t        j                  d      | _        t        j                  g dg dg      | _        y )	Nr   r           )r   rH        @)rH        r   )r    rG   )r   rJ  g       @)rI  rH  g      "@)r,   arrayrK   r   r   r+   trS   s    r4   setup_methodzTestBLAS3Symm.setup_methodA  sg    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                          y )Nsymmr   rK   r   r+   r   r   rF   rK   r   r   r+   r   r   )rK   r   sider+   r   r   )rD  rK   r   r+   r   rL  r   rS   r<   ress      r4   	test_symmzTestBLAS3Symm.test_symmJ  s    6" 		5Adff$&&DC%c4662dffhh$&&TVV2BOC%c4662dffqDFFHH2'C%c466884		5r6   c           	          t        t        dd       }|+t        t        |fi | j                  | j
                  ddd y y )NdsymmrF   )rK   r   r   rS  )rQ   r_   r   r   rK   r   rS   r<   s     r4   test_summ_wrong_sidez"TestBLAS3Symm.test_summ_wrong_sideV  sD    E7D)=)Q CTVV45q+B C r6   c                 b   t        t        dd      }| || j                  | j                  | j                  dd      }t        j                  || j                        sJ  || j                  | j                  d| j                  dd      }t        j                  || j                        rJ yy)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.
        rX  Nr   rQ  rF   rR  )rQ   r_   rK   r   r+   r,   allcloserL  rT  s      r4   test_symm_wrong_uploz"TestBLAS3Symm.test_symm_wrong_uplo^  s    
 E7D)=dff$&&DC;;sDFF+++dffa466"MC{{3//// r6   N)rW   rX   rY   rN  rV  rZ  r]  rZ   r6   r4   rF  rF  ?  s    *
5C0r6   rF  c                       e Zd Zd Zd Zd Zy)TestBLAS3Syrkc                     t        j                  ddgddgddgg      | _        t        j                  g dg dg dg      | _        t        j                  d	d
gd
dgg      | _        y )Nr   rH         r   rI  )r   rH  r   )rH        @      )r   rc        *@      @      @rd  )r,   rK  rK   rL  ttrM  s    r4   rN  zTestBLAS3Syrk.setup_methodm  sn    B898% & <()+ , ((RHI' (r6   c                    t        d      D ]s  } || 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                               v y )Nsyrkr   rK   r   rF   )rK   r   r   )rK   r   r   r+   )rK   r   r   )
rD  rK   r   r,   r   rL  r   r   shaperg  rS   r<   r+   c0s       r4   	test_syrkzTestBLAS3Syrk.test_syrkw  s    6" 	DADFF"%A%bggaj"''$&&/BDFF"A.A%bggaj"''$&&/B&BDFF"24A%bggaj"''$&&)2DEDFF"A.A%bggaj"''$''2BC	Dr6   c           	          t        t        dd       }|3t        t        |fi | j                  dt        j                  d      d y y )Ndsyrkr   )rI   rc   )rK   r   r+   )rQ   r_   r   r   rK   r,   r   rY  s     r4   test_syrk_wrong_czTestBLAS3Syrk.test_syrk_wrong_c  sF    E7D)=)Q B02+A B r6   N)rW   rX   rY   rN  rn  rq  rZ   r6   r4   r_  r_  l  s    (D$Br6   r_  c                       e Zd Zd Zd Zd Zy)TestBLAS3Syr2kc                    t        j                  ddgddgddgg      | _        t        j                  ddgddgddgg      | _        t        j                  g dg dg d	g      | _        t        j                  ddgdd
gg      | _        y )Nr   rH  ra  r   rI  r   )rH  rJ  rI  )rJ  rH  rH  )rI  rH  rf  r   )r,   rK  rK   r   rL  rg  rM  s    r4   rN  zTestBLAS3Syr2k.setup_method  s    B898% & B88r7$ % =(') * ((RHG% &r6   c                 `   t        d      D ]  } || j                  | j                  d      }t        t	        j
                  |      t	        j
                  | j                                || j                  | j                  dd      }t        t	        j                  |      t	        j                  | j                               t	        j                  | j                  j                        } || j                  | j                  dd|      }t        t	        j
                  |      t	        j
                  | j                  |z                 || j                  | j                  dd      }t        t	        j
                  |      t	        j
                  | j                                y )Nsyr2kr   rK   r   r   rF   )rK   r   r   r   )rK   r   r   r   r+   )rK   r   r   r   )rD  rK   r   r   r,   r   rL  r   r   rk  rg  rl  s       r4   
test_syr2kzTestBLAS3Syr2k.test_syr2k  s   7# 	DADFFdffB/A%bggaj"''$&&/BDFFdffBa8A%bggaj"''$&&/B&BDFFdffBR2>A%bggaj"''$&&)2DEDFFdffBa8A%bggaj"''$''2BC	Dr6   c           
          t        t        dd       }|>t        t        |fi | j                  | j
                  dt        j                  d      d y y )Ndsyr2kr   )r8  rc   )rK   r   r   r+   )rQ   r_   r   r   rK   r   r,   r   rY  s     r4   test_syr2k_wrong_cz!TestBLAS3Syr2k.test_syr2k_wrong_c  sO    E8T*=)Q D0446020A+C D r6   N)rW   rX   rY   rN  rx  r{  rZ   r6   r4   rs  rs    s    &D Dr6   rs  c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSyHez2Quick and simple tests for (zc)-symm, syrk, syr2k.c                 D    t        j                  ddgddgg      | _        y )NrH  y             r   )r,   rK  sigma_yrM  s    r4   rN  zTestSyHe.setup_method  s$    xx"d"%r!, -r6   c                     t        dd      D ]U  } || j                  | j                  d      }t        t        j                  |      t        j
                  ddg             W y )NrP  zcr   rw  rF   rH   rD  r  r   r,   r   r   rT  s      r4   test_symm_zczTestSyHe.test_symm_zc  sO    64( 	FAdlldll"=C%bggclBGGQG4DE	Fr6   c                     t        dd      D ]U  } || j                  | j                  d      }t        t        j                  |      t        j
                  ddg             W y )Nhemmr  r   rw  rF   r  rT  s      r4   test_hemm_zczTestSyHe.test_hemm_zc  sN    64( 	EAdlldll"=C%bggclBGGQFOD	Er6   c                     t        dd      D ]J  } || j                  d      }t        t        j                  |      t        j
                  ddg             L y )Nri  r  r   rj  rH   r  rT  s      r4   test_syrk_zrzTestSyHe.test_syrk_zr  sI    64( 	GAdll"-C%bggclBGGRH4EF	Gr6   c                     t        dd      D ]J  } || j                  d      }t        t        j                  |      t        j
                  ddg             L y )Nherkr  r   rj  rF   r  rT  s      r4   test_herk_zrzTestSyHe.test_herk_zr  sH    64( 	EAdll"-C%bggclBGGQFOD	Er6   c           	          t        dd      D ]X  } || j                  | j                  d      }t        t        j                  |      dt        j
                  ddg      z         Z y )Nrv  r  r   rw  r   rH   r  rT  s      r4   test_syr2k_zrzTestSyHe.test_syr2k_zr  sT    7D) 	JAdlldll"=C%bggclBrwwBx7H4HI	Jr6   c           	          t        dd      D ]X  } || j                  | j                  d      }t        t        j                  |      dt        j
                  ddg      z         Z y )Nher2kr  r   rw  r   rF   r  rT  s      r4   test_her2k_zrzTestSyHe.test_her2k_zr  sS    7D) 	HAdlldll"=C%bggclBrww1v4FG	Hr6   N)rW   rX   rY   __doc__rN  r  r  r  r  r  r  rZ   r6   r4   r}  r}    s.    <-FEG
E
J
Hr6   r}  c                   l    e Zd ZdZd Zej                  j                  de      d        Z	d Z
d Zd Zy)	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
      | _        y )Nr   r   ra  rI  rb  rJ  re  rf  ra  )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,   rK  rK   r   a2b2rM  s    r4   rN  zTestTRMM.setup_method  s    B:9& '=(* + ((L(((* 256 ((QFQFQFQFQGD!$&r6   dtype_c           	         t        d|      }t        t        |d| j                  | j                          |d| j                  j                  |      | j                  j                  |      d      }| j                  j                  d   }t        || j                  | j                  d |d |f   z  ddt        j                  |      j                  z         y )	Ntrmmr*   r   rF   )rS  rH  d   )r   atol)r   r   r   r  r  r   rk  r   r,   finfoeps)rS   r  r  rU  r   s        r4   	test_sidezTestTRMM.test_side  s    fF3isDGGTWW=3v.v0FGGMM!TWWtwwrr2A2v6R &!1!5!55	7r6   c                     t        t        dd       }|F |d| j                  | j                        }t	        j
                  g dg dg      }t        ||       y y )Ndtrmmr   )rd  g      0@g      r  rQ   r_   rK   r   r,   rK  r   rS   r<   resultexpecteds       r4   test_abzTestTRMM.test_ab  sR    E7D)=r466466*Fxx!.!0 1H%fh7 r6   c                     t        t        dd       }|H |d| j                  | j                  d      }t	        j
                  g dg dg      }t        ||       y y )Nr  r   Tr   r  )rJ  ra  rH  r  r  s       r4   test_ab_lowerzTestTRMM.test_ab_lower  sT    E7D)=r4664666Fxx!/!1 2H%fh7	 r6   c                 R   t        t        dd       }|dD ]  }| j                  j                         } |d| j                  ||      }t        |j                  j                  du xr t        j                  ||      du        t        || j                          t        j                  | j                  j                               } |d| j                  |d      }t        |j                  j                  du xr t        j                  ||      du        t        ||       y y )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)=' ,2tvvu&A00E9 D++E6:eCEUDFF+, %%dffkkm4Er4665d;FEKK,,4 ?''v6$>@%eV4 r6   N)rW   rX   rY   r  rN  r;  r<  parametrizer   r  r  r  r  rZ   r6   r4   r  r    s>    +& [[Xv.7 /7885r6   r  c            	      z   t         j                  j                  d      } t        t              D ]  \  }}t        j
                  |      j                  dz  }t        d|      \  }| j                  d      j                  |      }| j                  d      j                  |      } |d      }t        t        ||||       t        t        |||j                  |       d}d	}	 |d
      }|dk  r | j                  |	|	f      t        |	      z   }n6| j                  |	|	f      | j                  |	|	f      dz  z   t        |	      z   }|j                  |      }t        |      }
t        |      }| j                  |	|f      j                  |      }| j                  ||	f      j                  |      } ||||      }t        |j                   |j                          t#        |
||z        }t%        |||        ||||d      }t#        |
j                  ||z        }t%        |||        ||||d      }t#        |
j'                         j                  ||z        }t%        |||        ||||d      } |d      |
t)        |	      t)        |	      f<   t#        |
||z        }t%        |||        ||||dd      }t#        |
j'                         j                  ||j'                         j                  z        }t%        ||j'                         j                  |        ||||ddd      } |d      |t)        |	      t)        |	      f<   t#        |j'                         j                  ||j'                         j                  z        }t%        ||j'                         j                  |        y )Nr   i  )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   rS  )r   rK   r   r   rS  r   )r,   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   rk  r   r   r   r   )r   r   r"   tolr   r   Br   r   r   AuAlB1B2r   x2s                   r4   	test_trsmr  !  s   
))


%C' 13
Uhhuo!!$&y6 JJv%%e,JJv%%e,aiua3iuacc15d7

Aq6"SV+AQF#cjj!Q&8&;;s1vEAHHUO!W!WZZA&&u-ZZA&&u-b)RXXrxx(2uRx BS)b!4244r"BS)b!42779;;b)BS)bq1#(86!9fQi 2uRx BS)bqq92779;;bggikk 12BGGIKKc2bqqB#(86!9fQi 2779;;bggikk 12BGGIKKc2c13r6   Fzgh-16930)runreasonc                      t        j                  dd      } t        j                  j                  j                  | ddd      }t        j                  d      }t        ||       y )Nr   rM   rI   rG   rH   i  )	r,   repeatscipylinalgblasdnrm2r~   r   r   )r   actualr  s      r4   test_gh_169309r  W  sK     			"aA\\$$Q1b1Fyy~HFH%r6   c                      t        j                  dd      } d}t        t        j                        5  t
        j                  j                  j                  | dd|       d d d        y # 1 sw Y   y xY w)Nr   rM   rH   rI   rG   )	r,   r  r   r_   __fblas_errorr  r  r  r  )r   r   s     r4   test_dnrm2_neg_incxr  `  sZ     			"aAD	u**	+ /1a./ / /s   -A((A1)sdzc):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?  rD  rF  r_  rs  r}  r  r  r<  xfailr  r  rZ   r6   r4   <module>r     s:  
    G G *      I I,  Z(	~	%$#N6 6"r. r.lK	. K	.\O O"*0 *0Z!B !BJ$D $DP%H %HP=5 =5@33l u$  &&&&/U"  Es   C9 9DD