self-contained: doesn't need connection to servers or another "backend" CAS
a library: beyond use as an interactive tool, Algebrite can be embedded in your applications and extended with custom functions
free: MIT-Licenced
Features
...these are just some of the features. For an organic view please check the function reference.
Usage via API or custom scripting language
Algebrite comes with its own scripting language, but all functions are also exposed as API for standard JS integration. See function reference for API description.
Arbitrary-precision arithmetic
Fractions
Complex quantities: rectangular and polar
Simplification
Expansion
Substitution
Symbolic and numeric roots
... symbolic solutions of simple polynomials:
... symbolic solutions of higher-degree polynomials or special polynomials:
...give it a few seconds
... numeric solutions for even higher-degree irreducible polynomials:
Units of measurement
Matrices, tensors
... tensors:
tensors (unlike matrices) can have more than 2 dimensions:
Derivatives and gradients
Integrals, multi-integrals
... computing integrals:
...give it a few seconds
... calculating them in the exponential domain:
...give it a few seconds
Credits and links
Algebrite is an adaptation of a delightful gem of CAS named EigenMath by George Weigt. Most of his manual applies to Algebrite. See the function reference (adapted from the one compiled by George Weigt for the EigenMath project) for a quick view.
Also you might want to check another fork of EigenMath: SMIB by Philippe Billet.
Another CAS of similar nature is SymPy, made in Python.
Other Javascript CAS are:
javascript-cas by Anthony Foster supporting "differentiation, complex numbers, sums, vectors (dot products, cross products, gradient/curl etc)"
Coffeequate by Matthew Alger supporting "quadratic and linear equations, simplification of most algebraic expressions, uncertainties propagation, substitutions, variables, constants, and symbolic constants"
Algebra.js by Nicole White which among other things can build and solve equations (up to cubic) via a "chainable" API.
Nerdamer by Martin Donk and others which among other things solves symbolically polynomials up to 3rd degree, supports symbolic integration and differentiation, and handles complex numbers.
Polynomial.js by Robert Eisele specifically performs operations on polynomials in the fields: Q, C, Zp and R. (roots/factorisation routines not included).