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, 2020This 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 argumentkln::rotor
,kln::branch
,kln::translator
, andkln::motor
. The function returns the quantityx
such thatx*x
is equal to the argument to within a good approximation.- 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.
- Line normalization now correctly stays on the Lie manifold.
- Additional helper routines have been added to compute
rcp
,sqrt
, andrsqrt
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
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
- ๐ Entity type has been removed due to compiler inability to properly
-
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, 2020v0.1 of Klein contains the minimum viable amount of functionality needed to implement a forward kinematic or inverse kinematic solver.