Releases: AdelKS/ZeCalculator
v0.9.1
v0.8.7
- Reworked the user interface to a leaner one with assignments.
- Improved the robustness of error propagation between objects
Full Changelog: v0.7.0...v0.8.7
v0.7.0
Various internal code simplifications and reworks.
In the API, Function
class got reworked
- Its arguments number is no longer templated, that did not bring any performance benefit
DynMathObject
only contains aFunction
orSequence
alternative if it's in a valid state
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Overhaul approach to equation-based math object definition. See readme for more information.
Full Changelog: v0.5.0...v0.6.0
v0.5.0
One more release !
One the menu:
- No more name lookup during evaluation, math objects are directly bound in expressions. Which tremendously improved evaluation speed (now only twice slower than pure C++)
- One single Error struct
- Math objects know their name
- Input variables (to functions) are treated separately from normal variables: during parsing, their name is replaced with their index.
Full Changelog: v0.4.0...v0.5.0
v0.4.0
- Tidy the header files into folders and subfolders
- Use an Implementation / declaration approach on headers, this enables
- Having a single header source code
- "include loops" so classes
A
andB
can call each others methods even though both are entirely defined in headers
- Refactor the evaluation code
- Move away from string views into the original expression string and use string copies and a stringview-like class
SubstrInfo
- Had many potential issues with dangling pointers.
- Add the
rpn
namespace: create and evaluate every math object with the reverse polish notation / postfix representation.- This representation has faster evaluation but slower parsing (because it goes through an AST representation first)
Full Changelog: v0.3.0...v0.4.0
v0.3.0
This release introduces the Sequence
class: can have an arbitrary expression involving other sequences and functions. A safeguard has been added: a recursion depth limit.
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Notable changes:
- The class
Expression
and its aliasGlobalVariable
: which basically is a function without any input. When added to aMathWorld
with a name, its expression can depend on other objects and see its value dynamically updated with respect to them. - Adding objects to
MathWorld
returns now anexpected<object handle, error>
so the method does not throw any longer if the name is already taken or it is of the wrong format.
Full Changelog: v0.1.0...v0.2.0
v0.1.0
This is the first tagged version of the library, the main branch won't see its history rewritten starting this point.
This release brings two building blocks of the library:
- Functions
- Can have an arbitrary number of input variables
- Functions can call each other if in the same math world, although only with positional arguments.
- Global constants, which can be used in functions' expression. Its value can be changed.
For more information, see the project's README.