BLAS Level 1 operations for ndarrays
A quick note on why this exists: The goal is not to reinvent the wheel. There are lots of implementations of BLAS out there. Even for JS. There's a nodejs wrapper for LAPACK. Depending on what you need, maybe you should use that. The goal of this is to bring standardized BLAS operations to ndarrays so that algorithms can be made as future-resistant as possible by writing them in terms of standardized, easily-translatable operations.
This library implements the basic vector operations of the Level 1 Basic Linear Algebra Subprograms (BLAS). Many of these functions are also implemented in ndarray-ops—which also has functions that are not included in BLAS. So the right answer is probably some blend of the two. This library exists mainly to frame things in a relatively standard, coherent framework.
NB: This library performs no checks to ensure you're only passing one-dimensional vectors. It simply iterates across the first dimension of the array, so if you pass it higher-dimensional arrays, don't expect a meaningful result.
Function | Operation | Description |
---|---|---|
swap(x,y) |
Swap the elements of x and y | |
scal(alpha,x) |
Multiple vector x by scalar alpha | |
copy(x,y) |
Copy x into y | |
axpy(alpha, x, y) |
Multiple x by alpha and add it to y | |
cpsc(alpha, x, y) |
Multiply x by alpha and assign it to y | |
dot(x,y) |
Calculate the inner product of x and y. | |
nrm2(x) |
Calculate the 2-norm of x | |
asum(x) |
Calculate the 1-norm of x | |
iamax(x) |
the argmax of x | |
rotg(a,b) |
Calculates the Givens rotation parameters [c, s, r] | |
Usage should be pretty straightforward. There aren't really any options or variations.
var blas1 = require('ndarray-blas-level1');
var x = ndarray([1,2,3]);
var y = ndarray([3,4,5]);
blas1.axpy(2, x, y);
© 2015 Scijs. MIT License.
Ricky Reusser, Philipp Burckhardt, Tim Bright