From c62d2ffb1e54fd2908085214e4f7d01d98d91668 Mon Sep 17 00:00:00 2001 From: kortschak Date: Wed, 12 Oct 2016 11:45:40 +1030 Subject: [PATCH] cgo/lapacke: fix missed transpose type parameters --- cgo/lapacke/generate_lapacke.go | 8 ++- cgo/lapacke/lapacke.go | 88 +++++++++++++++++++++++++++++++-- 2 files changed, 87 insertions(+), 9 deletions(-) diff --git a/cgo/lapacke/generate_lapacke.go b/cgo/lapacke/generate_lapacke.go index 4f1040c4..50e57d4e 100644 --- a/cgo/lapacke/generate_lapacke.go +++ b/cgo/lapacke/generate_lapacke.go @@ -161,11 +161,9 @@ var byteTypes = map[string]string{ "s": "blas.Side", - // FIXME(kortschak): These were missed previously. - "trana": "byte", - "tranb": "byte", - "trans": "blas.Transpose", + "trana": "blas.Transpose", + "tranb": "blas.Transpose", "transr": "blas.Transpose", "ul": "blas.Uplo", @@ -523,7 +521,7 @@ func side(buf *bytes.Buffer, d binding.Declaration, p binding.Parameter) bool { func trans(buf *bytes.Buffer, d binding.Declaration, p binding.Parameter) bool { n := shorten(binding.LowerCaseFirst(p.Name())) - if !strings.HasPrefix(n, "trans") { + if !strings.HasPrefix(n, "tran") { return false } fmt.Fprintf(buf, ` switch %[1]s { diff --git a/cgo/lapacke/lapacke.go b/cgo/lapacke/lapacke.go index 5b85e275..03ff09fa 100644 --- a/cgo/lapacke/lapacke.go +++ b/cgo/lapacke/lapacke.go @@ -25634,7 +25634,27 @@ func Ztrrfs(ul blas.Uplo, trans blas.Transpose, d blas.Diag, n, nrhs int, a []co } // See http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/strsyl.f. -func Strsyl(trana, tranb byte, isgn, m, n int, a []float32, lda int, b []float32, ldb int, c []float32, ldc int, scale []float32) bool { +func Strsyl(trana, tranb blas.Transpose, isgn, m, n int, a []float32, lda int, b []float32, ldb int, c []float32, ldc int, scale []float32) bool { + switch trana { + case blas.NoTrans: + trana = 'N' + case blas.Trans: + trana = 'T' + case blas.ConjTrans: + trana = 'C' + default: + panic("lapack: bad trans") + } + switch tranb { + case blas.NoTrans: + tranb = 'N' + case blas.Trans: + tranb = 'T' + case blas.ConjTrans: + tranb = 'C' + default: + panic("lapack: bad trans") + } var _a *float32 if len(a) > 0 { _a = &a[0] @@ -25655,7 +25675,27 @@ func Strsyl(trana, tranb byte, isgn, m, n int, a []float32, lda int, b []float32 } // See http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dtrsyl.f. -func Dtrsyl(trana, tranb byte, isgn, m, n int, a []float64, lda int, b []float64, ldb int, c []float64, ldc int, scale []float64) bool { +func Dtrsyl(trana, tranb blas.Transpose, isgn, m, n int, a []float64, lda int, b []float64, ldb int, c []float64, ldc int, scale []float64) bool { + switch trana { + case blas.NoTrans: + trana = 'N' + case blas.Trans: + trana = 'T' + case blas.ConjTrans: + trana = 'C' + default: + panic("lapack: bad trans") + } + switch tranb { + case blas.NoTrans: + tranb = 'N' + case blas.Trans: + tranb = 'T' + case blas.ConjTrans: + tranb = 'C' + default: + panic("lapack: bad trans") + } var _a *float64 if len(a) > 0 { _a = &a[0] @@ -25676,7 +25716,27 @@ func Dtrsyl(trana, tranb byte, isgn, m, n int, a []float64, lda int, b []float64 } // See http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ctrsyl.f. -func Ctrsyl(trana, tranb byte, isgn, m, n int, a []complex64, lda int, b []complex64, ldb int, c []complex64, ldc int, scale []float32) bool { +func Ctrsyl(trana, tranb blas.Transpose, isgn, m, n int, a []complex64, lda int, b []complex64, ldb int, c []complex64, ldc int, scale []float32) bool { + switch trana { + case blas.NoTrans: + trana = 'N' + case blas.Trans: + trana = 'T' + case blas.ConjTrans: + trana = 'C' + default: + panic("lapack: bad trans") + } + switch tranb { + case blas.NoTrans: + tranb = 'N' + case blas.Trans: + tranb = 'T' + case blas.ConjTrans: + tranb = 'C' + default: + panic("lapack: bad trans") + } var _a *complex64 if len(a) > 0 { _a = &a[0] @@ -25697,7 +25757,27 @@ func Ctrsyl(trana, tranb byte, isgn, m, n int, a []complex64, lda int, b []compl } // See http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ztrsyl.f. -func Ztrsyl(trana, tranb byte, isgn, m, n int, a []complex128, lda int, b []complex128, ldb int, c []complex128, ldc int, scale []float64) bool { +func Ztrsyl(trana, tranb blas.Transpose, isgn, m, n int, a []complex128, lda int, b []complex128, ldb int, c []complex128, ldc int, scale []float64) bool { + switch trana { + case blas.NoTrans: + trana = 'N' + case blas.Trans: + trana = 'T' + case blas.ConjTrans: + trana = 'C' + default: + panic("lapack: bad trans") + } + switch tranb { + case blas.NoTrans: + tranb = 'N' + case blas.Trans: + tranb = 'T' + case blas.ConjTrans: + tranb = 'C' + default: + panic("lapack: bad trans") + } var _a *complex128 if len(a) > 0 { _a = &a[0]