Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
matrix_transpose
: optimized matrix transpose (square/non-square, inplace/out-of-place, real/complex, scalar/vectors)find_package(KFR CONFIG)
support, see installation).npy
format support (reading/writing, v1/v2, c/fortran order, real/complex, bigendian/littleendian)inline_vector
read_group
and write_group
reshape_may_copy
and flatten_may_copy
in tensor<>
allows copying by defaultshape<>::transpose
functiontensor<>::transpose
functionconvert_endianess
src/
directoryKFR_DFT_NO_NPo2
has been removed (assumed always enabled)tests/internal/
expression_make_function
instead of expression_function
KFR_WITH_CLANG
KFR_VERSION
CMake variablelibrary_version_dft
, library_version_dsp
etc)kfr::complex
removed (use std::complex
instead). KFR_STD_COMPLEX
cmake variable removed toostrides_for_shape
for fortran ordercall_with_temp
maximum_dims
is now 16 (was 8)to_fmt
/from_fmt
supports inplaceshape
refactoring: rotate_left
, rotate_right
, remove_back
, remove_front
nullptr
for DFT (temporary buffer will be allocated on stack or heap)dft_plan
and similar classes have now default and move constructors-DCMAKE_POSITION_INDEPENDENT_CODE=ON
is required for building C APIci/run.sh
can now build in a directory outside source treegraphics/color.hpp
and graphics/geometry.hpp
have been removedCMT_CVAL
macro/Zc:lambda
is now required for building KFR in MSVCprintln
for string_view
matrix_transpose
: optimized matrix transpose (square/non-square, inplace/out-of-place, real/complex, scalar/vectors)find_package(KFR CONFIG)
support, see installation).npy
format support (reading/writing, v1/v2, c/fortran order, real/complex, bigendian/littleendian)inline_vector
read_group
and write_group
reshape_may_copy
and flatten_may_copy
in tensor<>
allows copying by defaultshape<>::transpose
functiontensor<>::transpose
functionconvert_endianess
src/
directoryKFR_DFT_NO_NPo2
has been removed (assumed always enabled)tests/internal/
expression_make_function
instead of expression_function
KFR_WITH_CLANG
KFR_VERSION
CMake variablelibrary_version_dft
, library_version_dsp
etc)kfr::complex
removed (use std::complex
instead). KFR_STD_COMPLEX
cmake variable removed toostrides_for_shape
for fortran ordercall_with_temp
maximum_dims
is now 16 (was 8)to_fmt
/from_fmt
supports inplaceshape
refactoring: rotate_left
, rotate_right
, remove_back
, remove_front
nullptr
for DFT (temporary buffer will be allocated on stack or heap)dft_plan
and similar classes have now default and move constructors-DCMAKE_POSITION_INDEPENDENT_CODE=ON
is required for building C APIci/run.sh
can now build in a directory outside source treegraphics/color.hpp
and graphics/geometry.hpp
have been removedCMT_CVAL
macro/Zc:lambda
is now required for building KFR in MSVCprintln
for string_view
This release mainly focuses on DFT performance (which has been increased up to 40% on x86 and x86_64) and bug fixes.
KFR_NO_PERF_TESTS
define can now disable performance testsCMT_CVAL
for extracting constexpr-enabled value from cval_t
fft_algorithm_selection
to select FFT algorithm for given FFT size.std::is_pov
is peprecated in C++20 https://github.com/kfrlib/kfr/issues/190
nearest_real_or_complex
https://github.com/kfrlib/kfr/issues/137
KFR_STD_COMPLEX
modeepsilon_scope
std::identity
(C++20)vec<>
vec<>
transpose(vec<vec<>>)
has been fixedvec<bit<>>
bug on GCC and MSVCis_pod
has been removedroot
and cbrt
have been fixed for negative valuesfmt
tensor<T, dims>
class for multidimensional data (like numpy's nparray)KFR_
prefixvec
, so vec{1, 2}
is the same as vec<int, 2>{1, 2}
random_state
is now architecture-agnostic and defined in kfr
namespacekfr::CMT_ARCH_NAME::internal
to kfr::CMT_ARCH_NAME
namespaceexpression_traits<T>
introduced to support interpreting any object as kfr expressionround.hpp
, clamp.hpp
, select.hpp
, sort.hpp
, saturation.hpp
, min_max.hpp
, logical.hpp
, abs.hpp
headers have been moved to simd
modulestate_holder.hpp
has been moved to base
modulebase
modulevec<T, N>::front()
and vec<T, N>::front()
are now writableset_elements
functions for output expressions like get_elements
for input expressionstensor<T, dims>
class for multidimensional data (like numpy's nparray)KFR_
prefixvec
, so vec{1, 2}
is the same as vec<int, 2>{1, 2}
random_state
is now architecture-agnostic and defined in kfr
namespacekfr::CMT_ARCH_NAME::internal
to kfr::CMT_ARCH_NAME
namespaceexpression_traits<T>
introduced to support interpreting any object as kfr expressionround.hpp
, clamp.hpp
, select.hpp
, sort.hpp
, saturation.hpp
, min_max.hpp
, logical.hpp
, abs.hpp
headers have been moved to simd
modulestate_holder.hpp
has been moved to base
modulebase
modulevec<T, N>::front()
and vec<T, N>::front()
are now writableset_elements
functions for output expressions like get_elements
for input expressionsC++20 compatibility fixes for v4 branch
cxxdox
version updated