All Versions
10
Latest Version
Avg Release Cycle
3 days
Latest Release
353 days ago

Changelog History

  • v2.2.1

    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

    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

    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

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

    February 29, 2020

    ๐Ÿš€ This release provides a number of minor optimizations and full SSE3 support.

  • v1.0

    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

    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

    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

    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

    February 15, 2020

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