Releases: AdelKS/ZeCalculator
v0.12.3
Added tracking of updates within each DynMathObject
- Each change to the object or any of its dependencies increments a
revisionmember unsigned integer- Query-able using the
get_revision()method
- Query-able using the
- Cache gets flushed whenever the revision doesn't match the cache.
- Downstream projects, if they cache object values, can use the same approach to know when to flush or when the object changed. (I find this much better than implementing "callback" functions)
- Cache direct dependencies
- Very much needed for large datasets
Added methods for setting/getting data points within a DynMathObjetc
Full Changelog: v0.11.3...v0.12.3
v0.11.3
Overhaul the code structure to
- Simplify end user experience: everything goes through
DynMathObjectandMathWorldnow - Handle data
DynMathObjectcan 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
DynMathObjectinstances 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
- Add
minandmaxbuiltin binary functions (i.e. two arguments)
Full Changelog: v0.10.1...v0.11.3
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
DynMathObjectonly contains aFunctionorSequencealternative 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
AandBcan 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
rpnnamespace: 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