{"id":20418673,"url":"https://github.com/stefan-zobel/jamu","last_synced_at":"2025-10-28T22:47:00.310Z","repository":{"id":48072636,"uuid":"235207987","full_name":"stefan-zobel/JAMU","owner":"stefan-zobel","description":"JAMU - Java Matrix Utilities built on top of Intel's oneAPI Math Kernel Library (oneMKL)","archived":false,"fork":false,"pushed_at":"2024-04-12T21:33:43.000Z","size":645,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T14:14:38.104Z","etag":null,"topics":["blas","intel-mkl-library","intel-onemkl","java","jni","lapack","linear-algebra","matrix","mkl"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stefan-zobel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-20T22:07:11.000Z","updated_at":"2023-08-06T10:08:59.000Z","dependencies_parsed_at":"2023-01-29T21:46:08.459Z","dependency_job_id":"f9843a0a-f2cd-44dc-a577-8a56301a781d","html_url":"https://github.com/stefan-zobel/JAMU","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-zobel%2FJAMU","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-zobel%2FJAMU/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-zobel%2FJAMU/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefan-zobel%2FJAMU/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefan-zobel","download_url":"https://codeload.github.com/stefan-zobel/JAMU/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241960883,"owners_count":20049344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blas","intel-mkl-library","intel-onemkl","java","jni","lapack","linear-algebra","matrix","mkl"],"created_at":"2024-11-15T06:34:15.123Z","updated_at":"2025-10-28T22:47:00.286Z","avatar_url":"https://github.com/stefan-zobel.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CodeQL](https://github.com/stefan-zobel/JAMU/actions/workflows/codeql.yml/badge.svg)](https://github.com/stefan-zobel/JAMU/actions/workflows/codeql.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/net.sourceforge.streamsupport/jamu.svg)](http://mvnrepository.com/artifact/net.sourceforge.streamsupport/jamu)\n[![javadoc.io](https://javadoc.io/badge2/net.sourceforge.streamsupport/jamu/javadoc.svg)](https://javadoc.io/doc/net.sourceforge.streamsupport/jamu)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n# JAMU\n\nJAMU - Java Matrix Utilities built on top of the [dedekind-MKL](https://github.com/stefan-zobel/dedekind-MKL) wrapper\n\n*JAMU* has its focus on general dense matrices, there is no dedicated support for sparse matrices or special matrix structures like symmetric, triangular, (tri-)diagonal, banded or block matrices. \n\nUnlike many other Java matrix libraries, *JAMU* supports real ([MatrixD](https://github.com/stefan-zobel/JAMU/blob/master/src/main/java/net/jamu/matrix/MatrixD.java) and [MatrixF](https://github.com/stefan-zobel/JAMU/blob/master/src/main/java/net/jamu/matrix/MatrixF.java)) as well as complex matrices ([ComplexMatrixD](https://github.com/stefan-zobel/JAMU/blob/master/src/main/java/net/jamu/matrix/ComplexMatrixD.java) / [ComplexMatrixF](https://github.com/stefan-zobel/JAMU/blob/master/src/main/java/net/jamu/matrix/ComplexMatrixF.java)) for both single (`float` =\u003e `F` suffix) and double (`double` =\u003e `D` suffix) precision. The API is organized in 4 parallel (independent) inheritance hierarchies of which each provides the same methods. Together with the sole utility class [Matrices](https://github.com/stefan-zobel/JAMU/blob/master/src/main/java/net/jamu/matrix/Matrices.java) this offers a no frills API that is easy to use. *JAMU* doesn't provide distinguished *vectors*, whenever you want to work with vectors you should use a `n x 1` (column vector) matrix or `1 x n` (row vector) matrix instead.  \n\nAs to the supported matrix operations, apart from the usual suspects that each matrix library has to offer, the `LU`, `QR`, `EVD` and `SVD` decompositions are covered. Additionally, the Moore-Penrose `Pseudo-Inverse`, matrix exponentials (`expm`), `mldivide`, `mrdivide`, a couple of matrix norms, (de-)serialization of matrices and functions for the distance and approximate equality of matrices are also provided. Just give it a go.  \n\n\n### Matrix size limitations\n\nMatrices in *JAMU* are internally backed by 1-dimensional Java arrays in column-major storage layout which get passed to the *C* BLAS / LAPACK routines from Intel MKL (in a no-copy fashion). As such, the total size of a matrix is constrained by the maximum length of a Java array. In other words, if your matrix dimension `m x n` gets beyond `2^31 - 1` you can't use JAMU.   \n\n\n### Where it shines\n\n... is speed for not too small matrices. If you regularly work with `10 x 10` matrices use something else. If your matrix dimension is more like `1000 x 1000` or larger and you have lots of `Level 3` matrix operations (like matrix multiplication or matrix decompositions) there is nothing in the Java world which can beat the performance of the underlying MKL implementation. \n\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003enet.sourceforge.streamsupport\u003c/groupId\u003e\n    \u003cartifactId\u003ejamu\u003c/artifactId\u003e\n    \u003cversion\u003e1.4.7\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\n### Setup\n\n*JAMU* depends on the [dedekind-MKL](https://github.com/stefan-zobel/dedekind-MKL) library which itself expects a functional Intel MKL installation. Turn to its [readme](https://github.com/stefan-zobel/dedekind-MKL/blob/master/README.md) for a description of where to get and how to setup the MKL libraries. \n\n\n### Credits\n\n* the API is for the most part inspired by [JAMA](https://math.nist.gov/javanumerics/jama/) and [MTJ](https://github.com/fommil/matrix-toolkits-java) \n* the implementation owes somewhat to the [MTJ](https://github.com/fommil/matrix-toolkits-java) design\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefan-zobel%2Fjamu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefan-zobel%2Fjamu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefan-zobel%2Fjamu/lists"}