ndarray-blas-level2
Version:
BLAS Level 2 operations for ndarrays
25 lines (21 loc) • 602 B
JavaScript
var blas1 = require('ndarray-blas-level1');
module.exports = trsv;
// Solve Ax=b where A is upper triangular
function trsv (A, x, isLower) {
var dot = blas1.dot;
var n = A.shape[1];
var i = 0;
if (isLower) {
x.set(0, x.get(0) / A.get(0, 0));
for (i = 1; i < n; i++) {
x.set(i, (x.get(i) - dot(A.pick(i, null).hi(i), x.hi(i))) / A.get(i, i));
}
} else {
x.set(n - 1, x.get(n - 1) / A.get(n - 1, n - 1));
for (i = n - 2; i >= 0; i--) {
x.set(i, (x.get(i) - dot(A.pick(i, null).lo(i + 1), x.lo(i + 1))) / A.get(i, i));
}
}
return true;
}
;