Rückert, DariusStamminger, MarcSteinberger, Markus and Foley, Tim2019-07-112019-07-1120191467-8659https://doi.org/10.1111/cgf.13758https://diglib.eg.org:443/handle/10.1111/cgf13758We present a linear algebra framework for structured matrices and general optimization problems. The matrices and matrix operations are defined recursively to efficiently capture complex structures and enable advanced compiler optimization. In addition to common dense and sparse matrix types, we define mixed matrices, which allow every element to be of a different type. Using mixed matrices, the low- and high-level structure of complex optimization problems can be encoded in a single type. This type is then analyzed at compile time by a recursive linear solver that picks the optimal algorithm for the given problem. For common computer vision problems, our system yields a speedup of 3-5 compared to other optimization frameworks. The BLAS performance is benchmarked against the MKL library. We achieve a significant speedup in block-SPMV and block-SPMM. This work is implemented and released open-source as a header-only extension to the C++ math library Eigen.Computing methodologiesSymbolic and algebraic algorithmsLinear algebra algorithmsOptimization algorithmsAn Efficient Solution to Structured Optimization Problems using Recursive Matrices10.1111/cgf.1375833-39