Computer Algebra System in Javascript (Typescript)
MIT License
Algebrite is a Javascript (Typescript) library for symbolic mathematics designed to be comprehensible and easily extensible.
var Algebrite = require('algebrite')
Algebrite.run('x + x') // => "2 x"
Algebrite.factor('10!').toString() // => "2^8 3^4 5^2 7"
Algebrite.eval('integral(x^2)').toString() // => "1/3 x^3"
// composing...
Algebrite.integral(Algebrite.eval('x')).toString() // => "1/2 x^2"
Algebrite supports: arbitrary-precision arithmetic, complex quantities, simplification, expansion , substitution, symbolic and numeric roots, units of measurement, matrices, derivatives and gradients, tensors, integrals, multi-integrals, computing integrals and much more!
Please refer to http://algebrite.org/
All the built-in methods in Algebrite are exposed through a javascript interface. Strings are automatically parsed as expressions, numbers are converted into the appropriate representation, and the internal cons objects are returned.
The cons objects have a toString
method which converts it into a pretty-print notation.
For a build to run tests:
npm install
bazelisk build algebrite
(bazelisk
is the launcher for the bazel
build system). The bazel build system tends to be smart and cache things. You can do a thorough clean by:
bazelisk clean; rm -rf ./dist/*
The so called "npm build" does a build for npm and browser:
npm install
(if you didn't run this already)bazelisk build npm
index.html
For full tests:
bazelisk test :all
or, if caches get in the way:
bazelisk test :all --cache_test_results=no
please take a look at the contributing file.
Algebrite starts as an adaptation of the EigenMath CAS by George Weigt. Also you might want to check another fork of EigenMath: SMIB by Philippe Billet.
Another CAS of similar nature is SymPy made in Python.
Three other Javascript CAS are