mirror of
https://github.com/gonum/gonum.git
synced 2025-10-05 07:06:54 +08:00
31 lines
718 B
Go
31 lines
718 B
Go
// 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
|
|
}
|