Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
blockmatrixinverse.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2016 Quaternion Risk Management Ltd
3 All rights reserved.
4
5 This file is part of ORE, a free-software/open-source library
6 for transparent pricing and risk analysis - http://opensourcerisk.org
7
8 ORE is free software: you can redistribute it and/or modify it
9 under the terms of the Modified BSD License. You should have received a
10 copy of the license along with this program.
11 The license is also available online at <http://opensourcerisk.org>
12
13 This program is distributed on the basis that it will form a useful
14 contribution to risk analytics and model standardisation, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
17*/
18
19/*! \file qle/math/blockmatrixinverse.hpp
20 \brief inverse of a matrix using a block formula
21 \ingroup math
22*/
23
24#ifndef quantext_blockmatrixinverse_hpp
25#define quantext_blockmatrixinverse_hpp
26
27#include <ql/math/matrix.hpp>
28#include <ql/math/matrixutilities/sparsematrix.hpp>
29
30namespace QuantExt {
31
32/* inverse of a sparse matrix per LU decomposition */
33QuantLib::SparseMatrix inverse(QuantLib::SparseMatrix m);
34
35/* Reference: https://en.wikipedia.org/wiki/Invertible_matrix#Blockwise_inversion */
36QuantLib::Matrix blockMatrixInverse(const QuantLib::Matrix& A, const std::vector<QuantLib::Size>& blockIndices);
37QuantLib::SparseMatrix blockMatrixInverse(const QuantLib::SparseMatrix& A, const std::vector<QuantLib::Size>& blockIndices);
38
39/*! modified max norm of a sparse matrix, i.e. std::sqrt(row * columns) * max_i,j abs(a_i,j) */
40QuantLib::Real modifiedMaxNorm(const QuantLib::SparseMatrix& A);
41
42} // namespace QuantExt
43
44#endif
QuantLib::SparseMatrix inverse(QuantLib::SparseMatrix m)
Real modifiedMaxNorm(const QuantLib::SparseMatrix &A)
Matrix blockMatrixInverse(const Matrix &A, const std::vector< Size > &blockIndices)