tesseract++ 0.0.1
N-dimensional tensor library for embedded systems
Loading...
Searching...
No Matches
Namespaces | Functions
condition.h File Reference

Condition number estimate via 1-norm: cond₁(A) = ‖A‖₁ · ‖A⁻¹‖₁. More...

#include "config.h"
#include "utilities/expected.h"
#include "matrix_traits.h"
#include "algorithms/operations/norms.h"
#include "algorithms/operations/inverse.h"
Include dependency graph for condition.h:

Go to the source code of this file.

Namespaces

namespace  matrix_algorithms
 

Functions

template<typename T , my_size_t N>
Expected< T, MatrixStatus > matrix_algorithms::condition (const FusedMatrix< T, N, N > &A)
 Compute the condition number of A in the 1-norm: cond₁(A) = ‖A‖₁ · ‖A⁻¹‖₁.
 

Detailed Description

Condition number estimate via 1-norm: cond₁(A) = ‖A‖₁ · ‖A⁻¹‖₁.

A condition number close to 1 means well-conditioned. Large values (>10⁶ for double, >10³ for float) indicate that solve/inverse results may lose significant digits.


ALGORITHM

  1. Compute ‖A‖₁ via norm1(A)
  2. Compute A⁻¹ via inverse(A)
  3. Compute ‖A⁻¹‖₁ via norm1(A⁻¹)
  4. Return ‖A‖₁ · ‖A⁻¹‖₁

Complexity: O(N³) for inverse, O(N²) for the two norms.

Note
This is the exact condition number, not a cheap estimate. A cheaper O(N²) estimate (Hager/Higham algorithm) could be added later using the LU factorization directly without forming the full inverse.

FAILURE MODES