| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 | // Copyright ©2013 The Gonum Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.//go:generate ./conversions.bashpackage blas// Flag constants indicate Givens transformation H matrix state.type Flag intconst (	Identity    Flag = -2 // H is the identity matrix; no rotation is needed.	Rescaling   Flag = -1 // H specifies rescaling.	OffDiagonal Flag = 0  // Off-diagonal elements of H are non-unit.	Diagonal    Flag = 1  // Diagonal elements of H are non-unit.)// SrotmParams contains Givens transformation parameters returned// by the Float32 Srotm method.type SrotmParams struct {	Flag	H [4]float32 // Column-major 2 by 2 matrix.}// DrotmParams contains Givens transformation parameters returned// by the Float64 Drotm method.type DrotmParams struct {	Flag	H [4]float64 // Column-major 2 by 2 matrix.}// Transpose specifies the transposition operation of a matrix.type Transpose byteconst (	NoTrans   Transpose = 'N'	Trans     Transpose = 'T'	ConjTrans Transpose = 'C')// Uplo specifies whether a matrix is upper or lower triangular.type Uplo byteconst (	Upper Uplo = 'U'	Lower Uplo = 'L'	All   Uplo = 'A')// Diag specifies whether a matrix is unit triangular.type Diag byteconst (	NonUnit Diag = 'N'	Unit    Diag = 'U')// Side specifies from which side a multiplication operation is performed.type Side byteconst (	Left  Side = 'L'	Right Side = 'R')// Float32 implements the single precision real BLAS routines.type Float32 interface {	Float32Level1	Float32Level2	Float32Level3}// Float32Level1 implements the single precision real BLAS Level 1 routines.type Float32Level1 interface {	Sdsdot(n int, alpha float32, x []float32, incX int, y []float32, incY int) float32	Dsdot(n int, x []float32, incX int, y []float32, incY int) float64	Sdot(n int, x []float32, incX int, y []float32, incY int) float32	Snrm2(n int, x []float32, incX int) float32	Sasum(n int, x []float32, incX int) float32	Isamax(n int, x []float32, incX int) int	Sswap(n int, x []float32, incX int, y []float32, incY int)	Scopy(n int, x []float32, incX int, y []float32, incY int)	Saxpy(n int, alpha float32, x []float32, incX int, y []float32, incY int)	Srotg(a, b float32) (c, s, r, z float32)	Srotmg(d1, d2, b1, b2 float32) (p SrotmParams, rd1, rd2, rb1 float32)	Srot(n int, x []float32, incX int, y []float32, incY int, c, s float32)	Srotm(n int, x []float32, incX int, y []float32, incY int, p SrotmParams)	Sscal(n int, alpha float32, x []float32, incX int)}// Float32Level2 implements the single precision real BLAS Level 2 routines.type Float32Level2 interface {	Sgemv(tA Transpose, m, n int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int)	Sgbmv(tA Transpose, m, n, kL, kU int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int)	Strmv(ul Uplo, tA Transpose, d Diag, n int, a []float32, lda int, x []float32, incX int)	Stbmv(ul Uplo, tA Transpose, d Diag, n, k int, a []float32, lda int, x []float32, incX int)	Stpmv(ul Uplo, tA Transpose, d Diag, n int, ap []float32, x []float32, incX int)	Strsv(ul Uplo, tA Transpose, d Diag, n int, a []float32, lda int, x []float32, incX int)	Stbsv(ul Uplo, tA Transpose, d Diag, n, k int, a []float32, lda int, x []float32, incX int)	Stpsv(ul Uplo, tA Transpose, d Diag, n int, ap []float32, x []float32, incX int)	Ssymv(ul Uplo, n int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int)	Ssbmv(ul Uplo, n, k int, alpha float32, a []float32, lda int, x []float32, incX int, beta float32, y []float32, incY int)	Sspmv(ul Uplo, n int, alpha float32, ap []float32, x []float32, incX int, beta float32, y []float32, incY int)	Sger(m, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32, lda int)	Ssyr(ul Uplo, n int, alpha float32, x []float32, incX int, a []float32, lda int)	Sspr(ul Uplo, n int, alpha float32, x []float32, incX int, ap []float32)	Ssyr2(ul Uplo, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32, lda int)	Sspr2(ul Uplo, n int, alpha float32, x []float32, incX int, y []float32, incY int, a []float32)}// Float32Level3 implements the single precision real BLAS Level 3 routines.type Float32Level3 interface {	Sgemm(tA, tB Transpose, m, n, k int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int)	Ssymm(s Side, ul Uplo, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int)	Ssyrk(ul Uplo, t Transpose, n, k int, alpha float32, a []float32, lda int, beta float32, c []float32, ldc int)	Ssyr2k(ul Uplo, t Transpose, n, k int, alpha float32, a []float32, lda int, b []float32, ldb int, beta float32, c []float32, ldc int)	Strmm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int)	Strsm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha float32, a []float32, lda int, b []float32, ldb int)}// Float64 implements the single precision real BLAS routines.type Float64 interface {	Float64Level1	Float64Level2	Float64Level3}// Float64Level1 implements the double precision real BLAS Level 1 routines.type Float64Level1 interface {	Ddot(n int, x []float64, incX int, y []float64, incY int) float64	Dnrm2(n int, x []float64, incX int) float64	Dasum(n int, x []float64, incX int) float64	Idamax(n int, x []float64, incX int) int	Dswap(n int, x []float64, incX int, y []float64, incY int)	Dcopy(n int, x []float64, incX int, y []float64, incY int)	Daxpy(n int, alpha float64, x []float64, incX int, y []float64, incY int)	Drotg(a, b float64) (c, s, r, z float64)	Drotmg(d1, d2, b1, b2 float64) (p DrotmParams, rd1, rd2, rb1 float64)	Drot(n int, x []float64, incX int, y []float64, incY int, c float64, s float64)	Drotm(n int, x []float64, incX int, y []float64, incY int, p DrotmParams)	Dscal(n int, alpha float64, x []float64, incX int)}// Float64Level2 implements the double precision real BLAS Level 2 routines.type Float64Level2 interface {	Dgemv(tA Transpose, m, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int)	Dgbmv(tA Transpose, m, n, kL, kU int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int)	Dtrmv(ul Uplo, tA Transpose, d Diag, n int, a []float64, lda int, x []float64, incX int)	Dtbmv(ul Uplo, tA Transpose, d Diag, n, k int, a []float64, lda int, x []float64, incX int)	Dtpmv(ul Uplo, tA Transpose, d Diag, n int, ap []float64, x []float64, incX int)	Dtrsv(ul Uplo, tA Transpose, d Diag, n int, a []float64, lda int, x []float64, incX int)	Dtbsv(ul Uplo, tA Transpose, d Diag, n, k int, a []float64, lda int, x []float64, incX int)	Dtpsv(ul Uplo, tA Transpose, d Diag, n int, ap []float64, x []float64, incX int)	Dsymv(ul Uplo, n int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int)	Dsbmv(ul Uplo, n, k int, alpha float64, a []float64, lda int, x []float64, incX int, beta float64, y []float64, incY int)	Dspmv(ul Uplo, n int, alpha float64, ap []float64, x []float64, incX int, beta float64, y []float64, incY int)	Dger(m, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int)	Dsyr(ul Uplo, n int, alpha float64, x []float64, incX int, a []float64, lda int)	Dspr(ul Uplo, n int, alpha float64, x []float64, incX int, ap []float64)	Dsyr2(ul Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64, lda int)	Dspr2(ul Uplo, n int, alpha float64, x []float64, incX int, y []float64, incY int, a []float64)}// Float64Level3 implements the double precision real BLAS Level 3 routines.type Float64Level3 interface {	Dgemm(tA, tB Transpose, m, n, k int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int)	Dsymm(s Side, ul Uplo, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int)	Dsyrk(ul Uplo, t Transpose, n, k int, alpha float64, a []float64, lda int, beta float64, c []float64, ldc int)	Dsyr2k(ul Uplo, t Transpose, n, k int, alpha float64, a []float64, lda int, b []float64, ldb int, beta float64, c []float64, ldc int)	Dtrmm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int)	Dtrsm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha float64, a []float64, lda int, b []float64, ldb int)}// Complex64 implements the single precision complex BLAS routines.type Complex64 interface {	Complex64Level1	Complex64Level2	Complex64Level3}// Complex64Level1 implements the single precision complex BLAS Level 1 routines.type Complex64Level1 interface {	Cdotu(n int, x []complex64, incX int, y []complex64, incY int) (dotu complex64)	Cdotc(n int, x []complex64, incX int, y []complex64, incY int) (dotc complex64)	Scnrm2(n int, x []complex64, incX int) float32	Scasum(n int, x []complex64, incX int) float32	Icamax(n int, x []complex64, incX int) int	Cswap(n int, x []complex64, incX int, y []complex64, incY int)	Ccopy(n int, x []complex64, incX int, y []complex64, incY int)	Caxpy(n int, alpha complex64, x []complex64, incX int, y []complex64, incY int)	Cscal(n int, alpha complex64, x []complex64, incX int)	Csscal(n int, alpha float32, x []complex64, incX int)}// Complex64Level2 implements the single precision complex BLAS routines Level 2 routines.type Complex64Level2 interface {	Cgemv(tA Transpose, m, n int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int)	Cgbmv(tA Transpose, m, n, kL, kU int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int)	Ctrmv(ul Uplo, tA Transpose, d Diag, n int, a []complex64, lda int, x []complex64, incX int)	Ctbmv(ul Uplo, tA Transpose, d Diag, n, k int, a []complex64, lda int, x []complex64, incX int)	Ctpmv(ul Uplo, tA Transpose, d Diag, n int, ap []complex64, x []complex64, incX int)	Ctrsv(ul Uplo, tA Transpose, d Diag, n int, a []complex64, lda int, x []complex64, incX int)	Ctbsv(ul Uplo, tA Transpose, d Diag, n, k int, a []complex64, lda int, x []complex64, incX int)	Ctpsv(ul Uplo, tA Transpose, d Diag, n int, ap []complex64, x []complex64, incX int)	Chemv(ul Uplo, n int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int)	Chbmv(ul Uplo, n, k int, alpha complex64, a []complex64, lda int, x []complex64, incX int, beta complex64, y []complex64, incY int)	Chpmv(ul Uplo, n int, alpha complex64, ap []complex64, x []complex64, incX int, beta complex64, y []complex64, incY int)	Cgeru(m, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int)	Cgerc(m, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int)	Cher(ul Uplo, n int, alpha float32, x []complex64, incX int, a []complex64, lda int)	Chpr(ul Uplo, n int, alpha float32, x []complex64, incX int, a []complex64)	Cher2(ul Uplo, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, a []complex64, lda int)	Chpr2(ul Uplo, n int, alpha complex64, x []complex64, incX int, y []complex64, incY int, ap []complex64)}// Complex64Level3 implements the single precision complex BLAS Level 3 routines.type Complex64Level3 interface {	Cgemm(tA, tB Transpose, m, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int)	Csymm(s Side, ul Uplo, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int)	Csyrk(ul Uplo, t Transpose, n, k int, alpha complex64, a []complex64, lda int, beta complex64, c []complex64, ldc int)	Csyr2k(ul Uplo, t Transpose, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int)	Ctrmm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int)	Ctrsm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int)	Chemm(s Side, ul Uplo, m, n int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta complex64, c []complex64, ldc int)	Cherk(ul Uplo, t Transpose, n, k int, alpha float32, a []complex64, lda int, beta float32, c []complex64, ldc int)	Cher2k(ul Uplo, t Transpose, n, k int, alpha complex64, a []complex64, lda int, b []complex64, ldb int, beta float32, c []complex64, ldc int)}// Complex128 implements the double precision complex BLAS routines.type Complex128 interface {	Complex128Level1	Complex128Level2	Complex128Level3}// Complex128Level1 implements the double precision complex BLAS Level 1 routines.type Complex128Level1 interface {	Zdotu(n int, x []complex128, incX int, y []complex128, incY int) (dotu complex128)	Zdotc(n int, x []complex128, incX int, y []complex128, incY int) (dotc complex128)	Dznrm2(n int, x []complex128, incX int) float64	Dzasum(n int, x []complex128, incX int) float64	Izamax(n int, x []complex128, incX int) int	Zswap(n int, x []complex128, incX int, y []complex128, incY int)	Zcopy(n int, x []complex128, incX int, y []complex128, incY int)	Zaxpy(n int, alpha complex128, x []complex128, incX int, y []complex128, incY int)	Zscal(n int, alpha complex128, x []complex128, incX int)	Zdscal(n int, alpha float64, x []complex128, incX int)}// Complex128Level2 implements the double precision complex BLAS Level 2 routines.type Complex128Level2 interface {	Zgemv(tA Transpose, m, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int)	Zgbmv(tA Transpose, m, n int, kL int, kU int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int)	Ztrmv(ul Uplo, tA Transpose, d Diag, n int, a []complex128, lda int, x []complex128, incX int)	Ztbmv(ul Uplo, tA Transpose, d Diag, n, k int, a []complex128, lda int, x []complex128, incX int)	Ztpmv(ul Uplo, tA Transpose, d Diag, n int, ap []complex128, x []complex128, incX int)	Ztrsv(ul Uplo, tA Transpose, d Diag, n int, a []complex128, lda int, x []complex128, incX int)	Ztbsv(ul Uplo, tA Transpose, d Diag, n, k int, a []complex128, lda int, x []complex128, incX int)	Ztpsv(ul Uplo, tA Transpose, d Diag, n int, ap []complex128, x []complex128, incX int)	Zhemv(ul Uplo, n int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int)	Zhbmv(ul Uplo, n, k int, alpha complex128, a []complex128, lda int, x []complex128, incX int, beta complex128, y []complex128, incY int)	Zhpmv(ul Uplo, n int, alpha complex128, ap []complex128, x []complex128, incX int, beta complex128, y []complex128, incY int)	Zgeru(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int)	Zgerc(m, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int)	Zher(ul Uplo, n int, alpha float64, x []complex128, incX int, a []complex128, lda int)	Zhpr(ul Uplo, n int, alpha float64, x []complex128, incX int, a []complex128)	Zher2(ul Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, a []complex128, lda int)	Zhpr2(ul Uplo, n int, alpha complex128, x []complex128, incX int, y []complex128, incY int, ap []complex128)}// Complex128Level3 implements the double precision complex BLAS Level 3 routines.type Complex128Level3 interface {	Zgemm(tA, tB Transpose, m, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int)	Zsymm(s Side, ul Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int)	Zsyrk(ul Uplo, t Transpose, n, k int, alpha complex128, a []complex128, lda int, beta complex128, c []complex128, ldc int)	Zsyr2k(ul Uplo, t Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int)	Ztrmm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int)	Ztrsm(s Side, ul Uplo, tA Transpose, d Diag, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int)	Zhemm(s Side, ul Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int)	Zherk(ul Uplo, t Transpose, n, k int, alpha float64, a []complex128, lda int, beta float64, c []complex128, ldc int)	Zher2k(ul Uplo, t Transpose, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta float64, c []complex128, ldc int)}
 |