GithubHelp home page GithubHelp logo

jafingerhut / core.matrix Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mikera/core.matrix

0.0 3.0 0.0 3.36 MB

core.matrix : Multi-dimensional array programming API for Clojure

License: Other

Clojure 99.54% Emacs Lisp 0.11% Java 0.35%

core.matrix's Introduction

core.matrix

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:

  • Provide a clear, standard API / abstraction for matrix and array programming in Clojure
  • Enable pluggable support for different underlying matrix library implementations
  • Provide a general purpose n-dimensional array implementation (NDArray)
  • Provide a foundation library for other projects (e.g. Incanter)
  • Enable high performance numerical computing

Getting Started

To use core.matrix, you can get the latest released version from Clojars:

For code examples see:

Documentation

For a general introduction, the slide and video from the 2013 Clojure Conj talk are available here:

For core.matrix documentation and further examples see the Wiki:

Status

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:

  • vectorz-clj : a fast pure-JVM matrix library for Clojure
  • Clatrix : native code matrix library using BLAS
  • NDArray : a general purpose pure Clojure N-dimensional array implementation, included as part of core.matrix itself

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.

Build Status

Contributing

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:

Thanks

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.

core.matrix's People

Contributors

4gh avatar adereth avatar bmabey avatar danielcompton avatar drone29a avatar durka avatar ejackson avatar farrellm avatar gerrrr avatar grtlr avatar heffalump avatar hokkaido avatar jafingerhut avatar jolby avatar mikera avatar mschuene avatar munk avatar prasant94 avatar quantisan avatar rosejn avatar sethyuan avatar si14 avatar siscia avatar tim-brooks avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.