OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / lapack / gonum / dlarfg.go
diff --git a/vendor/gonum.org/v1/gonum/lapack/gonum/dlarfg.go b/vendor/gonum.org/v1/gonum/lapack/gonum/dlarfg.go
deleted file mode 100644 (file)
index 52a67a4..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright ©2015 The Gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package gonum
-
-import (
-       "math"
-
-       "gonum.org/v1/gonum/blas/blas64"
-)
-
-// Dlarfg generates an elementary reflector for a Householder matrix. It creates
-// a real elementary reflector of order n such that
-//  H * (alpha) = (beta)
-//      (    x)   (   0)
-//  H^T * H = I
-// H is represented in the form
-//  H = 1 - tau * (1; v) * (1 v^T)
-// where tau is a real scalar.
-//
-// On entry, x contains the vector x, on exit it contains v.
-//
-// Dlarfg is an internal routine. It is exported for testing purposes.
-func (impl Implementation) Dlarfg(n int, alpha float64, x []float64, incX int) (beta, tau float64) {
-       if n < 0 {
-               panic(nLT0)
-       }
-       if n <= 1 {
-               return alpha, 0
-       }
-       checkVector(n-1, x, incX)
-       bi := blas64.Implementation()
-       xnorm := bi.Dnrm2(n-1, x, incX)
-       if xnorm == 0 {
-               return alpha, 0
-       }
-       beta = -math.Copysign(impl.Dlapy2(alpha, xnorm), alpha)
-       safmin := dlamchS / dlamchE
-       knt := 0
-       if math.Abs(beta) < safmin {
-               // xnorm and beta may be inaccurate, scale x and recompute.
-               rsafmn := 1 / safmin
-               for {
-                       knt++
-                       bi.Dscal(n-1, rsafmn, x, incX)
-                       beta *= rsafmn
-                       alpha *= rsafmn
-                       if math.Abs(beta) >= safmin {
-                               break
-                       }
-               }
-               xnorm = bi.Dnrm2(n-1, x, incX)
-               beta = -math.Copysign(impl.Dlapy2(alpha, xnorm), alpha)
-       }
-       tau = (beta - alpha) / beta
-       bi.Dscal(n-1, 1/(alpha-beta), x, incX)
-       for j := 0; j < knt; j++ {
-               beta *= safmin
-       }
-       return beta, tau
-}