mirror of
https://github.com/gonum/gonum.git
synced 2025-10-07 16:11:03 +08:00
optimized for row major iteration
This commit is contained in:

committed by
Vladimír Chalupecký

parent
e4cd817d22
commit
99dfbf7715
@@ -33,33 +33,30 @@ func (impl Implementation) Dlanhs(norm lapack.MatrixNorm, n int, a []float64, ld
|
|||||||
default:
|
default:
|
||||||
panic(badNorm)
|
panic(badNorm)
|
||||||
case lapack.MaxAbs:
|
case lapack.MaxAbs:
|
||||||
for j := 0; j < n; j++ {
|
for i := 0; i < n; i++ {
|
||||||
imax := min(n-1, j+1)
|
for j := max(0, i-1); j < n; j++ {
|
||||||
for i := 0; i <= imax; i++ {
|
|
||||||
value = math.Max(value, math.Abs(a[i*lda+j]))
|
value = math.Max(value, math.Abs(a[i*lda+j]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case lapack.MaxColumnSum:
|
case lapack.MaxColumnSum:
|
||||||
for j := 0; j < n; j++ {
|
|
||||||
sum := 0.0
|
|
||||||
imax := min(n-1, j+1)
|
|
||||||
for i := 0; i <= imax; i++ {
|
|
||||||
sum += math.Abs(a[i*lda+j])
|
|
||||||
}
|
|
||||||
value = math.Max(value, sum)
|
|
||||||
}
|
|
||||||
case lapack.MaxRowSum:
|
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
work[i] = 0
|
work[i] = 0
|
||||||
}
|
}
|
||||||
for j := 0; j < n; j++ {
|
for i := 0; i < n; i++ {
|
||||||
imax := min(n-1, j+1)
|
for j := max(0, i-1); j < n; j++ {
|
||||||
for i := 0; i <= imax; i++ {
|
work[j] += math.Abs(a[i*lda+j])
|
||||||
work[i] += math.Abs(a[i*lda+j])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for j := 0; j < n; j++ {
|
||||||
|
value = math.Max(value, work[j])
|
||||||
|
}
|
||||||
|
case lapack.MaxRowSum:
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
value = math.Max(value, work[i])
|
sum := 0.0
|
||||||
|
for j := max(0, i-1); j < n; j++ {
|
||||||
|
sum += math.Abs(a[i*lda+j])
|
||||||
|
}
|
||||||
|
value = math.Max(value, sum)
|
||||||
}
|
}
|
||||||
case lapack.Frobenius:
|
case lapack.Frobenius:
|
||||||
scale := 0.0
|
scale := 0.0
|
||||||
|
Reference in New Issue
Block a user