Circulant matrices arise in many matrix problems where the underlying mathematical model has rotational symmetry. In many problems, the problem representation is not a simple circulant matrix, but a block-circulant matrix. The @BlockCirculant object allows compact representation of block-circulant matrices. It supports common matrix operations such as +, - ,*, \, inverse, pseudoinverse, subscripting, and concatenation. Large speedup factors are achievable for this type of matrix by using the FFT to perform the typical O(N^3) operations.
The matrices can be real or complex. The package includes the @BlockCirculant definition, a test program, and documentation showing examples of the speedup factors for large matrix problems.
This version includes documentation corrections and code corrections for the pseudoinverse operation