https://github.com/josdejong/mathjs
- Implemented function
math.parse(expr [,scope])
. Optional parameter scope can be a plain JavaScript Object containing variables. - Extended function
math.expr(expr [, scope])
with an additional parameterscope
, similar toparse
. Example:math.eval('x^a', {x:3, a:2});
. - Implemented function
subset
, to get or set a subset from a matrix, string, or other data types. - Implemented construction functions number and string (mainly useful inside the parser).
- Improved function
det
. Thanks Bryan Cuccioli (bcuccioli). - Moved the parse code from prototype math.expr.Parser to function math.parse, simplified Parser a little bit.
- Strongly simplified the code of Scope and Workspace.
- Fixed function mod for negative numerators, and added error messages in case of wrong input.
- Extended the import function and some other minor improvements.
- Fixed a bug in merging one dimensional vectors into a matrix.
- Fixed a bug in function subtract, when subtracting a complex number from a real number.
- Fixed an npm warning when installing mathjs globally.
- Implemented a command line interface. When math.js is installed globally via npm, the application is available on your system as 'mathjs'.
- Implemented
end
keyword for index operator, and added support for implicit start and end (expressions likea(2,:)
andb(2:end,3:end-1)
are supported now). - Function math.eval is more flexible now: it supports variables and multi-line expressions.
- Removed the read-only option from Parser and Scope.
- Fixed non-working unequal operator != in the parser.
- Fixed a bug in resizing matrices when replacing a subset.
- Fixed a bug in updating a subset of a non-existing variable.
- Minor bug fixes.
- Fixed method unequal, which was checking for equality instead of inequality. Thanks FJS2.
- Improvements in the parser:
- Added support for chained arguments.
- Added support for chained variable assignments.
- Added a function remove(name) to remove a variable from the parsers scope.
- Renamed nodes for more consistency and to resolve naming conflicts.
- Improved stringification of a node tree.
- Some simplifications in the code.
- Minor bug fixes.
- Fixed a bug in the parser, returning NaN instead of throwing an error for a
number with multiple decimal separators like
2.3.4
. - Fixed a bug in Workspace.insertAfter.
- Fixed: math.js now works on IE 6-8 too.
- Implemented method
math.eval
, which uses a readonly parser to evaluate expressions. - Implemented method
xgcd
(extended eucledian algorithm). Thanks Bart Kiers (bkiers). - 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)
returns3.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.
- Implemented chained operations via method math.select(). For example
math.select(3).add(4).subtract(2).done()
will return5
. - Implemented methods gcd and lcm.
- Implemented method
Unit.in(unit)
, which creates a clone of the unit with a fixed representation. For examplemath.unit('5.08 cm').in('inch')
will return a unit which string representation always is in inch, thus2 inch
.Unit.in(unit)
is the same as methodmath.in(x, unit)
. - Implemented
Unit.toNumber(unit)
, which returns the value of the unit when represented with given unit. For examplemath.unit('5.08 cm').toNumber('inch')
returns the number2
, as the representation of the unit in inches has 2 as value. - Improved: method
math.in(x, unit)
now supports a string as second parameter, for examplemath.in(math.unit('5.08 cm'), 'inch')
. - Split the end user documentation of the parser functions from the source files.
- Removed function help and the built-in documentation from the core library.
- Fixed constant i being defined as -1i instead of 1i.
- Minor bug fixes.
Note: version 0.5 is incompatible with previous versions.
- Implemented data types Matrix and Range.
- Implemented matrix methods clone, concat, det, diag, eye, inv, ones, size, squeeze, transpose, zeros.
- Implemented range operator
:
, and transpose operator'
in parser. - Changed: created construction methods for easy object creation for all data
types and for the parser. For example, a complex value is now created
with
math.complex(2, 3)
instead ofnew math.Complex(2, 3)
, and a parser is now created withmath.parser()
instead ofnew math.parser.Parser()
. - Changed: moved all data types under the namespace math.type, and moved the Parser, Workspace, etc. under the namespace math.expr.
- Changed: changed operator precedence of the power operator:
- it is now right associative instead of left associative like most scripting
languages. So
2^3^4
is now calculated as2^(3^4)
. - it has now higher precedence than unary minus most languages, thus
-3^2
is now calculated as-(3^2)
.
- it is now right associative instead of left associative like most scripting
languages. So
- Changed: renamed the parsers method 'put' into 'set'.
- Fixed: method 'in' did not check for units to have the same base.
- Implemented Array support for all methods.
- Implemented Array support in the Parser.
- Implemented method format.
- Implemented parser for units, math.Unit.parse(str).
- Improved parser for complex values math.Complex.parse(str);
- Improved method help: it now evaluates the examples.
- Fixed: a scoping issue with the Parser when defining functions.
- Fixed: method 'typeof' was not working well with minified and mangled code.
- Fixed: errors in determining the best prefix for a unit.
- Implemented Workspace
- Implemented methods cot, csc, sec.
- Implemented Array support for methods with one parameter.
- Parser, Scope, and Node tree implemented.
- Implemented method import which makes it easy to extend math.js.
- Implemented methods arg, conj, cube, equal, factorial, im, largereq, log(x, base), log10, mod, re, sign, smallereq, square, unequal.
- Reached full compatibility with Javascripts built-in Math library.
- More functions implemented.
- Some bugfixes.
- All constants of Math implemented, plus the imaginary unit i.
- Data types Complex and Unit implemented.
- First set of functions implemented.
- First publish of the mathjs package. (package is still empty)