Skip to content

Releases: AdelKS/ZeCalculator

v0.12.3

22 Jul 15:09
9f2eca6

Choose a tag to compare

Added tracking of updates within each DynMathObject

  1. Each change to the object or any of its dependencies increments a revision member unsigned integer
    • Query-able using the get_revision() method
  2. 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)
  3. 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

05 Jan 03:47
865f97f

Choose a tag to compare

Overhaul the code structure to

  • Simplify end user experience: everything goes through DynMathObject and MathWorld 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
  • Add min and max builtin binary functions (i.e. two arguments)

Full Changelog: v0.10.1...v0.11.3

v0.10.1

02 Nov 23:05
cf673ca

Choose a tag to compare

Added initial implementation of caching for Sequence computation

Full Changelog: v0.9.1...v0.10.1

v0.9.1

14 Jul 23:41
7c6467c

Choose a tag to compare

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

12 May 23:37

Choose a tag to compare

  • 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

07 May 20:45
dccfa56

Choose a tag to compare

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 a Function or Sequence alternative if it's in a valid state

Full Changelog: v0.6.0...v0.7.0

v0.6.0

01 Apr 18:40
41ec58d

Choose a tag to compare

Overhaul approach to equation-based math object definition. See readme for more information.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

09 Oct 22:41
2233bb4

Choose a tag to compare

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

01 Sep 20:06
de5d9b5

Choose a tag to compare

  • 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 and B 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

25 Aug 22:45
6671e9b

Choose a tag to compare

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