As highlighted on the Github repository, JASMAL
- can handle both real and complex data
- supports manipulate ndarrays (just like NumPy)
- supports broadcasting for most of the binary operations
- supports a flexible indexing/slicing scheme similar to that of NumPy
- has more than 100 operations implemented
Similar to MATLAB and NumPy, you can create new matrices via
let A = T.zeros([3, 4]); let B = T.ones([4, 4]); let C = T.eye(5); let D = T.fromArray([[1, 2], [3, 4]]);
T is the JASMAL instance. Indexing and slicing is very similar to that of
let A = T.zeros([3, 3]); A.set(0, 1, 10); // Equivalent to A[0, 1] = 10 in NumPy A.get('::-1', ':'); // Equivalent to A[::-1, :] in NumPy. Reverses all the rows. A.set([0, -1], ':', 8); // Sets the first and the last row to 8.
T.matmul(A, T.add(B, C))instead of
A * (B + C).
JASMAL provides a large collection of functions for
- manipulating ndarrays (e.g.,
- random number generation (e.g.,
- math operations for both real and complex numbers (e.g.
- matrix operations for both real and complex matrices (e.g.,
- matrix decompositions for both real and complex matrices (e.g.,
- statistics (e.g.,
- set operations (e.g.,
- polynomials (e.g.,
For a complete list of references, you are welcomed to check out my Github. I hope you find JASMAL useful :)