lomath
Version:
Lomath is a tensorial math library extended from lodash.
115 lines (79 loc) • 3.78 kB
Markdown
[](http://badge.fury.io/js/lomath) [](https://travis-ci.org/kengz/lomath) [](https://coveralls.io/r/kengz/lomath?branch=master) [](https://gemnasium.com/kengz/lomath)
[**Lomath**](https://github.com/kengz/lomath) is a tensorial math library extended from [`lodash`](https://lodash.com), with performant math functions applicable to tensors(multi-arrays). It also has a standalone plotting module that using `HighCharts` and `BrowserSync`.
See the [API documentation](http://kengz.github.io/lomath/). For the included functions, see the [lodash API documentation](https://lodash.com/docs).
[](https://gitter.im/kengz/lomath?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
**Installation**:
```
npm install lomath
```
To use the plotting module, do:
```
// in the terminal at your project's root, do:
cd node_modules/lomath
npm install
```
See the [API documentation](http://kengz.github.io/lomath/) and [lodash API documentation](https://lodash.com/docs) for example usage.
**Lomath** comes with the latest version of [`lodash`](https://lodash.com), and more. Use it as you would normally use `lodash` or `underscore`, and it has many math functions familiar to users of the `R` language.
For clearer terminology, we call `tensors` the generic data structures:
| data structure | terminology |
|:---|:---|
| `0` | scalar = rank-0 tensor |
| `[1, 2, 3]` | vector = rank-1 tensor |
| `[[1, 2], [3, 4]]` | matrix = rank-2 tensor |
| ...and so on | rank-n tensor |
You can also extend `lomath` and define your own function that applies to tensors, using the function composition module such as `_.distribute, _.asso`, etc.
<img src="./docs/demo.gif" alt="Sample plot" width="100%" style="display:inline-block" />
`lomath` comes with a standalone plotting module that using `HighCharts` and `BrowserSync`. Just run your JS file normally when you plot (example below), and it will automatically pull up a browser showing you the charts; you can save them!
**Demo**: see `demo/demo.js` for magic.
```
var _ = require('lomath');
// use lodash as usual
var v = _.range(10);
// lomath: generalized math functions applicable to multi-array
var vv = _.square(v);
console.log(v);
console.log(vv);
// prints all the functions in lomath
// console.log(_.functions(_));
// data visualization: highcharts plotter
// call contructor of highcharts plotter. Note the ()
var hc = _.hc();
// first, list all you wish to plot.
hc.plot(
[{
name: "linear",
data: v
}, {
name: "square",
data: vv
}],
"Title 1"
)
hc.plot(
[{
name: "log",
data: _.log(v)
}],
"Title 2"
)
//optionally you can use the original HighCharts plot options object by:
hc.advPlot(HighChartsOptions);
// Magic here! Finally, the command to render all the plots above.
// Pulls up a browser (default to chrome for better support) with the charts.
// calling hc.render(true) will autosave all plots to your downloads folder.
hc.render();
```
- add timer tick tock
- Multivar methods for ML: special dot, matrix mult, sum of expression using index, trace, det, inverse, logistic fn.
- add aliases
- add Randomjs engine
- higher dimensional math
- JSON object methods
- more stats methods: sample, multidim probs, covarience, distributions
- performance benchmark