All Versions
Latest Version
Avg Release Cycle
3 days
Latest Release
1536 days ago

Changelog History

  • v2.2.1 Changes

    March 15, 2020

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

  • v2.2 Changes

    March 13, 2020
    • ➕ 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 Changes

    March 09, 2020

    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.

    1. 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.
    2. Line normalization now correctly stays on the Lie manifold.
    3. Additional helper routines have been added to compute rcp, sqrt, and rsqrt to ~22 bits of accuracy.
  • v2.0 Changes

    March 04, 2020

    🆕 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
    • 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.


    • 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 Changes

    February 29, 2020

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

  • v1.0 Changes

    February 26, 2020

    🚀 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 Changes

    February 24, 2020

    🚀 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 Changes

    February 20, 2020

    🚀 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 Changes

    February 19, 2020

    🚀 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 Changes

    February 15, 2020

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