Releases: AdelKS/ZeCalculator
v0.11.1
Overhaul the code structure to
- Simplify end user experience: everything goes through
DynMathObject
andMathWorld
now - Handle data
DynMathObject
can hold a "column" of data, i.e. a 1D sequence of expressions- Expressions can be generic and use other objects from the
MathWorld
, instead of simple numbers.
- Be able to rename
DynMathObject
instances while still keeping their data- The main issue was to be able to rename a DynMathObject with an invalid name while still retaining the data.
Until the user puts a correct name
- The main issue was to be able to rename a DynMathObject with an invalid name while still retaining the data.
Full Changelog: v0.10.1...v0.11.1
v0.10.1
Added initial implementation of caching for Sequence computation
Full Changelog: v0.9.1...v0.10.1
v0.9.1
Main addition is the support for unary minus and plus operators. The unary plus being a no op.
Full Changelog: v0.8.7...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