OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / lapack / gonum / dlacpy.go
diff --git a/vendor/gonum.org/v1/gonum/lapack/gonum/dlacpy.go b/vendor/gonum.org/v1/gonum/lapack/gonum/dlacpy.go
new file mode 100644 (file)
index 0000000..2fe952d
--- /dev/null
@@ -0,0 +1,40 @@
+// 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 "gonum.org/v1/gonum/blas"
+
+// Dlacpy copies the elements of A specified by uplo into B. Uplo can specify
+// a triangular portion with blas.Upper or blas.Lower, or can specify all of the
+// elemest with blas.All.
+//
+// Dlacpy is an internal routine. It is exported for testing purposes.
+func (impl Implementation) Dlacpy(uplo blas.Uplo, m, n int, a []float64, lda int, b []float64, ldb int) {
+       checkMatrix(m, n, a, lda)
+       checkMatrix(m, n, b, ldb)
+       switch uplo {
+       default:
+               panic(badUplo)
+       case blas.Upper:
+               for i := 0; i < m; i++ {
+                       for j := i; j < n; j++ {
+                               b[i*ldb+j] = a[i*lda+j]
+                       }
+               }
+
+       case blas.Lower:
+               for i := 0; i < m; i++ {
+                       for j := 0; j < min(i+1, n); j++ {
+                               b[i*ldb+j] = a[i*lda+j]
+                       }
+               }
+       case blas.All:
+               for i := 0; i < m; i++ {
+                       for j := 0; j < n; j++ {
+                               b[i*ldb+j] = a[i*lda+j]
+                       }
+               }
+       }
+}