Coffeequate
Coffeequate is a computer algebra system for JavaScript. It can manipulate algebraic expressions, and solve and simplify equations.
Features
- Solve quadratic and linear equations
- Simplify most algebraic expressions
- Propagate uncertainties
- Substitute values (or other expressions) into expressions
- Handle variables, constants, and symbolic constants (like π or G)
Installation
Coffeequate can be used in three ways: In a <script> tag, with an AMD loader like RequireJS, or with Node.
To use with a script tag, just include coffeequate.min.js:
<script type="text/javascript" src="coffeequate.min.js"></script>
<!-- Use Coffeequate here! -->
This defines a CQ function (with a coffeequate alias) that lets you interact with Coffeequate.
To use with an AMD loader, just specify Coffeequate in your code:
define(["lib/coffeequate.min"], function (CQ) {
// Use Coffeequate here!
});
To use with Node, just install with npm install coffeequate and require it:
var CQ = require("coffeequate");
// Use Coffeequate here!
Basic usage
The CQ function takes strings and returns an Expression object that you can interact with with its various methods. The strings have a simple syntax:
+for addition*for multiplication-for negation or subtraction/for division(expr)for parenthesising**for exponentiation- Bare literals like
xare treated as variables - Literals preceded by a backslash like
\Gare treated as symbolic constants - Numbers like
1or3.1are treated as integers and floats respectively a = bis equivalent tob - a, which is implicitly equal to 0f(x)andmyFunction(z)are symbolic functions
For example, we could write the distance between (a, b) and (c, d) like this:
CQ("((a - c)**2 + (b - d)**2)**0.5")
Or we could reproduce Einstein's famous energy-mass equivalence equation:
CQ("E = m * \\c**2")
More information about how to manipulate these expressions is on the usage page.
Building Coffeequate
To build Coffeequate, you need node, npm, CoffeeScript, and cake. Then run
cake configure && cake all
to build.
Testing requires vows. Tests can then be run by executing the files in tests/ with node, e.g.
node tests/expression.js