Implementation of basic math data types with high level frontend and low level backend
LLML is currently supported on x86/x86_64 and ARM/aarch64, with plans for WASM support and a naive implementation, available for all targets, in the future.
As of today, LLML supports up to SSE3 for x86/x86_64, and Neon for ARM/aarch64. Support for AVX and AVX2 is expected in the near future, as an optional feature.
- Basic arithmetic (Addition, Subtraction, Negation, Multiplication, Division)
- Complex arithmetic (Multiplication and Division)
- Inverse and Conjugate
- Radius, Angle & Polar coordinates
- Square root, Exponential and Natural Logarithm
- Sine, Cosine and Tangent
- Power of integer, decimal & complex
- Exponential of imaginary (
expi
) - Complex square root of real (
sqrtc
) - Power by complex (
powc
) and power by imaginary (powci
)
- Basic arithmetic (Addition, Subtraction, Negation, Multiplication & Division)
- Summation (
sum
), norm and unit vector - Dot product (
dot
) and cross product (cross
) - Square root (
sqrt
) and fast square root (sqrt_fast
, only faster inf32
x86/and x86_64) - Absolute value
- Scalar arithmetic (Addition, Subtraction, Negation, Multiplication, Division)
- Matrix arithmetic (Matrix-Matrix and Matrix-Vector multiplication)
- Trace (
tr
) and determinant (det
) - Safe (
inv
) and unsafe (inv_unsafe
) inverse - Transpose (
transp
) - Rotation matrix
Implements random generation for all of the crate's data types with rand
Implements serialization and deserialization for all of the crate's data types with serde