Hi All,

I just open sourced a new Clojure library vectorz-clj with support for high 
performance vector maths in Clojure. It's fairly general purpose, and 
designed for use in 3D games, simulations and machine learning 
applications. I'm using it for my own machine learning apps and it is 
working very well (e.g. my talk at the Clojure Conj 2012 features some 
example usage)

Design goals:
 - Pure Java (i.e. avoid the need for dependencies on native code libraries 
like BLAS)
 - High performance, roughly defined as "as fast as you can reasonably get 
on the JVM"
 - Support multiple types of concrete vectors, e.g. primitive x,y,z 3D 
vectors as well as large general purpose (1000+ dimension vectors)
 - A nice Clojure API for vector operations (work in progress!)

The need for high performance means that underlying vectors need to be 
mutable (apologies to the purists!), however to make the API nice I've 
provided pure functional versions of operations as well as the in place 
operations that mutate their arguments. Hopefully this is a nice compromise 
between having access to high performance operations when you need them and 
allowing idiomatic Clojure usage when you don't e.g.

In-place "add!" mutates vector a:
  (add! a b)

Pure "add" creates a new vector:
  (let [result (add a b)] ....)

The Clojure library is here: https://github.com/mikera/vectorz-clj
The underlying vector data structures are in a separate Java 
library: https://github.com/mikera/vectorz

Contributions / comments / suggestions very welcome. API is not yet set in 
stone, so I'm very open to ideas on how to make it better.

  Mike.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to