blas/gonum: add Zgemm with test
MODIFY
blas/gonum/cmplx.go
blas/gonum/cmplx.go
@@ -135,9 +135,6 @@ func (Implementation) Cher2k(ul blas.Uplo, t blas.Transpose, n, k int, alpha com
// Level 3 complex128 routines.
-func (Implementation) Zgemm(tA, tB blas.Transpose, m, n, k int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) {
- panic(noComplex)
-}
func (Implementation) Zsymm(s blas.Side, ul blas.Uplo, m, n int, alpha complex128, a []complex128, lda int, b []complex128, ldb int, beta complex128, c []complex128, ldc int) {
panic(noComplex)
}

MODIFY
blas/gonum/level1cmplx128.go
blas/gonum/level1cmplx128.go
@@ -7,9 +7,12 @@ package gonum
import (
"math"
+ "gonum.org/v1/gonum/blas"
"gonum.org/v1/gonum/internal/asm/c128"
)
+var _ blas.Complex128Level1 = Implementation{}
+
// Dzasum returns the sum of the absolute values of the elements of x
// \sum_i |Re(x[i])| + |Im(x[i])|
// Dzasum returns 0 if incX is negative.

MODIFY
blas/gonum/level2cmplx128.go
blas/gonum/level2cmplx128.go
@@ -11,6 +11,8 @@ import (
"gonum.org/v1/gonum/internal/asm/c128"
)
+var _ blas.Complex128Level2 = Implementation{}
+
// Zgbmv performs one of the matrix-vector operations
// y = alpha * A * x + beta * y if trans = blas.NoTrans
// y = alpha * A^T * x + beta * y if trans = blas.Trans

blas/gonum: add Zgemm with test