P(R*_{3, 0, 1}) specialized SIMD Geometric Algebra Library
This release is a compatibility release which provides C++11 and C++14 support on all tested compilers and operating systems.
This version adds a number of QoL improvements as well as improvements to precision for a nominal cycle cost:
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.l * ~l
properly produces unity.rcp
, sqrt
, and rsqrt
to ~22 bits of accuracy.New semantic release due to breaking compatibility.
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:
This release provides a number of minor optimizations and full SSE3 support.
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.
Hurtling toward a 1.0. This release stabilizes the entity memory layout, constructors, and adds a few missing operations (plane normalization, rotor exp/log).
This release addresses a few API gaps, most notably:
Motor conjugation of a direction is implemented in terms of a rotor conjugation due to the translational invariance of the direction application.
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 of Klein contains the minimum viable amount of functionality needed to implement a forward kinematic or inverse kinematic solver.