git clone 'https://github.com/mikera/matrix-api.git'
core.matrix provides array programming as a language extension for Clojure, with a focus on numerical computing.
The central objective of
core.matrix is to make matrix and array programming
idiomatic, productive, elegant and fast in the Clojure environment.
(+ [[1 2] [3 4]] (* (identity-matrix 2) 3.0)) => [[4.0 2.0] [3.0 7.0]] ;; Note: nested Clojure vectors can be used as matrices
Key goals of
core.matrix, you can get the latest released version from Clojars:
For code examples see:
For a general introduction, the slide and video from the 2013 Clojure Conj talk are available here:
core.matrix documentation and further examples see the Wiki:
core.matrix is fully functional and usable in production applications. As well as supporting
the standard Clojure data structures, multiple back end implementations exist that provide optimised
matrix implementations. The most mature implementations are currently:
However the API is still subject to some changes at present (at least up until release 1.0.0), so users should be prepared to deal with potential breaking changes when updating to future releases.
The plan is to become an official Clojure Contrib language extension once the API has been well tested.
All contributions / ideas welcome!
There are a number of proposed enhancements listed as GitHub issues: these are a good place to start if you wish to contribute to core.matrix:
If you wish to contribute code, please ensure you have a Clojure Contributors Agreement signed and on file. For more information see:
Discussions related to core.matrix generally take place on the “Numerical Clojure” group:
If you are interested in writing a
core.matrix implementation, see:
You can also find a protocol implementation summary here:
YourKit is kindly supporting this open source project with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.