* * *
stdlib ([/ˈstændərd lɪb/][ipa-english] "standard lib") is a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing applications. The library provides a collection of robust, high performance libraries for mathematics, statistics, data processing, streams, and more and includes many of the utilities you would expect from a standard library.
This is the GitHub repository of stdlib source code and documentation. For help developing stdlib, see the [development guide][stdlib-development].
## Features
- 150+ [special math functions][@stdlib/math/base/special].
- 35+ [probability distributions][@stdlib/stats/base/dists], with support for evaluating probability density functions (PDFs), cumulative distribution functions (CDFs), quantiles, moments, and more.
- 35+ [seedable pseudorandom number generators][@stdlib/random/base] (PRNGs).
- 200+ general [utilities][@stdlib/utils] for data transformation, functional programming, and asynchronous control flow.
- 200+ [assertion utilities][@stdlib/assert] for data validation and feature detection.
- 50+ [sample datasets][@stdlib/datasets] for testing and development.
- A [plot API][@stdlib/plot/ctor] for data visualization and exploratory data analysis.
- Native add-ons for interfacing with BLAS libraries, with pure JavaScript fallbacks.
- A [benchmark framework][@stdlib/bench/harness] supporting TAP.
- REPL environment with integrated help and examples.
- Can be bundled using [Browserify][browserify], [Webpack][webpack], and other bundlers for use in web browsers.
## Resources
- [**Homepage**][stdlib-homepage]
- [**Documentation**][stdlib-documentation]
- [**Source code**][stdlib-source]
- [**Code coverage**][stdlib-code-coverage]
- [**FAQ**][stdlib-faq]
### External Resources
- [**Twitter**][stdlib-twitter]
- [**Gitter**][stdlib-gitter]
## Prerequisites
Running stdlib **requires** the following prerequisites:
- [Node.js][node-js]: JavaScript runtime (version `>= 0.10`)
- [npm][npm]: package manager (version `> 2.7.0`; if Node `< 1.0.0`, version `> 2.7.0` and `< 4.0.0`; if Node `< 6.0.0`, version `> 2.7.0` and `< 6.0.0`)
Most functionality in stdlib is implemented exclusively in JavaScript; however, some implementations try to capture performance benefits by using [native bindings][node-js-add-ons] and/or [WebAssembly][webassembly]. While **not** required to run stdlib, as **every** stdlib implementation has a JavaScript fallback, the following dependencies are **required** for building native add-ons, including linking to BLAS and LAPACK libraries:
- [GNU make][make]: development utility and task runner
- [GNU bash][bash]: an sh-compatible shell
- [gcc & g++][gcc] or [Clang][clang]: C/C++ compilation and linking (g++ version `>= 4.8`; clang version `>= 3.5`, Xcode version `>=8.3.1` on OS X)
- [gfortran][gfortran]: Fortran compilation and linking (version `>= 4.8`)
While **not** required to run stdlib, the following dependencies are **required** for automatically downloading external libraries:
- [curl][curl], [wget][wget], or [fetch][fetch] (FreeBSD): utilities for downloading remote resources
The following external libraries can be automatically downloaded and compiled from source using `make`:
- [OpenBLAS][openblas]: optimized BLAS library
- [Electron][electron]: framework for cross-platform desktop applications
## Installation
To install as a library or application dependency,
```bash
$ npm install @stdlib/stdlib
```
To install globally for use as a command-line utility,
```bash
$ npm install -g @stdlib/stdlib
```
which will expose the `stdlib` command. For example, to see available sub-commands
```bash
$ stdlib help
```
For distributable bundles for use in browser environments, see the [`dist`][stdlib-bundles] directory and associated [guide][stdlib-bundles].
Otherwise, to install as a system library, follow the [download][stdlib-development], [configuration][stdlib-development], and [installation][stdlib-development] instructions as described in the [development guide][stdlib-development].
* * *
## Contributing
See the [contributing guidelines][stdlib-contributing].
## License
See [LICENSE][stdlib-license].
## Copyright
Copyright © 2016-2018. The Stdlib [Authors][stdlib-authors].
* * *
## Status
[![stability-experimental][stability-image]][stability-url]
#### Version
[![git tag][tag-image]][tag-url] [![NPM version][npm-image]][npm-url] [![Node.js version][node-image]][node-url]
#### Build
| OS | Build (master) | Coverage (master) | Build (develop) | Coverage (develop) |
| ---------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Linux/OS X | [![Linux/OS X build status (master)][build-image-master]][build-url-master] | [![coverage (master)][coverage-image-master]][coverage-url-master] | [![Linux/OS X build status (develop)][build-image-develop]][build-url-develop] | [![coverage (develop)][coverage-image-develop]][coverage-url-develop] |
| Windows | [![Windows build status (master)][windows-build-image-master]][windows-build-url-master] | [![coverage (master)][coverage-image-master]][coverage-url-master] | [![Windows build status (develop)][windows-build-image-develop]][windows-build-url-develop] | [![coverage (develop)][coverage-image-develop]][coverage-url-develop] |
#### Dependencies
[![Dependencies][dependencies-image]][dependencies-url] [![DevDependencies][dev-dependencies-image]][dev-dependencies-url]
#### Community
[![Chat][chat-image]][chat-url]
* * *
[stability-image]: https://img.shields.io/badge/stability-experimental-orange.svg
[stability-url]: https://github.com/stdlib-js/stdlib
[npm-image]: https://img.shields.io/npm/v/@stdlib/stdlib.svg
[npm-url]: https://npmjs.org/package/@stdlib/stdlib
[tag-image]: https://img.shields.io/github/tag/stdlib-js/stdlib.svg
[tag-url]: https://github.com/stdlib-js/stdlib/tags
[node-image]: https://img.shields.io/node/v/@stdlib/stdlib.svg
[node-url]: https://github.com/@stdlib-js/stdlib
[build-image-master]: https://img.shields.io/travis/stdlib-js/stdlib/master.svg
[build-url-master]: https://travis-ci.org/stdlib-js/stdlib
[build-image-develop]: https://img.shields.io/travis/stdlib-js/stdlib/develop.svg
[build-url-develop]: https://travis-ci.org/stdlib-js/stdlib
[windows-build-image-master]: https://ci.appveyor.com/api/projects/status/github/stdlib-js/stdlib?branch=master&svg=true
[windows-build-url-master]: https://ci.appveyor.com/api/projects/status/github/stdlib-js/stdlib?branch=master&svg=true
[windows-build-image-develop]: https://ci.appveyor.com/api/projects/status/github/stdlib-js/stdlib?branch=develop&svg=true
[windows-build-url-develop]: https://ci.appveyor.com/api/projects/status/github/stdlib-js/stdlib?branch=develop&svg=true
[coverage-image-master]: https://img.shields.io/codecov/c/github/stdlib-js/stdlib/master.svg
[coverage-url-master]: https://codecov.io/github/stdlib-js/stdlib/branch/master
[coverage-image-develop]: https://img.shields.io/codecov/c/github/stdlib-js/stdlib/develop.svg
[coverage-url-develop]: https://codecov.io/github/stdlib-js/stdlib/branch/develop
[dependencies-image]: https://img.shields.io/david/stdlib-js/stdlib/develop.svg
[dependencies-url]: https://david-dm.org/stdlib-js/stdlib/develop
[dev-dependencies-image]: https://img.shields.io/david/dev/stdlib-js/stdlib/develop.svg
[dev-dependencies-url]: https://david-dm.org/stdlib-js/stdlib/develop#info=devDependencies
[chat-image]: https://img.shields.io/gitter/room/stdlib-js/stdlib.svg
[chat-url]: https://gitter.im/stdlib-js/stdlib/
[make]: https://www.gnu.org/software/make
[bash]: https://www.gnu.org/software/bash/
[curl]: http://curl.haxx.se/
[wget]: http://www.gnu.org/software/wget
[fetch]: http://www.freebsd.org/cgi/man.cgi?fetch%281%29
[node-js]: https://nodejs.org/en/
[npm]: https://www.npmjs.com/
[gcc]: http://gcc.gnu.org/
[clang]: http://clang.llvm.org/
[gfortran]: https://gcc.gnu.org/fortran/
[openblas]: https://github.com/xianyi/OpenBLAS
[electron]: https://electron.atom.io/
[webassembly]: http://webassembly.org/
[node-js-add-ons]: https://nodejs.org/api/addons.html
[browserify]: https://github.com/substack/node-browserify
[webpack]: https://webpack.js.org/
[ipa-english]: https://en.wikipedia.org/wiki/Help:IPA/English
[stdlib-contributing]: https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md
[stdlib-development]: https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md
[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors
[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/stdlib/develop/LICENSE
[stdlib-homepage]: https://github.com/stdlib-js/stdlib
[stdlib-documentation]: https://github.com/stdlib-js/stdlib
[stdlib-faq]: https://github.com/stdlib-js/stdlib/blob/develop/FAQ.md
[stdlib-source]: https://github.com/stdlib-js/stdlib
[stdlib-bundles]: https://github.com/stdlib-js/stdlib/tree/develop/dist
[stdlib-code-coverage]: https://codecov.io/github/stdlib-js/stdlib/branch/develop
[stdlib-twitter]: https://twitter.com/stdlibjs
[stdlib-gitter]: https://gitter.im/stdlib-js/stdlib
[@stdlib/math/base/special]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special
[@stdlib/stats/base/dists]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/dists
[@stdlib/random/base]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/random/base
[@stdlib/assert]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert
[@stdlib/datasets]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/datasets
[@stdlib/utils]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/utils
[@stdlib/plot/ctor]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/plot/ctor
[@stdlib/bench/harness]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/bench/harness