cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nmrSymmetricEigenProblem.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  (C) Copyright 2013 Johns Hopkins University (JHU), All Rights Reserved.
7 
8 --- begin cisst license - do not edit ---
9 
10 This software is provided "as is" under an open source license, with
11 no warranty. The complete license can be found in license.txt and
12 http://www.cisst.org/cisst/license.txt.
13 
14 --- end cisst license ---
15 */
16 
20 
21 #ifndef _nmrSymmetricEigenProblem_h
22 #define _nmrSymmetricEigenProblem_h
23 
25 
26 public:
27 
28  class Data{
29  public:
30 
31  char JOBZ; // 'N' eigenvalues; 'V' eigenvalues+vectors
32  char RANGE; // 'A' all; 'V' half open, 'I' ith value
33  char UPLO; // 'U' upper triangle, 'L' lower
34 
35  CISSTNETLIB_INTEGER N; // order of matrix
36  CISSTNETLIB_DOUBLE* A; // matrix
37  CISSTNETLIB_INTEGER LDA; // lead dimension of matrix A (column stride)
38 
39  CISSTNETLIB_DOUBLE VL; // eigen value lower bound
40  CISSTNETLIB_DOUBLE VU; // eigen value upper bound
41 
42  CISSTNETLIB_INTEGER IL; // eigen value lower index
43  CISSTNETLIB_INTEGER IU; // eigen value upper index
44 
45  char DLAMCH; // double precision machine parameters
46  CISSTNETLIB_DOUBLE ABSTOL; // absolute tolerance
47 
48  CISSTNETLIB_INTEGER M; // number of eigen values found
49  CISSTNETLIB_DOUBLE* W; // vector of eigenvalues
50 
51  CISSTNETLIB_DOUBLE* Z; // matrix of eigenvectors
52  CISSTNETLIB_INTEGER LDZ; // leading dimension of Z
53  CISSTNETLIB_INTEGER* ISUPPZ; // eigenvectors support
54 
55  CISSTNETLIB_DOUBLE* WORK; // workspace
56  CISSTNETLIB_INTEGER LWORK; // workspace size
57 
58  CISSTNETLIB_INTEGER* IWORK; // workspace
59  CISSTNETLIB_INTEGER LIWORK; // workspace size
60 
61  CISSTNETLIB_INTEGER INFO; // info value
62 
63  // Create empty data
64  Data();
65 
66  // Create and fill data
70 
71  ~Data();
72 
73  // Check the system of equation for inconsistencies
75  const vctDynamicVector<double>& D,
76  const vctDynamicMatrix<double>& V );
77 
78  // Print errors if any
79  void CheckInfo() const;
80 
81  // Free the data block
82  void Free();
83 
84  };
85 
87 
88 };
89 
90 
92 
113 
115 
139 
140 #endif
CISSTNETLIB_DOUBLE * WORK
Definition: nmrSymmetricEigenProblem.h:55
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
Errno
Definition: nmrSymmetricEigenProblem.h:86
CISSTNETLIB_INTEGER IL
Definition: nmrSymmetricEigenProblem.h:42
Declaration of vctDynamicMatrix.
CISSTNETLIB_INTEGER LDA
Definition: nmrSymmetricEigenProblem.h:37
Definition: nmrSymmetricEigenProblem.h:86
CISSTNETLIB_INTEGER * IWORK
Definition: nmrSymmetricEigenProblem.h:58
char DLAMCH
Definition: nmrSymmetricEigenProblem.h:45
CISSTNETLIB_INTEGER LIWORK
Definition: nmrSymmetricEigenProblem.h:59
char RANGE
Definition: nmrSymmetricEigenProblem.h:32
CISSTNETLIB_INTEGER LDZ
Definition: nmrSymmetricEigenProblem.h:52
CISSTNETLIB_DOUBLE ABSTOL
Definition: nmrSymmetricEigenProblem.h:46
CISSTNETLIB_INTEGER * ISUPPZ
Definition: nmrSymmetricEigenProblem.h:53
void CheckSystem(const vctDynamicMatrix< double > &A, const vctDynamicVector< double > &D, const vctDynamicMatrix< double > &V)
char UPLO
Definition: nmrSymmetricEigenProblem.h:33
nmrSymmetricEigenProblem::Errno CISST_EXPORT nmrSymmetricEigenProblem(vctDynamicMatrix< double > &A, vctDynamicVector< double > &D, vctDynamicMatrix< double > &V)
Symmetric Eigenproblems (SEP)
CISSTNETLIB_DOUBLE * Z
Definition: nmrSymmetricEigenProblem.h:51
char JOBZ
Definition: nmrSymmetricEigenProblem.h:31
CISSTNETLIB_INTEGER IU
Definition: nmrSymmetricEigenProblem.h:43
Definition: nmrSymmetricEigenProblem.h:86
CISSTNETLIB_DOUBLE VU
Definition: nmrSymmetricEigenProblem.h:40
CISSTNETLIB_INTEGER M
Definition: nmrSymmetricEigenProblem.h:48
Definition: nmrSymmetricEigenProblem.h:28
CISSTNETLIB_INTEGER INFO
Definition: nmrSymmetricEigenProblem.h:61
Definition: nmrSymmetricEigenProblem.h:24
CISSTNETLIB_DOUBLE * A
Definition: nmrSymmetricEigenProblem.h:36
CISSTNETLIB_INTEGER N
Definition: nmrSymmetricEigenProblem.h:35
CISSTNETLIB_DOUBLE VL
Definition: nmrSymmetricEigenProblem.h:39
Rules of exporting.
CISSTNETLIB_INTEGER LWORK
Definition: nmrSymmetricEigenProblem.h:56
CISSTNETLIB_DOUBLE * W
Definition: nmrSymmetricEigenProblem.h:49