Loading...
Searching...
No Matches
qrupdate-ng

A Library for Fast Updating of QR, Cholesky, and LU Decompositions

Version: 1.2.0 (2026-07-16)

- Authors: M. Koehler (0000-0003-2338-9904), C. Himpe (0000-0003-2194-6754)
- Original Author: Jaroslav Hajek (VZLU Prague)

# Supported Matrix Decompositions

The library supports the follwoing matrix decompositions

## QR Decomposition

See QR Decompositions for details.

This following operations are supported:

- QR rank-1 update (qr1up)

  Updates the QR factorization after an additive rank-1 update to the original matrix. Works for full and economized factorization.

- QR column insert (qrinc)

  Updates the QR factorization after an inserting a column to the original matrix. Works for full and economized factorization.

- QR column delete (qrdec)

  Updates the QR factorization after an deleting a column from the original matrix. Works for full and economized factorization.

- QR column shift (qrshc)

  Updates the QR factorization after a circular shift of columns in the original matrix. Works for full and economized factorization.

- QR row insert (qrinr)

  Updates the QR factorization after an inserting a row to the original matrix. Works for full factorization only.

- QR row delete (qrder)

  Updates the QR factorization after an deleting a row from the original matrix. Works for full factorization only.

## Cholesky Decomposition

See Cholesky Decompositions for details.

This following operations are supported:

- Cholesky rank-1 update (ch1up)

  Updates the Cholesky factorization after positive rank-1 update.

- Cholesky rank-1 downdate (ch1dn)

  Updates the Cholesky factorization after positive rank-1 downdate.

- Cholesky symmetric insert (chinx)

  Updates the Cholesky factorization after a symmetric column/row insertion.

- Cholesky symmetric insert (chdex)

  Updates the Cholesky factorization after a symmetric column/row deletion.

- Cholesky symmetric shift (chshx)

  Updates the Cholesky factorization after a symmetric column/row left/right circular shift.

## LU Decomposition

See LU Decompositions for details.

This following operations are supported:

- LU rank-1 update (lu1up)

  Updates the LU factorization after a rank-1 update. No pivoting available. Faster than lup1up, but less stable.

- LU pivoted rank-1 update (lup1up)

  Updates a row-pivoted LUP factorization after a rank-1 update. Also updates the row permutation matrix. Slower than lu1up, but more stable.

# Installation

See the INSTALL file for installation details. Consult individual routines for documentation.

## Fortran Package Manager

If you are using the Fortran Package Manager FPM you can add qrupdate-ng as dependency by including the following in your fpm.toml:

[dependencies]
qrupdate-ng = { git = "https://github.com/mpimd-csc/qrupdate-ng.git", branch = "main" }

## CMake's FetchContent

qrupdate-ng can be used with CMake's FetchContent mechanism. Therefore just include

FetchContent_Declare(
qrupdate
GIT_REPOSITORY https://github.com/mpimd-csc/qrupdate-ng.git
GIT_TAG master # Or the tag of the desired version
)
FetchContent_MakeAvailable(qrupdate)

and link your targets agains qrupdate::qrupdate.

## CPM Support

CPM is a package manager on top of CMake's FetchContent mechnism. It simiplies the usage of FetchContent. Just include CPM and add qrupdate-ng using

CPMAddPackage("gh:mpimd-csc/qrupdate-ng#master")

and link your targets agains qrupdate::qrupdate.

# Based on

qrupdate-ng is a modernized and maintained fork of:

qrupdate (Version 1.1.2)

For a list of original authors see CHANGELOG file.

# License

License: GPL-3.0-or-later (opensource.org/licenses/GPL-3.0) See LICENSE for details.