mirror of
https://github.com/gonum/gonum.git
synced 2025-10-11 01:50:12 +08:00
lapack: imported lapack as a subtree
This commit is contained in:
30
lapack/native/iladlr.go
Normal file
30
lapack/native/iladlr.go
Normal file
@@ -0,0 +1,30 @@
|
||||
// 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 native
|
||||
|
||||
// Iladlr scans a matrix for its last non-zero row. Returns -1 if the matrix
|
||||
// is all zeros.
|
||||
//
|
||||
// Iladlr is an internal routine. It is exported for testing purposes.
|
||||
func (Implementation) Iladlr(m, n int, a []float64, lda int) int {
|
||||
if m == 0 {
|
||||
return m - 1
|
||||
}
|
||||
|
||||
checkMatrix(m, n, a, lda)
|
||||
|
||||
// Check the common case where the corner is non-zero
|
||||
if a[(m-1)*lda] != 0 || a[(m-1)*lda+n-1] != 0 {
|
||||
return m - 1
|
||||
}
|
||||
for i := m - 1; i >= 0; i-- {
|
||||
for j := 0; j < n; j++ {
|
||||
if a[i*lda+j] != 0 {
|
||||
return i
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
Reference in New Issue
Block a user