What's new in KFR 4.0

6 December 2019
IIR filter designNew in KFR 4 Butterworth Chebyshev type I and II Bessel Low pass, High pass, Band pass and Band stop Conversion of arbitrary filter from Z,P,K to SOS format (suitable for biquad function and filter) Discrete Cosine Transform supportNew in KFR 4 Accelerated using KFR FFT C API New in KFR 4 DFT, DCT, convolution, IIR/FIR Filters KFR DFT and related algorithms can now be used with any compiler and any language with ability to call C functions

KFR 3.0 is released

15 March 2019

Here is a brief summary of the major improvements in this release.

What's new in KFR 3.0

15 March 2019

MSVC, GCC and AVX512 as well as DFT with non-power of 2 sizes.

Fast Fourier Transform in C++ using KFR

12 September 2016

In this article I’ll show you how to use Fast Fourier Transform in Digital Signal Processing and how to apply forward and inverse FFT on complex and real data using the KFR framework.

How C++14 and C++17 help to write faster (and better) code. Real world examples

29 August 2016
Writing high performance code is always a difficult task. Pure algorithms are not always a good fit for the real world architectures. Once having begun to speed up all these pure algorithms, we quickly find that some implementation is pretty fast on one architecture, but terrible slow on another while second implementation outperform the first one in some contexts losing speed in all the rest. Numerous big and small optimizations for each of supported architectures can quickly bloat our code and waste our time.

Compile-time arguments and function wrappers

24 August 2016

Passing values in C++ as a template arguments has some inflexibilities. For example, if template function has been wrapped into a functor class, there are no ways to pass some value as a template argument.

Example: FIR filter in C++

14 August 2016
The following example shows how to apply FIR filter to audio data using KFR framework. #include <kfr/all.hpp> using namespace kfr; int main(int argc, char** argv) { // static array (like std::array) to hold the taps univector<double, 15> taps; // initialize window function // we pass tap count to window_hann function // window_hann does not calculate window functions // but creates object representing hann window expression_pointer<double> hann = to_pointer(window_hann(taps.size())); // FIR filter design using window method // frequency = 0.

Version 1.0 is now available

12 August 2016

Today KFR framework has been updated to v1.0.0 and has reached a stable release. Nearly 200 commits have been pushed since the previous version and lots of improvements and fixes landed in this release.