From 162472b11b5b6e9de3b79e70facb3a61a6f61d40 Mon Sep 17 00:00:00 2001 From: Vladimir Chalupecky Date: Mon, 28 Sep 2020 11:09:24 +0200 Subject: [PATCH] lapack64: add Tbtrs --- lapack/lapack.go | 1 + lapack/lapack64/lapack64.go | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/lapack/lapack.go b/lapack/lapack.go index da0e670b..947cbe45 100644 --- a/lapack/lapack.go +++ b/lapack/lapack.go @@ -35,6 +35,7 @@ type Float64 interface { Dpotri(ul blas.Uplo, n int, a []float64, lda int) (ok bool) Dpotrs(ul blas.Uplo, n, nrhs int, a []float64, lda int, b []float64, ldb int) Dsyev(jobz EVJob, uplo blas.Uplo, n int, a []float64, lda int, w, work []float64, lwork int) (ok bool) + Dtbtrs(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n, kd, nrhs int, a []float64, lda int, b []float64, ldb int) (ok bool) Dtrcon(norm MatrixNorm, uplo blas.Uplo, diag blas.Diag, n int, a []float64, lda int, work []float64, iwork []int) float64 Dtrtri(uplo blas.Uplo, diag blas.Diag, n int, a []float64, lda int) (ok bool) Dtrtrs(uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, n, nrhs int, a []float64, lda int, b []float64, ldb int) (ok bool) diff --git a/lapack/lapack64/lapack64.go b/lapack/lapack64/lapack64.go index a0c5f3c6..ec9a6f78 100644 --- a/lapack/lapack64/lapack64.go +++ b/lapack/lapack64/lapack64.go @@ -559,6 +559,17 @@ func Syev(jobz lapack.EVJob, a blas64.Symmetric, w, work []float64, lwork int) ( return lapack64.Dsyev(jobz, a.Uplo, a.N, a.Data, max(1, a.Stride), w, work, lwork) } +// Tbtrs solves a triangular system of the form +// A * X = B if trans == blas.NoTrans +// Aᵀ * X = B if trans == blas.Trans or blas.ConjTrans +// where A is an n×n triangular band matrix, and B is an n×nrhs matrix. +// +// Tbtrs returns whether A is non-singular. If A is singular, no solutions X +// are computed. +func Tbtrs(trans blas.Transpose, a blas64.TriangularBand, b blas64.General) (ok bool) { + return lapack64.Dtbtrs(a.Uplo, trans, a.Diag, a.N, a.K, b.Cols, a.Data, max(1, a.Stride), b.Data, max(1, b.Stride)) +} + // Trcon estimates the reciprocal of the condition number of a triangular matrix A. // The condition number computed may be based on the 1-norm or the ∞-norm. //