native: zero index elementary reflectors

This commit is contained in:
Vladimir Chalupecky
2016-04-15 11:58:58 +09:00
parent 2b99360bb5
commit aa7baaf8d1
4 changed files with 17 additions and 15 deletions

View File

@@ -19,11 +19,13 @@ import (
//
// The remaining elements of A store the data needed to construct Q and P.
// The matrices Q and P are products of elementary reflectors
// Q = H_1 * H_2 * ... * H_nb
// P = G_1 * G_2 * ... * G_nb
// if m >= n, Q = H(0) * H(1) * ... * H(n-1),
// P = G(0) * G(1) * ... * G(n-2),
// if m < n, Q = H(0) * H(1) * ... * H(m-2),
// P = G(0) * G(1) * ... * G(m-1),
// where
// H_i = I - tauQ[i] * v_i * v_i^T
// G_i = I - tauP[i] * u_i * u_i^T
// H(i) = I - tauQ[i] * v_i * v_i^T,
// G(i) = I - tauP[i] * u_i * u_i^T.
//
// As an example, on exit the entries of A when m = 6, and n = 5
// [ d e u1 u1 u1]

View File

@@ -19,7 +19,7 @@ import "github.com/gonum/blas"
//
// See Dgeqr2 for a description of the elementary reflectors and orthonormal
// matrix Q. Q is constructed as a product of these elementary reflectors,
// Q = H_k ... H_2*H_1.
// Q = H(k-1) ... H(1) * H(0).
//
// work is temporary storage of length at least m and this function will panic otherwise.
//

View File

@@ -22,11 +22,11 @@ import (
// elements, and e are the off-diagonal elements.
//
// The matrices Q and P are products of elementary reflectors
// Q = H_1 * H_2 * ... * H_nb
// P = G_1 * G_2 * ... * G_nb
// Q = H(0) * H(1) ... H(nb-1)
// P = G(0) * G(1) ... G(nb-1)
// where
// H_i = I - tauQ[i] * v_i * v_i^T
// G_i = I - tauP[i] * u_i * u_i^T
// H(i) = I - tauQ[i] * v_i * v_i^T
// G(i) = I - tauP[i] * u_i * u_i^T
//
// As an example, on exit the entries of A when m = 6, n = 5, and nb = 2
// [ 1 1 u1 u1 u1]

View File

@@ -10,13 +10,13 @@ import (
"github.com/gonum/lapack"
)
// Dlarft forms the triangular factor t of a block reflector, storing the answer
// Dlarft forms the triangular factor T of a block reflector H, storing the answer
// in t.
// H = 1 - V * T * V^T if store == lapack.ColumnWise
// H = 1 - V^T * T * V if store == lapack.RowWise
// H = I - V * T * V^T if store == lapack.ColumnWise
// H = I - V^T * T * V if store == lapack.RowWise
// H is defined by a product of the elementary reflectors where
// H = H_1 * H_2 * ... * H_k if direct == lapack.Forward
// H = H_k * H_k-1 * ... * H_1 if direct == lapack.Backward
// H = H(0) * H(1) ... H(k-1) if direct == lapack.Forward
// H = H(k-1) ... H(1) * H(0) if direct == lapack.Backward
//
// t is a k×k triangular matrix. t is upper triangular if direct = lapack.Forward
// and lower triangular otherwise. This function will panic if t is not of
@@ -25,7 +25,7 @@ import (
// store describes the storage of the elementary reflectors in v. Please see
// Dlarfb for a description of layout.
//
// tau contains the scalar factor of the elementary reflectors h.
// tau contains the scalar factors of the elementary reflectors H(i).
//
// Dlarft is an internal routine. It is exported for testing purposes.
func (Implementation) Dlarft(direct lapack.Direct, store lapack.StoreV, n, k int,