basic_dsp_vector 0.4.3

Digital signal processing based on real or complex vectors in time or frequency domain. Vectors come with basic arithmetic, convolution, Fourier transformation and interpolation operations. The vectors are optimized for sizes of a couple of thousand elements or more.
Documentation

Basic digital signal processing (DSP) operations

Digital signal processing based on real or complex vectors in time or frequency domain. Vectors are expected to typically have a size which is at least in the order of magnitude of a couple of thousand elements. This crate tries to balance between a clear API and performance in terms of processing speed. This project started as small pet project to learn more about DSP, CPU architecture and Rust. Since learning involves making mistakes, don't expect things to be flawless or even close to flawless.

This library isn't suited - from my point of view - for game programming. If you are looking for vector types to do 2D or 3D graphics calculations then you unfortunately have to continue with your search. However there seem to be a lot of suitable crates on crates.io for you.

The vector types don't distinguish between 1xN or Nx1. This is a difference to other conventions such as in MATLAB or GNU Octave. The reason for this decision is that it seems to be more practical to ignore the shape of the vector.

Right now the library uses pretty aggressive parallelization. So this means that it will keep all CPU cores busy even if the performance gain is minimal e.g. because the multi core overhead is nearly as large as the performance boost of multiple cores. In future there will be likely an option which tells the library how it should balance between processing time and CPU utilization. The library also avoids to allocate and free memory so it allocates all of the required temporary memory when a new vector is constructed. Therefore the library is likely not suitable for devices which are tight on memory. On normal desktop computers there is usually plenty of memory available so that the optimization focus is on decreasing the processing time for every (common) operation and to spent little time with memory allocations.