On Sun, Dec 5, 2010 at 6:27 PM, Robert McIntyre <r...@mit.edu> wrote: > I'm trying to use clojure for scientific data analysis but I keep > running into lacunas of functionality. > > I'd love to hear the community's recommendations and experiences with this: > > Is there a standard way to do things like: > 1. take the convolution of two vectors > 2. work with imaginary numbers, quaternions, octonions, etc > 3. work with matrices of arbitrary dimension > 4. Fourier transform ( in multiple dimensions) > 5. integration / finite difference > 6. symbolic manipulation as in sage > 7. minimizing non-linear functions > 8. finding zeros of non-linear functions
Standard, as in built into Clojure? No. Standard as in algorithmic? Of course. There are two options here. First, many of those things are fairly easily implemented in Clojure, and with a bit more work can be made very efficient (essentially, native-C efficient). For instance, for matrices you'd want a contiguous representation in memory so you'd use a vector, or even a Java array of doubles, of length m*n and functions that provided a matrix API and used this representation internally. With definline and macros this can be made efficient, and a Java array of doubles could have the speed of equivalent C code since it would be a contiguous block of doubles in RAM just as you'd get in C. Second, there are probably lots of existing scientific-computing libraries for Java out there that do the things you need done, and Clojure can load and call into Java libraries pretty easily. -- 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