https://github.com/mikera/vectorz-clj.git
git clone 'https://github.com/mikera/vectorz-clj.git'
(ql:quickload :mikera.vectorz-clj)
Fast vector library for Clojure, building on the Vectorz library and designed to work with the core.matrix array programming API.
vectorz-clj is designed so that you don't have to compromise, offering both:
The library was originally designed for games, simulations and machine learning applications,
but should be applicable for any situations where you need numerical double arrays.
Important features:
Vector3 for fast 3D maths.For more information see the vectorz-clj Wiki.
vectorz-clj requires Clojure 1.4 or above, and an up to date version of core.matrix
vectorz-clj is reasonably stable, and implements all of the core.matrix API feature set. The core.matrix API
is still under development, so users may expect some minor changes to the API in future releases.
Like Vectorz, vectorz-clj is licensed under the LGPL license:
Follow the instructions to install with Leiningen / Maven from Clojars:
You can then use Vectorz as a standard core.matrix implementation. Example:
(use 'clojure.core.matrix)
(use 'clojure.core.matrix.operators) ;; overrides *, + etc. for matrices
(set-current-implementation :vectorz) ;; use Vectorz as default matrix implementation
;; define a 2x2 Matrix
(def M (matrix [[1 2] [3 4]]))
M
=> #<Matrix22 [[1.0,2.0][3.0,4.0]]>
;; define a length 2 vector (a 1D matrix is considered equivalent to a vector in core.matrix)
(def v (matrix [1 2]))
v
=> #<Vector2 [1.0,2.0]>
;; Matrix x Vector elementwise multiply
(mul M v)
=> #<Matrix22 [[1.0,4.0],[3.0,8.0]]>
;; Matrix x Vector matrix multiply (inner product)
(inner-product M v)
=> #<Vector2 [5.0,11.0]>
For more examples see Wiki Examples