# matrix norms

SYNOPSIS

#include "matrix.h"
Real   m_norm1(MAT *A)
Real   m_norm_inf(MAT *A)
Real   m_norm_frob(MAT *A)

#include "zmatrix.h"
Real   zm_norm1(ZMAT *A)
Real   zm_norm_inf(ZMAT *A)
Real   zm_norm_frob(ZMAT *A)


DESCRIPTION

These routines compute matrix norms. The routines m_norm1() and zm_norm1() compute the matrix norm of A in the matrix 1--norm; m_norm_inf() and \newlinezm_norm_inf() compute the matrix norm of A in the matrix $\infty$--norm; \newlinem_norm_frob() and zm_norm_frob() compute the Frobenius norm of A. All of these routines are unscaled; that is, there is no scaling vector for weighting the elements of A. These norms are defined through the following formulae: \begin{gather} \|A\|_1=\max_j\sum_i|a_{ij}|,\qquad \|A\|_\infty=\max_i\sum_j|a_{ij}|,\\ \|A\|_{F}=\sqrt{\sum_{ij}|a_{ij}|^2}. \end{gather} The matrix 2--norm is not included as it requires the calculation of eigenvalues or singular values.

EXAMPLE

MAT   *A;
......
printf("||A||_1 =
printf("||A||_inf =
printf("||A||_F =


The Frobenius norm calculations may overflow if the elements of A are of order $\sqrt{\text{HUGE}}$.