Java framework for evaluating, formatting, and parsing double-precision arithmetic expressions with constants, variables, unary and binary operations, and binding of variables to other expressions
There's no good reason not to rely on the underlying Java double-precision arithmetic semantics in this API. Two things (at least) would need to be changed:
Don't throw DivisionByZeroException at all.
Don't throw IllegalArgumentException when NaN passed to expr(...).
Add note to readme about implementing equivalency of expressions, either through structural analysis or by repeatedly randomly assigning free variables to see if the resulting values are the same.