Skip to content

Releases: jeremyong/klein

v2.2.1

15 Mar 13:25
Compare
Choose a tag to compare

This release is a compatibility release which provides C++11 and C++14 support on all tested compilers and operating systems.

v2.2

13 Mar 05:33
Compare
Choose a tag to compare
  • Addresses an incorrect implicit conversion from translators to motors.
  • Implements a number of optimizations were added for reflections through planes.
  • Adds a division operator (inverses defined with respect to the geometric product.

v2.1

09 Mar 03:35
Compare
Choose a tag to compare

This version adds a number of QoL improvements as well as improvements to precision for a nominal cycle cost:

  1. The kln::sqrt free function is available and accepts as its argument kln::rotor, kln::branch, kln::translator, and kln::motor. The function returns the quantity x such that x*x is equal to the argument to within a good approximation.
  2. Motors can now be multiplied by rotors and translators to produce new motors containing the composite action. This was an oversight from the existing API.
  3. Line normalization was fixed so that l * ~l properly produces unity.
  4. Additional helper routines have been added to compute rcp, sqrt, and rsqrt to ~22 bits of accuracy.

v2.0

04 Mar 03:03
Compare
Choose a tag to compare

New semantic release due to breaking compatibility.

  • Entity type has been removed due to compiler inability to properly
    constant-fold interior expressions.
  • Operators have been promoted to first-order types.
  • A number of operators have been specialized for various types for
    improved throughput/latency.
  • Perf analysis has been updated.
  • Motors can now be constructed from a screw axis, angle, and
    displacement.
  • A preliminary dual number type as been added.
  • The exp/log methods have been promoted to free functions and now have
    strongly typed return values.
  • The project function has been added to simplify various projections.

Some operations that were previously permitted are no longer supported due to a fully general underlying "multivector" class (formerly known as entity<PMask>). Operation overloads are now added individually. This enables another class of optimizations because type safety ensures that certain components of SSE registers are exactly 0.

Summarizing:

  • Compile times reduced due to very minimal usage of templates and constexpr branches
  • Speed improvements in most situations
  • Increased type safety in a number of situations

v1.1

29 Feb 04:55
Compare
Choose a tag to compare

This release provides a number of minor optimizations and full SSE3 support.

v1.0

26 Feb 02:43
Compare
Choose a tag to compare

v1.0 comes after extensive testing and performance verification, in addition to shoring up API consistencies in a number of respects. After this release, future releases will be versioned semantically.

v0.4

24 Feb 04:36
Compare
Choose a tag to compare

Hurtling toward a 1.0. This release stabilizes the entity memory layout, constructors, and adds a few missing operations (plane normalization, rotor exp/log).

v0.3

20 Feb 01:10
Compare
Choose a tag to compare

This release addresses a few API gaps, most notably:

  • Rotor application on lines (bivectors)
  • Motor application on lines (bivectors)
  • Translator application on lines (bivectors)
  • Rotor and motor applications on directions

Motor conjugation of a direction is implemented in terms of a rotor conjugation due to the translational invariance of the direction application.

v0.2

19 Feb 07:40
Compare
Choose a tag to compare

This release adds all primary operations expected in a typical GA library including the symmetric product, exterior product, regressive product, and various SSE-optimized conjugation operators.

v0.1

15 Feb 21:44
Compare
Choose a tag to compare

v0.1 of Klein contains the minimum viable amount of functionality needed to implement a forward kinematic or inverse kinematic solver.