❄️A lightweight math library for JavaScript. It features a flexible expression parser comes with a large set of built-in functions and constants. Powerful and easy to use.
In active development, any pull request will be welcome :)
npm install --save sylver
# or
yarn add sylver
// load sylver
var sylver = require('sylver');
// basic
sylver("(3*2)+6") // 12
sylver("~16") // -16
sylver("7!") // 5040
// compare (0 = false; 1 = true)
sylver("32<>32") // 0
sylver("(10*2)<=(40+3)") // 1
sylver("11 eq 11") // 1
sylver("4<=9") // 1
// conditions
sylver("if(3+8<=23)12:3") // 12
// intervals
sylver("2 to 8") // [2, 3, 4, 5, 6, 7, 8]
sylver("(4*PI) to (23/2)") // [11.5, 12.5]
sylver("2 * (6 to 10)") // [ 12, 14, 16, 18, 20 ]
// list
sylver("[2, 3, 5, 1] * [6, 3, 5, 4, 102]") // [ 12, 9, 25, 4, 102 ]
// algebra
sylver("cos(4)") // -0.6536436208636119
sylver("atan(7)") // 1.4288992721907328
sylver("atanh(-0.4)") // -0.4236489301936018
// See: test/algebra1.js
// Other
sylver("abs(ln(2)*(4^3))*(if(3<>6) 2:5)") // 88.722839111673
npm i -g sylver
# or
yarn global add sylver
Enter from the command terminal:
sylver --help
Operator | Description |
---|---|
+ | addition |
- | subtraction |
∗ | multiplication |
/ | right division, i.e. x/y
|
ˆ | power, i.e. x^y
|
functions |
---|
log log10 log1p log2 sqrt, cos, tan, sin, atan, asin, acos, atanh, acosh, asinh |
Sylver is able to generate lists of numbers from a range:
sylver("1 to 7") // [ 1, 2, 3, 4, 5, 6, 7 ]
sylver("2 * (6 to 10)") // [12, 14, 16, 18, 20]
sylver("(1 to 4) * [2, 4, 6, 7]") // [ 2, 8, 18, 28 ]
sylver("(1 to 4) * 3") // [ 3, 6, 9, 12 ]
sylver("1 to (10/2) + 10") // [11, 12, 13, 14, 15]
The order of the operators is important:
sylver("10 / [2, 5, 4]") // [5, 2, 2.5]
// This is different from:
sylver("[2, 5, 4] / 10") // [0.2, 0.5, 0.4]
Evaluate expressions and returns a decision:
sylver(`if((5*2)>(6*2)) 80 : 35 `) // 35
You can use the returned result to operate with other expressions:
sylver("(if(3>0)1:2)*5)") // 5
Currently there are two constants available: PI
, E
sylver("PI") // 3.141592653589793
sylver("E") // 2.718281828459045
The creation of variables is dynamic, it is not necessary to specify the data type: Imagine that you are creating a variable in javascript but without specifying var.
A variable can contain a number or a list of numbers.
// Create a variable
sylver("var12 := ((1 to 5) * 34)")
// Get value of a variable
sylver(":var12") // [ 34, 68, 102, 136, 170 ]
When you create a variable, the data that has been assigned is returned:
sylver("hello := 123") // 123
// e.g.
sylver("(bye := 5) * 2") // 10
// TODO: Version for browsers in development Sylver works on any ES5 compatible JavaScript engine: node.js 0.10, and Internet Explorer 9 and newer, and all other browsers (Chrome, Firefox, Safari). If support for old browsers like Internet Explorer 8 is required, the es5-shim library has to be loaded.
First clone the project from github:
git clone https://github.com/juliandavidmr/sylver.git
cd sylver
Install the project dependencies:
npm install
# or
yarn
To execute tests for the library, install the project dependencies once:
npm install
Then, the tests can be executed:
npm test
The tests are run with ava
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
We use SemVer for versioning.
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE file for details