Complex Expression Parser
Complex Expression Parser parses mathematical expression strings over the field of complex numbers.
Installation
If you want to use it in a browser:
 Just include
es5/expression.js
ores5/expression.min.js
before your scripts.  Include a shim such as es6shim if
your target browser does not support common ES6 features such as extra methods
on
Array
orNumber
.
For node.js
just run
npm install complexexpressionparser
If you are running in an environment that supports ES6 then you may begin using
Expression
in your code using
import Complex from './es6/complex.js';
import Expression from './es6/expression.js';
ES6 environments can use the Complex and ComplexMath classes directly by importing their respective files.
Usage
Expression
has a single method: evaluate
.
Construction
Expression
takes a single string as an argument to its constructor. This
string should be a valid mathematical expression. Any symbol which is not known
to the parser is interpreted as a variable. If the expression is not
syntactically valid then the constructor throws an exception.
// Create an expression for the equation 2x^2 + 3x  i where i is the
// imaginary constant
const expression = new Expression('2x * x + 3x  i');
evaluate
evaluate
takes a single, optional dictionary of symbols and their values and
returns the value of the expression as a Complex
. If the expression has any
unset variables then this method throws an exception.
const expression = new Expression('2x + i');
const valueA = expression.evaluate({'x': new Complex(2, 4)}); // valueA is 6 + 9i
const valueB = expression.evaluate({'x': 2}); // valueB is 4 + i
const noValue = expression.evaluate(); // throws exception
Naming Symbols
Symbols can be any number of alphabetic characters followed by any number of digits or can be a single Unicode character.
Example symbols:
x
yy
M104
☃
\uD83D\uDE80
Example nonsymbols:

i
 Known constant 
2x
 Interpreted as2 * x

M104M
 Interpreted asM104 * M

☃☃
 Interpreted as☃ * ☃

\uD83D\uDE80\uD83D\uDE80
 Interpreted as\uD83D\uDE80 * \uD83D\uDE80
Supported Functions and Constants
Constants

e
: Euler's constant 
i
: The imaginary unit 
pi
: The ratio of a circle's circumference to its diameter
Functions
Arithmetic

+
(unary): The identity function 
+
(binary): Addition 

(unary): Negation 

(binary): Subtraction 
*
: Multiplication 
/
: Division
Algebraic

abs(x)
: The magnitude ofx

arg(x)
: The phase ofx

ceil(x)
: The ceiling ofx

conj(x)
: The conjugate ofx

exp(x)
: The exponential ofx

floor(x)
: The floor ofx

frac(x)
: The fractional part ofx

imag(x)
: The imaginary part ofx

ℑ(x)
: The imaginary part ofx

lg(x)
: The log base 2 ofx

ln(x)
: The natural log ofx

log(base, x)
: The log basebase
ofx

log10(x)
: The log base 10 ofx

mod(x, y)
:x
mody

nint(x)
: The nearest integer ofx

norm(x)
: The norm ofx

pow(base, power)
:base
raised to the power ofpower

real(x)
: The real part ofx

ℜ(x)
: The real part ofx

sqrt(x)
: The square root ofx
Trigonometric

arccos(x)
: The inverse cosine ofx

arccosh(x)
: The inverse hyperbolic cosine ofx

arccot(x)
: The inverse cotangent ofx

arccoth(x)
: The inverse hyperbolic cotangent ofx

arccsc(x)
: The inverse cosecant ofx

arccsch(x)
: The inverse hyperbolic cosecant ofx

arcsec(x)
: The inverse secant ofx

arcsech(x)
: The inverse hyperbolic secant ofx

arcsin(x)
: The inverse sine ofx

arcsinh(x)
: The inverse hyperbolic sine ofx

arctan(x)
: The inverse tangent ofx

arctanh(x)
: The inverse hyperbolic tangent ofx

cos(x)
: The cosine ofx

cosh(x)
: The hyperbolic cosine ofx

cot(x)
: The cotangent ofx

coth(x)
: The hyperbolic cotangent ofx

csc(x)
: The cosecant ofx

csch(x)
: The hyperbolic cosecant ofx

sec(x)
: The secant ofx

sech(x)
: The hyperbolic secant ofx

sin(x)
: The sine ofx

sinh(x)
: The hyperbolic sine ofx

tan(x)
: The tangent ofx

tanh(x)
: The hyperbolic tangent ofx
Special

gamma(x)
: The gamma ofx

Γ(x)
: The gamma ofx
Contributing
Submit a pull request and mail colinjeanne@hotmail.com.
Development should occur against the ES6 files. Build and test using
npm run prepare
All changes must include appropriate tests.
License
Complex Expression Parser is opensourced software licensed under the MIT license