aboutsummaryrefslogtreecommitdiff
path: root/sys/libmath/linalg.c
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2020-05-13 17:30:19 -0700
committerNicholas Noll <nbnoll@eml.cc>2020-05-13 17:30:19 -0700
commitd982e7c2fdebf560ccce193cb98b85d4fac28a45 (patch)
treeb18902eea12a2d55a24994ca0681ca1a369631aa /sys/libmath/linalg.c
parentc9d4b2d7dd1d9a46571e5d2b2cf6ce10a9d9ebea (diff)
blas 1 generation code complete
Diffstat (limited to 'sys/libmath/linalg.c')
-rw-r--r--sys/libmath/linalg.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/libmath/linalg.c b/sys/libmath/linalg.c
index 09e100c..8551ff1 100644
--- a/sys/libmath/linalg.c
+++ b/sys/libmath/linalg.c
@@ -1,6 +1,7 @@
#include <u.h>
#include <libn.h>
#include <libmath.h>
+#include <libmath/blas.h>
// -----------------------------------------------------------------------
// Vector
@@ -10,8 +11,8 @@ linalg·normalize(math·Vector vec)
{
double norm;
- norm = blas·norm(vec.len, vec.data, 1);
- blas·scale(vec.len, 1/norm, vec.data, 1);
+ norm = blas·normd(vec.len, vec.data, 1);
+ blas·scaled(vec.len, 1/norm, vec.data, 1);
}
// TODO: Write blas wrappers that eat vectors for convenience
@@ -50,12 +51,12 @@ linalg·lq(math·Matrix m, math·Vector w)
len = m.dim[0] - i;
// TODO: Don't want to compute norm twice!!
- w.data[0] = math·sgn(row[0]) * blas·norm(len, row, 1);
- blas·axpy(len, 1.0, row, 1, w.data, 1);
- mag = blas·norm(len, w.data, 1);
- blas·scale(len, 1/mag, w.data, 1);
+ w.data[0] = math·sgn(row[0]) * blas·normd(len, row, 1);
+ blas·axpyd(len, 1.0, row, 1, w.data, 1);
+ mag = blas·normd(len, w.data, 1);
+ blas·scaled(len, 1/mag, w.data, 1);
- blas·copy(len - m.dim[0], w.data, 1, m.data + i, 1);
+ blas·copyd(len - m.dim[0], w.data, 1, m.data + i, 1);
}
return err·nil;