roxeteer / efficient-java-matrix-library

Automatically exported from code.google.com/p/efficient-java-matrix-library

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

                 Efficient Java Matrix Library

                         Version 0.24
                         2013 12 26

                    Author: Peter Abeles
                            peter.abeles@gmail.com 

  Project Website: http://code.google.com/p/efficient-java-matrix-library/

==========================================================================
----- Introduction

Efficient Java Matrix Library (EJML) is a linear algebra library for manipulating dense matrices. Its design goals are; 1) to be as computationally and memory efficient as possible for both small and large matrices, and 2) to be accessible to both novices and experts.  These goals are accomplished by dynamically selecting the best algorithms to use at runtime and by designing a clean API.  EJML is free, written in 100% Java and has been released under the Apache v2.0 open source license.

EJML has three distinct ways to interact with it.  This allows a programmer to choose between simplicity and efficiency.  1) A simplified interface that allows a more object oriented way of programming.  2) Procedural interface that provides greater control over memory and speed.  3) Directly calling specialized algorithms.  In general EJML is one the fastest single threaded pure Java library and has additional optimizations for small matrices.  See http://code.google.com/p/java-matrix-benchmark/ for a detailed comparison of different libraries.

The following functionality is provided:

    * Basic operators (addition, multiplication, ...)
    * Matrix Manipulation (extract, insert, combine, ...)
    * Linear Solvers (linear, least squares,incremental, ...)
    * Decompositions (LU, QR, Cholesky, SVD, Eigenvalue, ...)
    * Matrix Features (rank, symmetric, definitiveness, ...)
    * Random Matrices (covariance, orthogonal, symmetric, ...)
    * Different Internal Formats (row-major, block) 

Unit tests are extensively used to ensure correctness of each algorithm's implementation.  Internal benchmarks and Java Matrix Benchmark are both used to ensure the speed of this library.

==========================================================================
----- Documentation

For a more detailed explanation of how to use the library see:

http://code.google.com/p/efficient-java-matrix-library/wiki/EjmlManual

The JavaDoc has also been posted online at:

http://efficient-java-matrix-library.googlecode.com/svn/javadoc/ver0.17/index.html

==========================================================================
----- Building

The provided ant script is the easiest way to build an EJML jar. In linux it can be built using a command line by changing into the EJML directory and typing "ant". Then you should see text like:


Buildfile: build.xml

clean:
   [delete] Deleting directory ejml/trunk/build

compile:
    [mkdir] Created dir: ejml/trunk/build/classes
    [javac] Compiling 130 source files to ejml/trunk/build/classes

jar:
    [mkdir] Created dir: ejml/trunk/build/jar
      [jar] Building jar: ejml/trunk/build/jar/EJML.jar

To create the JavaDoc simply type "ant javadoc" and "ant test" to run unit tests.

==========================================================================
----- File System

benchmarks/
-  contains code for several speed and stability benchmarks that were used during development.

docs/
- Documentation for this library. This documentation is often out of date and online is the best place to get the latest.

examples/
- Contains several examples of how EJML can be used to solve different problems or how EJML can be modified for different applications.

experimental/
- Where experimental or alternative approaches and possibly buggy code goes that is not ready to be used by most users.

src/
- Source code.

test/
- Unit tests for source code.

change.txt
- History of what changed between each version.

TODO_Algorithms.txt
- Contains a list of what needs to be added to this library.

==========================================================================
----- Questions and Comments 

A public message board has been created for asking questions and making comments:

http://groups.google.com/group/efficient-java-matrix-library-discuss

Bugs can either be posted on that message board or at:

http://code.google.com/p/efficient-java-matrix-library/issues/list

==========================================================================
----- Acknowledgements

I would like to thank all the people have made various comments, suggestions, and reported bugs.  Also David Watkins
for writing "Fundamentals of Matrix Computations", which clearly explains algorithms and yet addresses important
implementation issues.

==========================================================================
----- License

EJML is released under the Apache v2.0 open source license

About

Automatically exported from code.google.com/p/efficient-java-matrix-library


Languages

Language:Java 99.9%Language:HTML 0.1%