
    tKg                        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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      Z0d#dZ1 G d d      Z2 G d d      Z3 G d d      Z4 G d d      Z5 G d d      Z6d Z7ejp                  js                  dd       d!        Z:d" Z;y# 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)randseed)_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      `/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/linalg/tests/test_blas.pytest_get_blas_funcsr7      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-   )r;   dotcdotu)r   r.   r   r0   r
   )fghs      r6   test_get_blas_funcs_aliasrA   E   sg    />DAq::::4BJJGGAq!6M66M6r8   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"   rI      a)   	      cz)rH                  @rI   )rN   y            $@rP   )getattrr(   r   selfpr>   s      r6   	test_axpyzTestCBLAS1Simple.test_axpyR   x    Aqx.Ay%a	:&C&02	  Aqx.Ay%a
J!&D&46	 r8   N)__name__
__module____qualname__rW    r8   r6   rC   rC   P   s    6r8   rC   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 rE   rS   fblasr   rT   s      r6   rW   zTestFBLAS1Simple.test_axpyc   rX   r8   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 )NrF   copy)rI      rK      rI   rQ   )rI                 @y      @      @r`   rT   s      r6   	test_copyzTestFBLAS1Simple.test_copyq   sz    Aqx.Ay%a	A3q5&99E	 
 Aqx.Ay%as1u&=}M	 r8   c                     dD ]-  }t        t        |dz   d       }|t         |g d      d       / dD ]-  }t        t        |dz   d       }|t         |g d      d       / y )NrF   asumrI   rK      )scdz              @rk         @         rS   ra   r   rT   s      r6   	test_asumzTestFBLAS1Simple.test_asum}   si    Aqx.Ay*r2	 
 Aqx.Ay. 126	 r8   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrF   r;   rj   )r"   rK   rH   rs   rT   s      r6   test_dotzTestFBLAS1Simple.test_dot   s7    Aqw-Ay*i 8"=	 r8   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrQ   r=   ro   r"   rI   rH   y      "       @rs   rT   s      r6   test_complex_dotuz"TestFBLAS1Simple.test_complex_dotu   s7    Aqx.Ay.) <eD	 r8   c                 n    dD ]0  }t        t        |dz   d       }|t         |g dg d      d       2 y )NrQ   r<   ro   r"   rp   rH   y      @      ,rs   rT   s      r6   test_complex_dotcz"TestFBLAS1Simple.test_complex_dotc   s7    Aqx.Ay.* =uE	 r8   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 )NrF   r:   rj   2   )r-   r'   rm   rn   ro   )rS   ra   r   mathsqrtrT   s      r6   	test_nrm2zTestFBLAS1Simple.test_nrm2   sy    Aqx.Ay*tyy}=	 
 (Aqx.Ay. 1499R=A	 (r8   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 )NrF   scalr"   rj   )   i
   rQ   rp   ro   )rv   y             (y      (@      "@)cszdrI   )y              "@iy      "@      (r`   rT   s      r6   	test_scalzTestFBLAS1Simple.test_scal   s    Aqx.Ay%a:&6D	 
 Aqx.Ay%aN&;=NO	 
 Aqx.Ay%a>&:<LM	 r8   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 )NrF   swapry   )rI   rN   rQ   r|   )r   rI   y      @      r`   )rU   rV   r>   xyx1y1s          r6   	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!, r8   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 )NrF   iamax)r   rd   rI   rH   rQ   )y      @      @r   )rS   ra   r   rT   s      r6   	test_amaxzTestFBLAS1Simple.test_amax   s]    As1uV|,A:*  As1uV|,A=)1- r8   N)rY   rZ   r[   rW   rg   rt   rw   rz   r}   r   r   r   r   r\   r8   r6   r^   r^   a   s9    6
N
7>EF
BN"-$.r8   r^   c                   l    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 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 )NrF   gemvrI   rk   rK   rQ   rp   rq         H      B              @      H      5r`   rT   s      r6   	test_gemvzTestFBLAS2Simple.test_gemv   s    Aqx.Ay%aQC52$&7#?%aQC52$A3&?#G  Aqx.Ay%adVHrd&;gYG%adVHrdAt&D'.i1 r8   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 )NrF   gerrH   r"   rI   rd   r   re   rG   rl      rP      rL   rO   rQ   geru              ?rp   rf   r   )r   rR   rp   )r   gercr`   )rU   rV   r>   names       r6   test_gerzTestFBLAS2Simple.test_ger   s   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  Aqx.Ay%aB7QF&;(*Bx!Q&8:%aL2r(&C()1vBx"b&BD  A'E1T6409)!AAwA*?,.8aV*<>)!A|b"X*F,-q6B8b"X*FH ( r8   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 ))NrH   rK   r*   r,   rJ   r         !@   FendpointrO   Drd   rF   Hz>+=syr      ?rtolTlowerr"   )incxoffxnr   rd   rd   sr>   r#   rM   overwrite_a       @rL   rI   r   r   r   r!   rQ   r-   her)r.   r   r   newaxislinspaceviewconjc_r   ravelziprS   ra   r   Tr   assert_raises	Exception)rU   r   resxresx_reverser   r'   reszresz_reverserehzrehz_reversewrV   r   r>   rM   bs                   r6   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$/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 06 4$/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 06 4$/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 0r8   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 )'NrH   rK   r*   r,   rO   rJ   r   r   r   Fr   rF   r   r   syr2r   r   rI   r   Tr   r"   r   r   r   incyoffyr   r   r   r   r   r   r   r   r>   r#   r   r   rL   r   r   r   r   r!   )r.   r   r   r   r   r   rS   ra   r   r   r   r   r   r   )rU   r   r   resxyresxy_reverseqrV   r   r>   rM   r   s              r6   	test_syr2zTestFBLAS2Simple.test_syr2h  s   IIa#&IIa#&!RZZ-(1,qBJJ/?!/CCD$B$

"2 3a"g ="#DbD"**$4"5$B$"?!@ A KK3U34$/GAt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 0r8   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 )%NrH   rO   r*   r,   r   r   rJ   rd   rQ   r   r   her2r   r   rI   r   Tr   r   r   r   r   r-   r#   r   r   rL   r   r   rK   r   r   r   r   r"   r!   )r.   r   r   r   r   r   r   r   r   r   rS   ra   r   r   r   r   r   )rU   r   r   r   r   uvrV   r   r>   rM   r   s               r6   	test_her2zTestFBLAS2Simple.test_her2  sy   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$/GAt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 0r8   c                 L   t        d       t        t              D ]  \  }}d}d}d}d}t        t	        t        |dz         t        ||z
  dz
              t	        t        |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<   t        |      j                  |      }	t        |      j                  |      }
 |d       |d      }}t        d|      \  } ||||||||	|
|	      }||j                  |	      z  ||
z  z   }t        ||        ||||||||
|	|d
      }||j                  j                  |
      z  ||	z  z   }t        ||        y )N  rN   rK   rH   r"   r,   )r   r   )r   rH   r   )r   r"   r   )rH   r   rI   rd   r   )gbmv)	mr   kuklalpharM   r   r   beta)
r   r   r   r   r   rM   r   r   r   trans)r   	enumerateDTYPESr   r   r   r   astyper   r;   r   r   )rU   indr$   r   r   r   r   AAbr   r   r   r   funcr   y2s                   r6   	test_gbmvzTestFBLAS2Simple.test_gbmv  s   T
#F+JCAABBRT
E!B$q&M:RT
E!B$q&M:<AA2a|51B $Bq"1"uI4Bq!A#vJ4Bq!A#vJ$Bq"1"uIQu%AQu%A(E"I4E"9E:EDQ2"ERQT+Bq!D1H,B%b"-Q2"ERQT4B#dQh.B%b"-= ,r8   c           	      P   t        d       t        t              D ]  \  }}d}d}t        ||f|      }t        |dz   |f|      }t	        |      |t        |      t        |      f<   t        d|dz         D ]9  }t	        ||z
        }||t        ||z
        t        ||      f<   ||d|z
  |d f<   ; |j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      |dd d f<   t	        |      j                  |      }	t	        |      j                  |      }
 |d       |d      }}|dkD  rt        d	|      \  }nt        d
|      \  } |||||	|
|      }||j                  |	      z  ||
z  z   }t        ||        y )Nr   r   r"   r,   rH   rJ         ?rI   )hbmv)sbmv)kr   rM   r   r   r   )r   r   r   r   r   r   ranger   r   r   r   r   r;   r   )rU   r   r$   r   r   r   r   ind2tempr   r   r   r   r   r   r   s                   r6   test_sbmv_hbmvzTestFBLAS2Simple.test_sbmv_hbmv  s   T
#F+JCAAq!fE*A!Qxu-B '+1gAfQi"#a1AdF|59&4.&q/12%)2d7DE>" & A7ACCAFFHJJAQBr1uIQu%AQu%A+uQx4EQw&y>&y>"QTBBq!D1H,B%b"-3 ,r8   c                    t        d       t        t        t        z         D ]  \  }}d}t	        ||      j                  |      }|dkD  r|t	        ||      dz  z  }|j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      \  }}|||f   }t	        |      j                  |      }t	        |      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 )Nr   rI   rH   r   rd   r"   r   )hpmvr,   )spmv)r   r   apr   r   r   )
r   r   r   r   r   r  r   r   r   r   rJ   )r   r   r   COMPLEX_DTYPESr   r   r   r   r   r   r   r   r;   r   r   )rU   r   r$   r   r   r-   rApr   r   xlongylongr   r   r   r   r   s                    r6   test_spmv_hpmvzTestFBLAS2Simple.test_spmv_hpmv  s   T
#F>$9:JCAQ
!!%(AQwT!QZ]"A7ACCAFFHJJA?DAq1a4BQu%AQ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 ;r8   c                 j   t        d       t        t        t        z         D ]  \  }}d}t	        ||      j                  |      }|dkD  r|t	        ||      dz  z  }|j                  |      }|dk  r||j                  z   n||j                         j                  z   }t        |      \  }}|||f   }t	        |      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   rI   rH   r   rd   g      @)hprr,   )spr)r   r   r  r   rI   rI   )r   r   r   r  r   r   r   r   r   r   r   r;   r   r   )rU   r   r$   r   r   r-   r	  r
  r   r   r   r   r   y1fs                 r6   test_spr_hprzTestFBLAS2Simple.test_spr_hpr&  s   T
#F>$9:JCAQ
!!%(AQwT!QZ]"A7ACCAFFHJJA?DAq1a4BQ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./ ;r8   c                 t   t        d       t        t              D ]  \  }}d}t        ||      j	                  |      }|dkD  r|t        ||      dz  z  }|j	                  |      }|dk  r||j
                  z   n||j                         j
                  z   }t        |      \  }}|||f   }t        |      j	                  |      }t        |      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   rI   rH   r   r"   )hpr2r,   )spr2)r   r   r   r   r  r  )rH   rI   rd   )rH   r"   r"   )r   r   rH   )r   r   r   r   r   r   r   r   r   r;   r   r   )rU   r   r$   r   r   r-   r	  r
  r   r   r   r   r   r   r   r  s                   r6   test_spr2_hpr2zTestFBLAS2Simple.test_spr2_hpr2A  s   T
#F+JCAQ
!!%(AQwT!QZ]"A7ACCAFFHJJA?DAq1a4BQu%AQ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 ,r8   c                    t        d       t        t              D ]  \  }}d}d}t        |      j	                  |      }t        ||f|      }t        |dz         D ]+  }t        ||z
        |t        ||z
        t        ||      f<   - |dkD  rC|t        |      xx   dt        |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   rI   r,   rH   r   r"   r   )tbmvr   rM   r   r   rM   r   r   r   rM   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r;   r   r   r   rU   r   r$   r   r   r   r   supr   rowr   r   r   s                r6   	test_tbmvzTestFBLAS2Simple.test_tbmv]  s   T
#F+JCAAQu%Aq!fE*AQqSz37#;&3-Q/0 " Qw'!*dAaC7AqsGQJ+?&@&G&G&N!NN !Qxu-BQqSz#'S>C4634<  ""9E:EDR1%BqB%b"-R11-B&+AhAfQi"#qB%b"-R11A6BB%b"-R11A6B"B%b"-E ,r8   c                    t        d       t        t              D ]  \  }}d}d}t        |      j	                  |      }t        ||f|      }t        |dz         D ]+  }t        ||z
        |t        ||z
        t        ||      f<   - |dkD  rC|t        |      xx   dt        |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   rI   r,   rH   r   r"   r  )tbsvr  r  r  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  s                r6   	test_tbsvzTestFBLAS2Simple.test_tbsv  s   T
#F+JCAAQu%Aq!fE*AQqSz37#;&3-Q/0 " Qw'!*dAaC7AqsGQJ+?&@&G&G&N!NN !Qxu-BQqSz#'S>C4634<  ""9E:EDR1%Bq!B%b"-R11-B&+AhAfQi"#q!B%b"-R11A6BqssAB%b"-R11A6Bqvvxzz1%B%b"-E ,r8   c                    t        d       t        t              D ]k  \  }}d}t        |      j	                  |      }|dk  rt        t        ||            n$t        t        ||      t        ||      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        |
|       n y )Nr   r   r"   r   )tpmvr,   r   r  r   rH   r   r  r   r   r   r  r   r   r   )r   r   r   r   r   r   r   r   r;   r   r   r   r   rU   r   r$   r   r   r   r-   r	  r
  r   r   r   s               r6   	test_tpmvzTestFBLAS2Simple.test_tpmv  sU   T
#F+JCAQu%A$'!GT!QZ d1ajaB6N1OA?DAq1a4B"9E:EDbA&BqB%b"-bAA.B&+AhAfQi"#qB%b"-bAAQ7BB%b"-bAAQ7B"B%b"-3 ,r8   c                 
   t        d       t        t              D ]e  \  }}d}t        |      j	                  |      }|dk  rt        t        ||            n$t        t        ||      t        ||      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        |
|       h y )Nr   r   r"   r   )tpsvr,   r'  rH   r(  r)  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*  s               r6   	test_tpsvzTestFBLAS2Simple.test_tpsv  sZ   T
#F+JCAQu%A$'!GT!QZ d1ajaB6N1OA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"-5 ,r8   c                    t        d       t        t              D ]^  \  }}d}t        ||      t	        |      z   j                  |      }t        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        ||       a y )
Nr   rI   )trmvr,   rM   r   rH   rM   r   r   rM   r   r   r   r"   )r   r   r   r   r   r   r   r   r;   r   r   r   r   	rU   r   r$   r   r   r   r   r   r   s	            r6   	test_trmvzTestFBLAS2Simple.test_trmv  s4   T
#F+JCAaCF"**51AQ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"-+ ,r8   c                 ,   t        d       t        t              D ]v  \  }}d}t        ||      t	        |      z   j                  |      }t        |      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 y )Nr      )trsvr,   r1  rH   )rM   r   r   r2  r3  r"   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4  s	            r6   	test_trsvzTestFBLAS2Simple.test_trsv  sT   T
#F+JCAaCF"**51AQ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 ,r8   N)rY   rZ   r[   r   r   r   r   r   r   r  r  r  r  r!  r$  r+  r.  r5  r9  r\   r8   r6   r   r      s]    1H@^N@+8Z08d .D.:1@/6/8$.L$.L.:.<.2.r8   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 )NrF   r+   rI   rk   r   rK   r   rQ   rp   rq   r   r   r   r`   rT   s      r6   	test_gemmzTestFBLAS3Simple.test_gemm  s    Aqx.Ay%aA3ow?%aA3a!&=uE  Aqx.Ay%aTFRD&9WI;G%aTFRD!bT&BWIN r8   N)rY   rZ   r[   r=  r\   r8   r6   r;  r;    s    Or8   r;  c              #   P   K   |D ]  }t        t        || z   d      }||  yw)z;Just a helper: return a specified BLAS function w/typecode.N)rS   ra   )r   psrV   r>   s       r6   	_get_funcr@  ,  s/     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   rD        @)rD        r   )r"   rI   )r   rF  g       @)rE  rD  g      "@)r.   arrayrM   r   r   r-   trU   s    r6   setup_methodzTestBLAS3Symm.setup_method7  sg    B88% &<(* +=') *r8   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   rM   r   r-   r   r   rH   rM   r   r   r-   r   r   )rM   r   sider-   r   r   )r@  rM   r   r-   r   rH  r   rU   r>   ress      r6   	test_symmzTestBLAS3Symm.test_symm@  s    6"Adff$&&DC%c4662dffhh$&&TVV2BOC%c4662dffqDFFHH2'C%c466884 #r8   c           	          t        t        dd       }|+t        t        |fi | j                  | j
                  ddd y y )NdsymmrH   )rM   r   r   rO  )rS   ra   r   r   rM   r   rU   r>   s     r6   test_summ_wrong_sidez"TestBLAS3Symm.test_summ_wrong_sideL  sD    E7D)=)Q CTVV45q+B C r8   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.
        rT  Nr   rM  rH   rN  )rS   ra   rM   r   r-   r.   allcloserH  rP  s      r6   test_symm_wrong_uploz"TestBLAS3Symm.test_symm_wrong_uploT  s    
 E7D)=dff$&&DC;;sDFF+++dffa466"MC{{3//// r8   N)rY   rZ   r[   rJ  rR  rV  rY  r\   r8   r6   rB  rB  5  s    *
5C0r8   rB  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   rD         r   rE  )r   rD  r   )rD        @      )r   r_        *@      @      @r`  )r.   rG  rM   rH  ttrI  s    r6   rJ  zTestBLAS3Syrk.setup_methodc  sn    B898% & <()+ , ((RHI' (r8   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   rM   r   rH   )rM   r   r   )rM   r   r   r-   )rM   r   r   )
r@  rM   r   r.   r   rH  r   r   shaperc  rU   r>   r-   c0s       r6   	test_syrkzTestBLAS3Syrk.test_syrkm  s    6"ADFF"%A%bggaj"''$&&/BDFF"A.A%bggaj"''$&&/B&BDFF"24A%bggaj"''$&&)2DEDFF"A.A%bggaj"''$''2BC #r8   c           	          t        t        dd       }|3t        t        |fi | j                  dt        j                  d      d y y )Ndsyrkr   )rK   re   )rM   r   r-   )rS   ra   r   r   rM   r.   r   rU  s     r6   test_syrk_wrong_czTestBLAS3Syrk.test_syrk_wrong_c  sF    E7D)=)Q B02+A B r8   N)rY   rZ   r[   rJ  rj  rm  r\   r8   r6   r[  r[  b  s    (D$Br8   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   rD  r]  r   rE  r   )rD  rF  rE  )rF  rD  rD  )rE  rD  rb  r   )r.   rG  rM   r   rH  rc  rI  s    r6   rJ  zTestBLAS3Syr2k.setup_method  s    B898% & B88r7$ % =(') * ((RHG% &r8   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   rM   r   r   rH   )rM   r   r   r   )rM   r   r   r   r-   )rM   r   r   r   )r@  rM   r   r   r.   r   rH  r   r   rg  rc  rh  s       r6   
test_syr2kzTestBLAS3Syr2k.test_syr2k  s   7#ADFFdffB/A%bggaj"''$&&/BDFFdffBa8A%bggaj"''$&&/B&BDFFdffBR2>A%bggaj"''$&&)2DEDFFdffBa8A%bggaj"''$''2BC $r8   c           
          t        t        dd       }|>t        t        |fi | j                  | j
                  dt        j                  d      d y y )Ndsyr2kr   )r7  re   )rM   r   r   r-   )rS   ra   r   r   rM   r   r.   r   rU  s     r6   test_syr2k_wrong_cz!TestBLAS3Syr2k.test_syr2k_wrong_c  sO    E8T*=)Q D0446020A+C D r8   N)rY   rZ   r[   rJ  rt  rw  r\   r8   r6   ro  ro    s    &D Dr8   ro  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 )NrD  y             r   )r.   rG  sigma_yrI  s    r6   rJ  zTestSyHe.setup_method  s$    xx"d"%r!, -r8   c                     t        dd      D ]U  } || j                  | j                  d      }t        t        j                  |      t        j
                  ddg             W y )NrL  zcr   rs  rH   rJ   r@  r{  r   r.   r   r   rP  s      r6   test_symm_zczTestSyHe.test_symm_zc  sH    64(Adlldll"=C%bggclBGGQG4DE )r8   c                     t        dd      D ]U  } || j                  | j                  d      }t        t        j                  |      t        j
                  ddg             W y )Nhemmr}  r   rs  rH   r~  rP  s      r6   test_hemm_zczTestSyHe.test_hemm_zc  sG    64(Adlldll"=C%bggclBGGQFOD )r8   c                     t        dd      D ]J  } || j                  d      }t        t        j                  |      t        j
                  ddg             L y )Nre  r}  r   rf  rJ   r~  rP  s      r6   test_syrk_zrzTestSyHe.test_syrk_zr  sB    64(Adll"-C%bggclBGGRH4EF )r8   c                     t        dd      D ]J  } || j                  d      }t        t        j                  |      t        j
                  ddg             L y )Nherkr}  r   rf  rH   r~  rP  s      r6   test_herk_zrzTestSyHe.test_herk_zr  sA    64(Adll"-C%bggclBGGQFOD )r8   c           	          t        dd      D ]X  } || j                  | j                  d      }t        t        j                  |      dt        j
                  ddg      z         Z y )Nrr  r}  r   rs  r   rJ   r~  rP  s      r6   test_syr2k_zrzTestSyHe.test_syr2k_zr  sM    7D)Adlldll"=C%bggclBrwwBx7H4HI *r8   c           	          t        dd      D ]X  } || j                  | j                  d      }t        t        j                  |      dt        j
                  ddg      z         Z y )Nher2kr}  r   rs  r   rH   r~  rP  s      r6   test_her2k_zrzTestSyHe.test_her2k_zr  sL    7D)Adlldll"=C%bggclBrww1v4FG *r8   N)rY   rZ   r[   __doc__rJ  r  r  r  r  r  r  r\   r8   r6   ry  ry    s.    <-FEG
E
J
Hr8   ry  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   r]  rE  r^  rF  ra  rb  r]  )rH   rH   r"   rI   )r   rH   rd   rK   )r   r   rH   r   )r   r   r   rH   r>   )r%   rH   rd   r"   rK   rI   r   rN   re   rO   r   )r.   rG  rM   r   a2b2rI  s    r6   rJ  zTestTRMM.setup_method  s    B:9& '=(* + ((L(((* 256 ((QFQFQFQFQGD!$&r8   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   rH   )rO  rD  d   )r   atol)r   r   r   r  r  r   rg  r   r.   finfoeps)rU   r  r  rQ  r   s        r6   	test_sidezTestTRMM.test_side  s    fF3isDGGTWW=3v.v0FGGMM!TWWtwwrr2A2v6R &!1!5!55	7r8   c                     t        t        dd       }|F |d| j                  | j                        }t	        j
                  g dg dg      }t        ||       y y )Ndtrmmr   )r`  g      0@g      r  rS   ra   rM   r   r.   rG  r   rU   r>   resultexpecteds       r6   test_abzTestTRMM.test_ab  sR    E7D)=r466466*Fxx!.!0 1H%fh7 r8   c                     t        t        dd       }|H |d| j                  | j                  d      }t	        j
                  g dg dg      }t        ||       y y )Nr  r   Tr   r  )rF  r]  rD  r  r  s       r6   test_ab_lowerzTestTRMM.test_ab_lower  sT    E7D)=r4664666Fxx!/!1 2H%fh7	 r8   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)rS   ra   r   rc   rM   r   flagsf_contiguousr.   may_share_memoryr   asfortranarrayr   )rU   r>   overwrbcopyr  s        r6   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 r8   N)rY   rZ   r[   r  rJ  pytestmarkparametrizer   r  r  r  r  r\   r8   r6   r  r    s>    +& [[Xv.7 /7885r8   r  c            	         t        d       t        t              D ]O  \  } }t        j                  |      j
                  dz  }t        d|      \  }t        dd      j                  |      }t        dd      j                  |      } |d      }t        t        ||||       t        t        |||j                  |       d}d	} |d
      }| dk  rt        ||      nt        ||      t        ||      dz  z   t        |      z   }|j                  |      }t        |      }	t        |      }
t        ||      j                  |      }t        ||      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                  |       R y )Nr   i  )trsmr,   rd   rK   rH   re   rN   g      r"   r   )r   rM   r   )r  )r   rM   r   trans_a)r   rM   r   r   )r   rM   r   r   rO  )r   rM   r   r   rO  r   )r   r   r   r.   r  r  r   r   r   r   r   r   r   r   r   r   rg  r   r   r   r   )r   r$   tolr   r   Br   r   r   AuAlB1B2r   x2s                  r6   	test_trsmr    s   J'
Uhhuo!!$&y6 AJe$AJe$aiua3iuacc15d7T!QZQ
T!QZ](Bc!fLHHUO!W!W!QZu%!QZ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2] (r8   Fzgh-16930)runreasonc                      t        j                  dd      } t        j                  j                  j                  | ddd      }t        j                  d      }t        ||       y )Nr   rO   rK   rI   rJ   i  )	r.   repeatscipylinalgblasdnrm2r   r   r   )r   actualr  s      r6   test_gh_169309r  J  sK     			"aA\\$$Q1b1Fyy~HFH%r8   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   rO   rJ   rK   rI   )	r.   r  r   ra   __fblas_errorr  r  r  r  )r   r   s     r6   test_dnrm2_neg_incxr  S  sQ     			"aAD	u**	+1a. 
,	+	+s   -A((A1)sdzc)<r   r  numpyr.   numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   numpy.randomr   r   r  scipy.linalgr   ra   r   r   r   r   r(   ImportErrorREAL_DTYPESr  r   r7   rA   rC   r^   r   r;  r@  rB  r[  ro  ry  r  r  r  xfailr  r  r\   r8   r6   <module>r     s:  
   G G *     $  I I,  Z(	~	%$#N6 6"r. r.lA	. A	.HO O"*0 *0Z!B !BJ$D $DP%H %HP=5 =5@03f u$  &&&&/{!  Es   C= =DD