This project provides implementations of a set of algorithms for computations that involve higher-order extended generator representable semiseparable (EGRSS) matrices such as kernel matrices generated by the spline kernel. The algorithms and their application to smoothing spline regression are described in the following paper:
Martin S. Andersen & Tianshi Chen, “Smoothing Splines and Rank Structured Matrices: Revisiting the Spline Kernel,” SIAM Journal on Matrix Analysis and Applications, vol. 42, no. 2, pp. 389–412, 2020.
The project currently provides the following:
- C implementation/library (double precision)
- Python implementation
- Julia implementation
- MATLAB implementation
- MATLAB MEX interface to C implementation
Cmake 3.13.5 or later:
$ cmake -S . -B build
$ cmake --build build
$ cd build && ctest .
Earlier versions of Cmake:
$ mkdir build
$ cd build && cmake .. && cmake --build .
$ ctest .
pip install git+https://github.com/martinandersen/EGRSS.git#subdirectory=src/python
$ cmake -S . -B build -DBUILD_MEX=ON
$ cmake --build build
The example in examples/c
requires BLAS and LAPACK, and this can be configured using the BLA_VENDOR
option and by specifying the path via CMAKE_PREFIX_PATH
, as illustrated in the following examples.
cmake -S . -B build -DBUILD_EXAMPLES=ON -DBLA_VENDOR=OpenBLAS -DCMAKE_PREFIX_PATH=/usr/local/opt/openblas
cmake --build build
cmake -S . -B build -DBUILD_EXAMPLES=ON -DBLA_VENDOR=Intel10_64lp -DCMAKE_PREFIX_PATH=/opt/intel/lib
cmake --build build
This project is licensed under the BSD 2-Clause license.