Skip to content

Commit

Permalink
lapack/netlib: rename convDpbToLapacke to bandTriToLapacke
Browse files Browse the repository at this point in the history
  • Loading branch information
vladimir-ch committed Oct 11, 2020
1 parent 5df5f36 commit 25e5506
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 19 deletions.
18 changes: 9 additions & 9 deletions lapack/netlib/conv.go
Expand Up @@ -6,10 +6,10 @@ package netlib

import "gonum.org/v1/gonum/blas"

// convDpbToLapacke converts a symmetric band matrix A in CBLAS row-major layout
// to LAPACKE row-major layout and stores the result in B.
// bandTriToLapacke converts a triangular or symmetric band matrix A in CBLAS
// row-major layout to LAPACKE row-major layout and stores the result in B.
//
// For example, when n = 6, kd = 2 and uplo == 'U', convDpbToLapacke converts
// For example, when n = 6, kd = 2 and uplo == 'U', bandTriToLapacke converts
// A = a00 a01 a02
// a11 a12 a13
// a22 a23 a24
Expand All @@ -25,7 +25,7 @@ import "gonum.org/v1/gonum/blas"
// stored in a slice as
// b = [* * a02 a13 a24 a35 * a01 a12 a23 a34 a45 a00 a11 a22 a33 a44 a55]
//
// When n = 6, kd = 2 and uplo == 'L', convDpbToLapacke converts
// When n = 6, kd = 2 and uplo == 'L', bandTriToLapacke converts
// A = * * a00
// * a10 a11
// a20 a21 a22
Expand All @@ -42,7 +42,7 @@ import "gonum.org/v1/gonum/blas"
// b = [a00 a11 a22 a33 a44 a55 a10 a21 a32 a43 a54 * a20 a31 a42 a53 * * ]
//
// In these example elements marked as * are not referenced.
func convDpbToLapacke(uplo blas.Uplo, n, kd int, a []float64, lda int, b []float64, ldb int) {
func bandTriToLapacke(uplo blas.Uplo, n, kd int, a []float64, lda int, b []float64, ldb int) {
if uplo == blas.Upper {
for i := 0; i < n; i++ {
for jb := 0; jb < min(n-i, kd+1); jb++ {
Expand All @@ -60,10 +60,10 @@ func convDpbToLapacke(uplo blas.Uplo, n, kd int, a []float64, lda int, b []float
}
}

// convDpbToGonum converts a symmetric band matrix A in LAPACKE row-major layout
// to CBLAS row-major layout and stores the result in B. In other words, it
// performs the inverse conversion to convDpbToLapacke.
func convDpbToGonum(uplo blas.Uplo, n, kd int, a []float64, lda int, b []float64, ldb int) {
// bandTriToGonum converts a triangular or symmetric band matrix A in LAPACKE
// row-major layout to CBLAS row-major layout and stores the result in B. In
// other words, it performs the inverse conversion to bandTriToLapacke.
func bandTriToGonum(uplo blas.Uplo, n, kd int, a []float64, lda int, b []float64, ldb int) {
if uplo == blas.Upper {
for j := 0; j < n; j++ {
for ib := max(0, kd-j); ib < kd+1; ib++ {
Expand Down
10 changes: 5 additions & 5 deletions lapack/netlib/conv_test.go
Expand Up @@ -14,7 +14,7 @@ import (
"gonum.org/v1/gonum/floats"
)

func TestConvDpb(t *testing.T) {
func TestConvBandTri(t *testing.T) {
for ti, test := range []struct {
uplo blas.Uplo
n, kd int
Expand Down Expand Up @@ -72,7 +72,7 @@ func TestConvDpb(t *testing.T) {
}
ldb := max(1, n)

convDpbToLapacke(uplo, n, kd, a, lda, got, ldb)
bandTriToLapacke(uplo, n, kd, a, lda, got, ldb)
if !floats.Equal(test.a, a) {
t.Errorf("%v: unexpected modification of A in conversion to LAPACKE row-major", name)
}
Expand All @@ -88,7 +88,7 @@ func TestConvDpb(t *testing.T) {
got[i] = -1
}

convDpbToGonum(uplo, n, kd, b, ldb, got, lda)
bandTriToGonum(uplo, n, kd, b, ldb, got, lda)
if !floats.Equal(test.b, b) {
t.Errorf("%v: unexpected modification of B in conversion to Gonum row-major", name)
}
Expand Down Expand Up @@ -118,8 +118,8 @@ func TestConvDpb(t *testing.T) {
b[i] = rnd.NormFloat64()
}

convDpbToLapacke(uplo, n, kd, a, lda, b, ldb)
convDpbToGonum(uplo, n, kd, b, ldb, a, lda)
bandTriToLapacke(uplo, n, kd, a, lda, b, ldb)
bandTriToGonum(uplo, n, kd, b, ldb, a, lda)

if !floats.Equal(a, aCopy) {
t.Errorf("%v: conversion does not roundtrip", name)
Expand Down
10 changes: 5 additions & 5 deletions lapack/netlib/lapack.go
Expand Up @@ -835,7 +835,7 @@ func (impl Implementation) Dpbcon(uplo blas.Uplo, n, kd int, ab []float64, ldab

_ldab := n
_ab := make([]float64, (kd+1)*_ldab)
convDpbToLapacke(uplo, n, kd, ab, ldab, _ab, _ldab)
bandTriToLapacke(uplo, n, kd, ab, ldab, _ab, _ldab)
_rcond := []float64{0}
_iwork := make([]int32, n)
lapacke.Dpbcon(byte(uplo), n, kd, _ab, _ldab, anorm, _rcond, work, _iwork)
Expand Down Expand Up @@ -892,9 +892,9 @@ func (impl Implementation) Dpbtrf(uplo blas.Uplo, n, kd int, ab []float64, ldab

ldabConv := n
abConv := make([]float64, (kd+1)*ldabConv)
convDpbToLapacke(uplo, n, kd, ab, ldab, abConv, ldabConv)
bandTriToLapacke(uplo, n, kd, ab, ldab, abConv, ldabConv)
info := lapacke.Dpbtrf(byte(uplo), n, kd, abConv, ldabConv)
convDpbToGonum(uplo, n, kd, abConv, ldabConv, ab, ldab)
bandTriToGonum(uplo, n, kd, abConv, ldabConv, ab, ldab)
return info
}

Expand Down Expand Up @@ -937,7 +937,7 @@ func (Implementation) Dpbtrs(uplo blas.Uplo, n, kd, nrhs int, ab []float64, ldab

ldabConv := n
abConv := make([]float64, (kd+1)*ldabConv)
convDpbToLapacke(uplo, n, kd, ab, ldab, abConv, ldabConv)
bandTriToLapacke(uplo, n, kd, ab, ldab, abConv, ldabConv)
lapacke.Dpbtrs(byte(uplo), n, kd, nrhs, abConv, ldabConv, b, ldb)
}

Expand Down Expand Up @@ -3316,7 +3316,7 @@ func (impl Implementation) Dtbtrs(uplo blas.Uplo, trans blas.Transpose, diag bla

ldaConv := n
aConv := make([]float64, (kd+1)*ldaConv)
convDpbToLapacke(uplo, n, kd, a, lda, aConv, ldaConv)
bandTriToLapacke(uplo, n, kd, a, lda, aConv, ldaConv)
return lapacke.Dtbtrs(byte(uplo), byte(trans), byte(diag), n, kd, nrhs, aConv, ldaConv, b, ldb)
}

Expand Down

0 comments on commit 25e5506

Please sign in to comment.