Skip to content

scijs/ndarray-blas-level1

Repository files navigation

ndarray-blas-level1

Build Status npm version Dependency Status js-semistandard-style

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.

Usage

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) x \leftrightarrow y Swap the elements of x and y
scal(alpha,x) x \leftarrow \alpha x Multiple vector x by scalar alpha
copy(x,y) y \leftarrow x Copy x into y
axpy(alpha, x, y) y \leftarrow \alpha x + y Multiple x by alpha and add it to y
cpsc(alpha, x, y) y \leftarrow \alpha x Multiply x by alpha and assign it to y
dot(x,y) dot \leftarrow x^T y Calculate the inner product of x and y.
nrm2(x) nrm2 \leftarrow ||x||_2 Calculate the 2-norm of x
asum(x) asum \leftarrow ||x||_1 Calculate the 1-norm of x
iamax(x) \underset{i} {\mathrm{argmax}} |x_i| the argmax of x
rotg(a,b) Calculates the Givens rotation parameters [c, s, r]

|

Example

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);

License

© 2015 Scijs. MIT License.

Authors

Ricky Reusser, Philipp Burckhardt, Tim Bright

About

BLAS Level 1 operations for ndarrays

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •