GNU Octave  4.2.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Macros | Functions | Variables
oct-norm.cc File Reference
#include <cassert>
#include <cfloat>
#include <cmath>
#include <iostream>
#include <vector>
#include "Array-util.h"
#include "Array.h"
#include "CColVector.h"
#include "CMatrix.h"
#include "CRowVector.h"
#include "CSparse.h"
#include "dColVector.h"
#include "dDiagMatrix.h"
#include "dMatrix.h"
#include "dRowVector.h"
#include "dSparse.h"
#include "fCColVector.h"
#include "fCMatrix.h"
#include "fCRowVector.h"
#include "fColVector.h"
#include "fDiagMatrix.h"
#include "fMatrix.h"
#include "fRowVector.h"
#include "lo-error.h"
#include "lo-ieee.h"
#include "mx-cm-s.h"
#include "mx-fcm-fs.h"
#include "mx-fs-fcm.h"
#include "mx-s-cm.h"
#include "oct-cmplx.h"
#include "svd.h"
Include dependency graph for oct-norm.cc:

Go to the source code of this file.

Classes

class  norm_accumulator_0< R >
 
class  norm_accumulator_1< R >
 
class  norm_accumulator_2< R >
 
class  norm_accumulator_inf< R >
 
class  norm_accumulator_minf< R >
 
class  norm_accumulator_mp< R >
 
class  norm_accumulator_p< R >
 

Macros

#define DEFINE_COLROW_NORM_FUNCS(PREFIX, RPREFIX, RTYPE)
 
#define DEFINE_DISPATCHER(FUNC_NAME, ARG_TYPE, RES_TYPE)
 
#define DEFINE_XNORM_FUNCS(PREFIX, RTYPE)
 
#define DEFINE_XNORM_SPARSE_FUNCS(PREFIX, RTYPE)
 

Functions

template<typename T , typename R >
void array_norm_2 (const T *v, octave_idx_type n, R &res)
 
template<typename T , typename R , typename ACC >
void column_norms (const MArray< T > &m, MArray< R > &res, ACC acc)
 
template<typename T , typename R , typename ACC >
void column_norms (const MSparse< T > &m, MArray< R > &res, ACC acc)
 
template<typename T , typename R >
MArray< R > column_norms (const MArray< T > &v, R p)
 
template<typename T , typename R >
MArray< R > column_norms (const MSparse< T > &v, R p)
 
template<typename VectorT , typename R >
VectorT dual_p (const VectorT &x, R p, R q)
 
template<typename T , typename R >
elem_dual_p (T x, R p)
 
template<typename MatrixT , typename VectorT , typename R >
higham (const MatrixT &m, R p, R tol, int maxiter, VectorT &x)
 
template<typename ColVectorT , typename R >
static void higham_subp (const ColVectorT &y, const ColVectorT &col, octave_idx_type nsamp, R p, R &lambda, R &mu)
 
template<typename ColVectorT , typename R >
static void higham_subp (const ColVectorT &y, const ColVectorT &col, octave_idx_type nsamp, R p, std::complex< R > &lambda, std::complex< R > &mu)
 
template<typename MatrixT , typename VectorT , typename R >
matrix_norm (const MatrixT &m, R p, VectorT)
 
template<typename T , typename R , typename ACC >
void row_norms (const MArray< T > &m, MArray< R > &res, ACC acc)
 
template<typename T , typename R , typename ACC >
void row_norms (const MSparse< T > &m, MArray< R > &res, ACC acc)
 
template<typename T , typename R >
MArray< R > row_norms (const MArray< T > &v, R p)
 
template<typename T , typename R >
MArray< R > row_norms (const MSparse< T > &v, R p)
 
template<typename MatrixT , typename VectorT , typename R >
svd_matrix_norm (const MatrixT &m, R p, VectorT)
 
template<typename T , typename R , typename ACC >
void vector_norm (const Array< T > &v, R &res, ACC acc)
 
template<typename T , typename R >
vector_norm (const MArray< T > &v, R p)
 
OCTAVE_API RowVector xcolnorms (const Matrix &m, double p)
 
OCTAVE_API RowVector xcolnorms (const ComplexMatrix &m, double p)
 
OCTAVE_API FloatRowVector xcolnorms (const FloatMatrix &m, float p)
 
OCTAVE_API FloatRowVector xcolnorms (const FloatComplexMatrix &m, float p)
 
OCTAVE_API RowVector xcolnorms (const SparseMatrix &m, double p)
 
OCTAVE_API RowVector xcolnorms (const SparseComplexMatrix &m, double p)
 
OCTAVE_API double xfrobnorm (const Matrix &x)
 
OCTAVE_API double xfrobnorm (const ComplexMatrix &x)
 
OCTAVE_API float xfrobnorm (const FloatMatrix &x)
 
OCTAVE_API float xfrobnorm (const FloatComplexMatrix &x)
 
OCTAVE_API double xfrobnorm (const SparseMatrix &x)
 
OCTAVE_API double xfrobnorm (const SparseComplexMatrix &x)
 
OCTAVE_API double xnorm (const ColumnVector &x, double p)
 
OCTAVE_API double xnorm (const Matrix &x, double p)
 
OCTAVE_API double xnorm (const RowVector &x, double p)
 
OCTAVE_API double xnorm (const ComplexMatrix &x, double p)
 
OCTAVE_API double xnorm (const ComplexRowVector &x, double p)
 
OCTAVE_API double xnorm (const ComplexColumnVector &x, double p)
 
OCTAVE_API float xnorm (const FloatRowVector &x, float p)
 
OCTAVE_API float xnorm (const FloatMatrix &x, float p)
 
OCTAVE_API float xnorm (const FloatColumnVector &x, float p)
 
OCTAVE_API float xnorm (const FloatComplexRowVector &x, float p)
 
OCTAVE_API float xnorm (const FloatComplexMatrix &x, float p)
 
OCTAVE_API float xnorm (const FloatComplexColumnVector &x, float p)
 
OCTAVE_API double xnorm (const SparseMatrix &x, double p)
 
OCTAVE_API double xnorm (const SparseComplexMatrix &x, double p)
 
OCTAVE_API ColumnVector xrownorms (const Matrix &m, double p)
 
OCTAVE_API ColumnVector xrownorms (const ComplexMatrix &m, double p)
 
OCTAVE_API FloatColumnVector xrownorms (const FloatMatrix &m, float p)
 
OCTAVE_API FloatColumnVector xrownorms (const FloatComplexMatrix &m, float p)
 
OCTAVE_API ColumnVector xrownorms (const SparseMatrix &m, double p)
 
OCTAVE_API ColumnVector xrownorms (const SparseComplexMatrix &m, double p)
 

Variables

static int max_norm_iter = 100
 
static const char * p_less1_gripe = "xnorm: p must be at least 1"
 

Macro Definition Documentation

#define DEFINE_COLROW_NORM_FUNCS (   PREFIX,
  RPREFIX,
  RTYPE 
)
Value:
extern OCTAVE_API RPREFIX##RowVector \
xcolnorms (const PREFIX##Matrix& m, RTYPE p) \
{ \
return column_norms (m, p); \
} \
extern OCTAVE_API RPREFIX##ColumnVector \
xrownorms (const PREFIX##Matrix& m, RTYPE p) \
{ \
return row_norms (m, p); \
} \
OCTAVE_API ColumnVector xrownorms(const Matrix &m, double p)
Definition: oct-norm.cc:592
const char * PREFIX
Definition: build-env.cc:236
nd deftypefn *octave_map m
Definition: ov-struct.cc:2058
OCTAVE_API RowVector xcolnorms(const Matrix &m, double p)
Definition: oct-norm.cc:592
Definition: dMatrix.h:37
p
Definition: lu.cc:138
void row_norms(const MArray< T > &m, MArray< R > &res, ACC acc)
Definition: oct-norm.cc:250
void column_norms(const MArray< T > &m, MArray< R > &res, ACC acc)
Definition: oct-norm.cc:236

Definition at line 580 of file oct-norm.cc.

#define DEFINE_DISPATCHER (   FUNC_NAME,
  ARG_TYPE,
  RES_TYPE 
)
Value:
template <typename T, typename R> \
RES_TYPE FUNC_NAME (const ARG_TYPE& v, R p) \
{ \
RES_TYPE res; \
if (p == 2) \
FUNC_NAME (v, res, norm_accumulator_2<R> ()); \
else if (p == 1) \
FUNC_NAME (v, res, norm_accumulator_1<R> ()); \
{ \
if (p > 0) \
FUNC_NAME (v, res, norm_accumulator_inf<R> ()); \
else \
FUNC_NAME (v, res, norm_accumulator_minf<R> ()); \
} \
else if (p == 0) \
FUNC_NAME (v, res, norm_accumulator_0<R> ()); \
else if (p > 0) \
FUNC_NAME (v, res, norm_accumulator_p<R> (p)); \
else \
FUNC_NAME (v, res, norm_accumulator_mp<R> (p)); \
return res; \
}
#define lo_ieee_isinf(x)
Definition: lo-ieee.h:111
if(nargin< 2) print_usage()
Definition: cellfun.cc:405
p
Definition: lu.cc:138
else
Definition: cellfun.cc:437

Definition at line 295 of file oct-norm.cc.

#define DEFINE_XNORM_FUNCS (   PREFIX,
  RTYPE 
)
Value:
OCTAVE_API RTYPE xnorm (const PREFIX##ColumnVector& x, RTYPE p) \
{ \
return vector_norm (x, p); \
} \
OCTAVE_API RTYPE xnorm (const PREFIX##RowVector& x, RTYPE p) \
{ \
return vector_norm (x, p); \
} \
OCTAVE_API RTYPE xnorm (const PREFIX##Matrix& x, RTYPE p) \
{ \
return svd_matrix_norm (x, p, PREFIX##Matrix ()); \
} \
OCTAVE_API RTYPE xfrobnorm (const PREFIX##Matrix& x) \
{ \
return vector_norm (x, static_cast<RTYPE> (2)); \
}
const char * PREFIX
Definition: build-env.cc:236
OCTAVE_API double xnorm(const ColumnVector &x, double p)
Definition: oct-norm.cc:549
Definition: dMatrix.h:37
OCTAVE_API double xfrobnorm(const Matrix &x)
Definition: oct-norm.cc:549
p
Definition: lu.cc:138
void vector_norm(const Array< T > &v, R &res, ACC acc)
Definition: oct-norm.cc:226
R svd_matrix_norm(const MatrixT &m, R p, VectorT)
Definition: oct-norm.cc:483
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE * x

Definition at line 531 of file oct-norm.cc.

#define DEFINE_XNORM_SPARSE_FUNCS (   PREFIX,
  RTYPE 
)
Value:
OCTAVE_API RTYPE xnorm (const Sparse##PREFIX##Matrix& x, RTYPE p) \
{ \
return matrix_norm (x, p, PREFIX##Matrix ()); \
} \
OCTAVE_API RTYPE xfrobnorm (const Sparse##PREFIX##Matrix& x) \
{ \
RTYPE res; \
array_norm_2 (x.data (), x.nnz (), res); \
return res; \
}
const char * PREFIX
Definition: build-env.cc:236
OCTAVE_API double xnorm(const ColumnVector &x, double p)
Definition: oct-norm.cc:549
R matrix_norm(const MatrixT &m, R p, VectorT)
Definition: oct-norm.cc:510
Definition: dMatrix.h:37
OCTAVE_API double xfrobnorm(const Matrix &x)
Definition: oct-norm.cc:549
void array_norm_2(const T *v, octave_idx_type n, R &res)
Definition: oct-norm.cc:556
p
Definition: lu.cc:138
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE * x

Definition at line 565 of file oct-norm.cc.

Function Documentation

template<typename T , typename R >
void array_norm_2 ( const T *  v,
octave_idx_type  n,
R &  res 
)
inline

Definition at line 556 of file oct-norm.cc.

References norm_accumulator_2< R >::accum().

template<typename T , typename R , typename ACC >
void column_norms ( const MArray< T > &  m,
MArray< R > &  res,
ACC  acc 
)

Definition at line 236 of file oct-norm.cc.

References Array< T >::columns(), Array< T >::rows(), and Array< T >::xelem().

template<typename T , typename R , typename ACC >
void column_norms ( const MSparse< T > &  m,
MArray< R > &  res,
ACC  acc 
)
template<typename T , typename R >
MArray<R> column_norms ( const MArray< T > &  v,
p 
)

Definition at line 321 of file oct-norm.cc.

template<typename T , typename R >
MArray<R> column_norms ( const MSparse< T > &  v,
p 
)

Definition at line 323 of file oct-norm.cc.

template<typename VectorT , typename R >
VectorT dual_p ( const VectorT &  x,
p,
q 
)

Definition at line 413 of file oct-norm.cc.

References elem_dual_p(), vector_norm(), and x.

Referenced by higham().

template<typename T , typename R >
T elem_dual_p ( x,
p 
)
inline

Definition at line 403 of file oct-norm.cc.

References abs(), pow(), and octave::math::signum().

Referenced by dual_p().

template<typename MatrixT , typename VectorT , typename R >
R higham ( const MatrixT &  m,
p,
tol,
int  maxiter,
VectorT &  x 
)

Definition at line 423 of file oct-norm.cc.

References dual_p(), gamma(), higham_subp(), k, m, vector_norm(), x, and y.

Referenced by matrix_norm(), and svd_matrix_norm().

template<typename ColVectorT , typename R >
static void higham_subp ( const ColVectorT &  y,
const ColVectorT &  col,
octave_idx_type  nsamp,
p,
R &  lambda,
R &  mu 
)
static

Definition at line 331 of file oct-norm.cc.

References abs(), fi, pow(), and vector_norm().

Referenced by higham().

template<typename ColVectorT , typename R >
static void higham_subp ( const ColVectorT &  y,
const ColVectorT &  col,
octave_idx_type  nsamp,
p,
std::complex< R > &  lambda,
std::complex< R > &  mu 
)
static

Definition at line 359 of file oct-norm.cc.

References abs(), fi, pow(), and vector_norm().

template<typename MatrixT , typename VectorT , typename R >
R matrix_norm ( const MatrixT &  m,
p,
VectorT   
)
template<typename T , typename R , typename ACC >
void row_norms ( const MArray< T > &  m,
MArray< R > &  res,
ACC  acc 
)

Definition at line 250 of file oct-norm.cc.

References Array< T >::columns(), m, Array< T >::rows(), and Array< T >::xelem().

template<typename T , typename R , typename ACC >
void row_norms ( const MSparse< T > &  m,
MArray< R > &  res,
ACC  acc 
)
template<typename T , typename R >
MArray<R> row_norms ( const MArray< T > &  v,
p 
)

Definition at line 322 of file oct-norm.cc.

template<typename T , typename R >
MArray<R> row_norms ( const MSparse< T > &  v,
p 
)

Definition at line 324 of file oct-norm.cc.

template<typename MatrixT , typename VectorT , typename R >
R svd_matrix_norm ( const MatrixT &  m,
p,
VectorT   
)
template<typename T , typename R , typename ACC >
void vector_norm ( const Array< T > &  v,
R &  res,
ACC  acc 
)
inline

Definition at line 226 of file oct-norm.cc.

References Array< T >::numel().

Referenced by dual_p(), higham(), and higham_subp().

template<typename T , typename R >
R vector_norm ( const MArray< T > &  v,
p 
)

Definition at line 320 of file oct-norm.cc.

OCTAVE_API RowVector xcolnorms ( const Matrix m,
double  p 
)

Definition at line 592 of file oct-norm.cc.

Referenced by matrix_norm(), and svd_matrix_norm().

OCTAVE_API RowVector xcolnorms ( const ComplexMatrix m,
double  p 
)

Definition at line 593 of file oct-norm.cc.

OCTAVE_API FloatRowVector xcolnorms ( const FloatMatrix m,
float  p 
)

Definition at line 594 of file oct-norm.cc.

OCTAVE_API FloatRowVector xcolnorms ( const FloatComplexMatrix m,
float  p 
)

Definition at line 595 of file oct-norm.cc.

OCTAVE_API RowVector xcolnorms ( const SparseMatrix m,
double  p 
)

Definition at line 597 of file oct-norm.cc.

OCTAVE_API RowVector xcolnorms ( const SparseComplexMatrix m,
double  p 
)

Definition at line 598 of file oct-norm.cc.

OCTAVE_API double xfrobnorm ( const Matrix x)

Definition at line 549 of file oct-norm.cc.

Referenced by Fsqrtm().

OCTAVE_API double xfrobnorm ( const ComplexMatrix x)

Definition at line 550 of file oct-norm.cc.

OCTAVE_API float xfrobnorm ( const FloatMatrix x)

Definition at line 551 of file oct-norm.cc.

OCTAVE_API float xfrobnorm ( const FloatComplexMatrix x)

Definition at line 552 of file oct-norm.cc.

OCTAVE_API double xfrobnorm ( const SparseMatrix x)

Definition at line 577 of file oct-norm.cc.

OCTAVE_API double xfrobnorm ( const SparseComplexMatrix x)

Definition at line 578 of file oct-norm.cc.

OCTAVE_API double xnorm ( const ColumnVector x,
double  p 
)
OCTAVE_API double xnorm ( const Matrix x,
double  p 
)

Definition at line 549 of file oct-norm.cc.

OCTAVE_API double xnorm ( const RowVector x,
double  p 
)

Definition at line 549 of file oct-norm.cc.

OCTAVE_API double xnorm ( const ComplexMatrix x,
double  p 
)

Definition at line 550 of file oct-norm.cc.

OCTAVE_API double xnorm ( const ComplexRowVector x,
double  p 
)

Definition at line 550 of file oct-norm.cc.

OCTAVE_API double xnorm ( const ComplexColumnVector x,
double  p 
)

Definition at line 550 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatRowVector x,
float  p 
)

Definition at line 551 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatMatrix x,
float  p 
)

Definition at line 551 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatColumnVector x,
float  p 
)

Definition at line 551 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatComplexRowVector x,
float  p 
)

Definition at line 552 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatComplexMatrix x,
float  p 
)

Definition at line 552 of file oct-norm.cc.

OCTAVE_API float xnorm ( const FloatComplexColumnVector x,
float  p 
)

Definition at line 552 of file oct-norm.cc.

OCTAVE_API double xnorm ( const SparseMatrix x,
double  p 
)

Definition at line 577 of file oct-norm.cc.

OCTAVE_API double xnorm ( const SparseComplexMatrix x,
double  p 
)

Definition at line 578 of file oct-norm.cc.

OCTAVE_API ColumnVector xrownorms ( const Matrix m,
double  p 
)

Definition at line 592 of file oct-norm.cc.

Referenced by matrix_norm(), and svd_matrix_norm().

OCTAVE_API ColumnVector xrownorms ( const ComplexMatrix m,
double  p 
)

Definition at line 593 of file oct-norm.cc.

OCTAVE_API FloatColumnVector xrownorms ( const FloatMatrix m,
float  p 
)

Definition at line 594 of file oct-norm.cc.

OCTAVE_API FloatColumnVector xrownorms ( const FloatComplexMatrix m,
float  p 
)

Definition at line 595 of file oct-norm.cc.

OCTAVE_API ColumnVector xrownorms ( const SparseMatrix m,
double  p 
)

Definition at line 597 of file oct-norm.cc.

OCTAVE_API ColumnVector xrownorms ( const SparseComplexMatrix m,
double  p 
)

Definition at line 598 of file oct-norm.cc.

Variable Documentation

int max_norm_iter = 100
static

Definition at line 479 of file oct-norm.cc.

const char* p_less1_gripe = "xnorm: p must be at least 1"
static

Definition at line 474 of file oct-norm.cc.

Referenced by matrix_norm(), and svd_matrix_norm().