Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mathjs

Package Overview
Dependencies
Maintainers
1
Versions
282
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mathjs - npm Package Compare versions

Comparing version 0.6.0 to 0.7.0

examples/basic_usage.js

16

HISTORY.md

@@ -5,2 +5,18 @@ # math.js history

## 2013-04-20, version 0.7.0
- Implemented method `math.eval`, which uses a readonly parser to evaluate
expressions.
- Implemented method `xgcd` (extended eucledian algorithm). Thanks Bart Kiers.
- Improved math.format, which now rounds values to a maximum number of digits
instead of decimals (default is 5 digits, for example `math.format(math.pi)`
returns `3.1416`).
- Added examples.
- Changed methods square and cube to evaluate matrices element wise (consistent
with all other methods).
- Changed second parameter of method import to an object with options.
- Fixed method math.typeof on IE.
- Minor bug fixes and improvements.
## 2013-04-13, version 0.6.0

@@ -7,0 +23,0 @@

4

package.json
{
"name": "mathjs",
"version": "0.6.0",
"version": "0.7.0",
"description": "Math.js is an extensive math library for JavaScript and Node.js. It features real and complex numbers, units, matrices, a large set of mathematical functions, and a flexible expression parser.",

@@ -38,3 +38,3 @@ "author": "Jos de Jong <wjosdejong@gmail.com>",

"prepublish": "jake",
"test": "jake test"
"test": "jake test --trace"
},

@@ -41,0 +41,0 @@ "main": "./math.js",

@@ -14,8 +14,8 @@ ![math.js](https://raw.github.com/josdejong/mathjs/master/img/mathjs.png)

- Supports numbers, complex numbers, units, strings, arrays, and matrices.
- Is compatible with JavaScript’s built-in Math library.
- Contains a flexible expression parser.
- Compatible with JavaScript’s built-in Math library.
- Supports chained operations.
- A large set of built-in functions and constants.
- No dependencies. Runs on any JavaScript engine.
- Easily extensible.
- Comes with a large set of built-in functions and constants.
- Has no dependencies. Runs on any JavaScript engine.
- Is easily extensible.

@@ -29,3 +29,7 @@

Or the latest version of math.js can be downloaded from
Or using [bower](http://twitter.github.io/bower/):
bower install mathjs
Or by downloading the latest version from
[mathjs.org](http://mathjs.org/#install_or_download):

@@ -41,4 +45,3 @@

Math.js can be loaded in node.js using `require`, and similarly in the browser
using [require.js](http://requirejs.org/).
Load math.js in [node.js](http://nodejs.org/):

@@ -69,55 +72,106 @@ ```js

<!-- TODO: Describe how to load using require.js -->
#### Require.js
Load math.js in the browser using [require.js](http://requirejs.org/):
```js
require.config({
paths: {
mathjs: 'path/to/mathjs',
}
});
require(['mathjs'], function (math) {
math.sqrt(-4); // 2i
});
```
## Use
Math.js can be used similar to Javascript's built-in Math library.
Math.js can be used similar to JavaScript's built-in Math library. Besides that,
math.js can evaluate expressions (see [Expressions](#expressions)) and supports
chained operations (see [Chained operations](#chained-operations)).
The example code below shows how to use math.js. More examples can be found in the
[examples directory](https://github.com/josdejong/mathjs/tree/master/examples/).
```js
// load math.js
var math = require('mathjs');
// use methods and types available in the math object
var a = math.sin(math.pi / 4); // 0.7071067811865476
var b = math.pow(a, 2); // 0.5
// functions and constants
math.round(math.e, 3); // 2.718
math.atan2(3, -3) / math.pi; // 0.75
math.log(1000, 10); // 3
math.sqrt(-4); // 2i
math.pow([[-1, 2], [3, 1]], 2); // [[7, 0], [0, 7]]
var c = math.complex(3, -4); // 3 - 4i
math.sqrt(c); // 2 - i
// expressions
math.eval('1.2 / (2.3 + 0.7)'); // 0.4
math.eval('5.08 cm in inch'); // 2 inch
math.eval('sin(45 deg) ^ 2'); // 0.5
math.eval('9 / 3 + 2i'); // 3 + 2i
math.eval('det([-1, 2; 3, 1])'); // -7
math.sqrt(-4); // 2i
var f = math.unit(60, 'deg'); // 60 deg
var g = math.cos(f); // 0.5
// chained operations
math.select(3)
.add(4)
.multiply(2)
.done(); // 14
```
Operations can be performed using:
- regular function calls
- chained operations (see [Selector](#selector))
- expression parsing (see [Parser](#parser))
## Expressions
Math.js contains a flexible and easy to use expression parser.
The parser supports all data types, methods and constants available in math.js.
Expressions can be evaluated in two ways:
- Using the function [`math.eval`](#eval), which uses a read-only parser.
- Using a more flexible [parser](#parser).
### Eval
Math.js comes with a function `math.eval` to evaluate expressions.
The function `eval` does support all functions, variables, and data types
available in math.js. Internally, the function `eval` uses a read-only parser.
The following code demonstrates how to evaluate expressions.
```js
// regular function call
math.subtract(math.add(3, 4), 2); // 5
// load math.js
var math = require('mathjs');
// chained operation
math.select(3).add(4).subtract(2).done(); // 5
// evaluate expressions
var a = math.eval('sqrt(3^2 + 4^2)'); // a = 5
var b = math.eval('sqrt(-4)'); // b = 2i
var c = math.eval('2 inch in cm'); // c = 5.08 cm
var d = math.eval('cos(45 deg)'); // d = 0.7071067811865476
```
// expression parser
### Parser
The parser of math.js supports all functions, variables, and data types
available in math.js. Additionally, it supports variable and function
assignments. A parser can be created by:
```js
var parser = math.parser();
parser.eval('3 + 4 - 2'); // 5
```
The parser contains the following methods:
## Parser
- `eval(expr)`
Evaluate an expression.
- `get(name)`
Retrieve a variable or function from the parsers scope.
- `set(name, value)`
Set a variable or function in the parsers scope.
- `parse(expr)`
Parse an expression into a node tree.
A node can be evaluated as `node.eval()`.
Math.js contains a flexible and easy to use expression parser.
The parser supports all data types, methods and constants available in math.js.
It has a method `eval` to evaluate expressions,
and `parse` to parse expressions and build a node tree from it.
The parser supports variable and function definitions.
Variables and functions can be manipulated using the methods `get` and `set`.
The following code shows how to create and use a parser.
The following example code shows how to create and use a parser.
```js

@@ -157,19 +211,10 @@ // load math.js

Available methods:
var result = parser.eval(expr); // evaluate an expression
var value = parser.get(name); // retrieve a variable from the parser
parser.set(name, value); // set a variable in the parser
## Chained operations
var node = parser.parse(expr); // parse an expression into a node tree
var result = node.eval(); // evaluate a node
## Selector
Math.js supports chaining operations by wrapping a value into a `Selector`.
A selector can be created with the method `math.select(value)`.
A selector can be created with the function `math.select(value)`.
All methods available in the math namespace can be executed via the selector.
The methods will be executed with the selectors value as first argument,
followed by extra arguments provided by the method call itself.
followed by extra arguments provided by the function call itself.

@@ -180,4 +225,3 @@ ```js

.subtract(2)
.done();
// 5
.done(); // 5

@@ -187,4 +231,3 @@ math.select( [[1, 2], [3, 4]] )

.multiply(3)
.done();
// [[24, 6], [9, 12]]
.done(); // [[24, 6], [9, 12]]
```

@@ -203,7 +246,7 @@

Get a subselection of the selectors value. Only applicable when
the value has a method get, for example when value is a Matrix
the value has a function get, for example when value is a Matrix
or Array.
- `set(index, replacement)`
Replace a subselection of the selectors value. Only applicable
when the value has a method get, for example when value is a
when the value has a function get, for example when value is a
Matrix or Array.

@@ -417,2 +460,3 @@

- math.unequal(x)
- math.xgcd(a, b)

@@ -469,2 +513,3 @@ ### Complex

- math.clone(x)
- math.eval(expr)
- math.format([template, ] values)

@@ -490,3 +535,3 @@ - math.import(filename | object, override)

return 'hello, ' + name + '!';
});
}
});

@@ -557,23 +602,6 @@

- Version 0.1.0 (2013-02-18)
- Implement all methods and constants available in the built-in Math library
- Implement data types Complex and Unit
- Version 0.2.0 (2013-02-25)
- Implement Parser, Scope, Node tree
- Implement more methods
- Version 0.3.0 (2013-03-09)
- Implement Workspace
- Implement more methods
- Build a website (2013-03-11)
- Version 0.4.0 (2013-03-16)
- Implement Arrays
- Version 0.5.0 (2013-04-06)
- Implement Matrix and Range
- Version 0.6.0
- Implement chained operations
- Version 0.7.0
- Before version 1.0.0:
- More on matrices
- Version 1.0.0
- Examples and documentation
- Extensive testing
- Examples and documentation

@@ -580,0 +608,0 @@

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc