Expand description
§A Tiny SIMD Vector Crate 🏹
🚩 Works only on the x86_64 CPU architecture with the AVX2 and FMA extensions!
They can be enabled by putting these lines inside .cargo/config.toml
, located either at the root of your
project or in the installation directory of cargo:
[build]
rustflags = ["-Ctarget-feature=+avx2,+fma"]
§Highlights
- The motivation behind this crate is to provide fast vectors for small computer graphics projects.
- Straightforward implementation without macro trickery. Explore the source code to see how everything is done!
§Data types
- Double precision:
- Single precision:
§Available operations
- Arithmetics (
+
,-
,*
and/
):- Add, subtract, multiply or divide two vectors, or a vector with a scalar, componentwise.
- Add or subtract two matrices.
- Multiply two matrices.
- Multiply a matrix by a vector.
- Methods:
- Operations on one vector: componentwise floor
- Operations on two vectors: dot product, cross product, componentwise minimum and maximum.
- Reduce a single vector: minimun and maximum across all components.
- Invert a matrix that belongs to SE(3), i.e. a transformation matrix.
- Transpose a matrix.
§Crate features
- Enable the crate feature
bytemuck
to mark all vectors as Plain Old Data.
Structs§
- Dmat4
- 4x4 matrix with double precision
- Dvec2
- 2D vector with double precision
- Dvec4
- 4D vector with double precision
- Fmat4
- 4x4 matrix with double precision
- Fvec2
- 2D vector with single precision.
- Fvec4
- 4D vector with single precision