# MathLib

Homepage - Download - Demonstrations - Documentation

MathLib.js is a JavaScript library for mathematical computations. It can handle circles, complex numbers, expressions, functions, lines, integers, matrices, permutations, points, polynomials, rational numbers, sets, and vectors.

There is a SVG and Canvas renderer for 2D plotting. 3D plotting is supported with Three.js.

Further it can parse Content MathML and write Content MathML, Presentation MathML and LaTeX.

## Test Suite

MathLib has an extensive QUnit test suite with more than 2100 tests. Crossbrowser tests are automated with Sauce Labs' Open Sauce and are run by Travis on every commit.

## Getting Started

### In the browser

Download the production version or the development version.

Alternatively you can use Bower:

    bower install MathLib

or npm:

    npm install MathLib

Include MathLib in your web page:

    <script src="path/to/MathLib.min.js"></script>
    <script>
    // Your code goes here
    </script>

Alternatively you can use the AMD, CommonJS or ES6 modules contained in the build directory.

If you want to use the plotting functionality you also need to download the MathLib.css or the MathLib.min.css file and link to it in the head of your document:

    <link rel="stylesheet" href="path/to/MathLib.min.css" charset="utf-8">

## Contributing

### Building MathLib

Open your Terminal, clone MathLib

    git clone git://github.com/alawatthe/MathLib.git

Enter the directory

    cd MathLib

and run

    npm install

to install the development dependencies (For this you need to have Node.js installed).

Run

    grunt help

to get an overview of the available grunt tasks.

### Making Changes

Make your changes to the files in the src directory. Do not edit the files in the build directory, these files will be generated via grunt.

Please maintain the current coding style and stick to the style guide.
New functionality should always be added with proper testing and documentation.

## Release History

- v0.7.0: AMD, CommonJS, ES6 modules
- v0.6.0: Conics module
- v0.5.0: removed MathML module and improved Expression module
- v0.4.0: Typescript, better plotting
- v0.3.0: grunt integration
- v0.2.0: Improved function and MathML modules
- v0.1.0: Initial release

## License

Copyright (c) 2013 Alexander Zeilmann
Licensed under the MIT license.