This update of pyfaust provides an optimization of the pyfaust.circ function and also the anticirc and toeplitz functions which depends on the first one. The optimization is triggered using the *diag_opt* optional argument of those functions.

It is very similar to the pyfaust.dft optimization which relies on the butterfly structure of the Faust factors.

The figure below shows the result of a benchmark ran on circ with or without optimization:

The benchmark and plot scripts are available here: benchmark script, plot script.

**NOTE**: the same optimization has been implemented for matfaust too.

**Edit 01/20 2023 — FAµST 3.37.0**: the same optimization has been implemented on GPU too. It is available through the *dev=’gpu’ and diag_opt=True* arguments of the three functions).