|
| dgematrix () |
|
| dgematrix (const dgematrix &) |
|
| dgematrix (const _dgematrix &) |
|
| dgematrix (const CPPL_INT &, const CPPL_INT &) |
|
| dgematrix (const char *) |
|
| ~dgematrix () |
|
_zgematrix | to_zgematrix () const |
|
double & | operator() (const CPPL_INT &, const CPPL_INT &) |
|
double | operator() (const CPPL_INT &, const CPPL_INT &) const |
|
dgematrix & | set (const CPPL_INT &, const CPPL_INT &, const double &) |
|
void | write (const char *) const |
|
void | read (const char *) |
|
void | clear () |
|
dgematrix & | zero () |
|
dgematrix & | identity () |
|
void | chsign () |
|
void | copy (const dgematrix &) |
|
void | shallow_copy (const _dgematrix &) |
|
dgematrix & | resize (const CPPL_INT &, const CPPL_INT &) |
|
_drovector | row (const CPPL_INT &) const |
|
_dcovector | col (const CPPL_INT &) const |
|
CPPL_INT | dgesv (dgematrix &) |
|
CPPL_INT | dgesv (dcovector &) |
|
CPPL_INT | dgels (dgematrix &) |
|
CPPL_INT | dgels (dcovector &) |
|
CPPL_INT | dgels (dgematrix &, drovector &) |
|
CPPL_INT | dgels (dcovector &, double &) |
|
CPPL_INT | dgelss (dcovector &, dcovector &, CPPL_INT &, const double) |
|
CPPL_INT | dgelss (dgematrix &, dcovector &, CPPL_INT &, const double) |
|
CPPL_INT | dgelsd (dcovector &, dcovector &, CPPL_INT &, const double) |
|
CPPL_INT | dgeev (std::vector< double > &, std::vector< double > &) |
|
CPPL_INT | dgeev (zcovector &) |
|
CPPL_INT | dgeev (std::vector< double > &, std::vector< double > &, std::vector< dcovector > &, std::vector< dcovector > &) |
|
CPPL_INT | dgeev (std::vector< double > &, std::vector< double > &, std::vector< drovector > &, std::vector< drovector > &) |
|
CPPL_INT | dggev (dgematrix &, std::vector< double > &, std::vector< double > &) |
|
CPPL_INT | dggev (dgematrix &, std::vector< double > &, std::vector< double > &, std::vector< dcovector > &, std::vector< dcovector > &) |
|
CPPL_INT | dggev (dgematrix &, std::vector< double > &, std::vector< double > &, std::vector< drovector > &, std::vector< drovector > &) |
|
CPPL_INT | dgesvd (dgbmatrix &) |
|
CPPL_INT | dgesvd (dcovector &, dgematrix &, dgematrix &) |
|
CPPL_INT | dgglse (dgematrix &, dcovector &, dcovector &, dcovector &) |
|
dgematrix & | operator= (const dgematrix &) |
|
dgematrix & | operator= (const _dgematrix &) |
|
dgematrix & | operator+= (const dgematrix &) |
|
dgematrix & | operator+= (const _dgematrix &) |
|
dgematrix & | operator+= (const dsymatrix &) |
|
dgematrix & | operator+= (const _dsymatrix &) |
|
dgematrix & | operator+= (const dgbmatrix &) |
|
dgematrix & | operator+= (const _dgbmatrix &) |
|
dgematrix & | operator+= (const dgsmatrix &) |
|
dgematrix & | operator+= (const _dgsmatrix &) |
|
dgematrix & | operator+= (const dssmatrix &) |
|
dgematrix & | operator+= (const _dssmatrix &) |
|
dgematrix & | operator-= (const dgematrix &) |
|
dgematrix & | operator-= (const _dgematrix &) |
|
dgematrix & | operator-= (const dsymatrix &) |
|
dgematrix & | operator-= (const _dsymatrix &) |
|
dgematrix & | operator-= (const dgbmatrix &) |
|
dgematrix & | operator-= (const _dgbmatrix &) |
|
dgematrix & | operator-= (const dgsmatrix &) |
|
dgematrix & | operator-= (const _dgsmatrix &) |
|
dgematrix & | operator-= (const dssmatrix &) |
|
dgematrix & | operator-= (const _dssmatrix &) |
|
dgematrix & | operator*= (const dgematrix &) |
|
dgematrix & | operator*= (const _dgematrix &) |
|
dgematrix & | operator*= (const dsymatrix &) |
|
dgematrix & | operator*= (const _dsymatrix &) |
|
dgematrix & | operator*= (const dgbmatrix &) |
|
dgematrix & | operator*= (const _dgbmatrix &) |
|
dgematrix & | operator*= (const dgsmatrix &) |
|
dgematrix & | operator*= (const _dgsmatrix &) |
|
dgematrix & | operator*= (const dssmatrix &) |
|
dgematrix & | operator*= (const _dssmatrix &) |
|
dgematrix & | operator*= (const double &) |
|
dgematrix & | operator/= (const double &) |
|
|
std::ostream & | operator<< (std::ostream &, const dgematrix &) |
|
void | swap (dgematrix &, dgematrix &) |
|
_dgematrix | _ (dgematrix &) |
|
_dgematrix | t (const dgematrix &) |
|
_dgematrix | i (const dgematrix &) |
|
void | idamax (CPPL_INT &, CPPL_INT &, const dgematrix &) |
|
double | damax (const dgematrix &) |
|
const dgematrix & | operator+ (const dgematrix &) |
|
_dgematrix | operator- (const dgematrix &) |
|
_dgematrix | operator+ (const dgematrix &, const dgematrix &) |
|
_dgematrix | operator+ (const dgematrix &, const _dgematrix &) |
|
_dgematrix | operator+ (const dgematrix &, const dsymatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const _dsymatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const dgbmatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const _dgbmatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const dgsmatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const _dgsmatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const dssmatrix &) |
|
_dgematrix | operator+ (const dgematrix &, const _dssmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const dgematrix &) |
|
_dgematrix | operator- (const dgematrix &, const _dgematrix &) |
|
_dgematrix | operator- (const dgematrix &, const dsymatrix &) |
|
_dgematrix | operator- (const dgematrix &, const _dsymatrix &) |
|
_dgematrix | operator- (const dgematrix &, const dgbmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const _dgbmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const dgsmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const _dgsmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const dssmatrix &) |
|
_dgematrix | operator- (const dgematrix &, const _dssmatrix &) |
|
_dcovector | operator* (const dgematrix &, const dcovector &) |
|
_dcovector | operator* (const dgematrix &, const _dcovector &) |
|
_dgematrix | operator* (const dgematrix &, const dgematrix &) |
|
_dgematrix | operator* (const dgematrix &, const _dgematrix &) |
|
_dgematrix | operator* (const dgematrix &, const dsymatrix &) |
|
_dgematrix | operator* (const dgematrix &, const _dsymatrix &) |
|
_dgematrix | operator* (const dgematrix &, const dgbmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const _dgbmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const dgsmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const _dgsmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const dssmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const _dssmatrix &) |
|
_dgematrix | operator* (const dgematrix &, const double &) |
|
_dgematrix | operator/ (const dgematrix &, const double &) |
|
_drovector | operator% (const dgematrix &, const dgematrix &) |
|
_dgematrix | operator* (const double &, const dgematrix &) |
|
_dgematrix | hadamard (const dgematrix &, const dgematrix &) |
|
Real Double-precision General Dence Matrix Class.
Definition at line 3 of file dgematrix.hpp.
double & dgematrix::operator() |
( |
const CPPL_INT & |
i, |
|
|
const CPPL_INT & |
j |
|
) |
| |
|
inline |
operator() for non-const object
Definition at line 3 of file dgematrix-io.hpp.
References darray, i, m, and n.
Referenced by identity(), operator*=(), operator+=(), operator-=(), read(), and write().
6 if(
i<0 || j<0 ||
m<=
i ||
n<=j ){
8 std::cerr <<
"The required component is out of the matrix size." << std::endl
9 <<
"Your input is (" <<
i <<
"," << j <<
"), whereas the matrix size is " <<
m <<
"x" <<
n <<
"." << std::endl;
CPPL_INT m
matrix row size
double ** darray
array of pointers of column head addresses
CPPL_INT n
matrix column size
friend _dgematrix i(const dgematrix &)
solve overdetermined or underdetermined A*X=Y using dgels with the sum of residual squares output
The residual is set as the columnwise sum of residual squares for overdetermined problems while it is always zero for underdetermined problems.
Definition at line 160 of file dgematrix-lapack.hpp.
References array, clear(), i, drovector::l, m, n, drovector::resize(), swap, and drovector::zero().
161 {CPPL_VERBOSE_REPORT;
165 std::cerr <<
"These two matrices cannot be solved." << std::endl
166 <<
"Your input was (" <<
m <<
"x" <<
n <<
") and (" << mat.
m <<
"x" << mat.
n <<
")." << std::endl;
176 for(CPPL_INT
i=0;
i<mat.
m;
i++){
177 for(CPPL_INT j=0; j<mat.
n; j++){
186 CPPL_INT NRHS(mat.
n), LDA(
m), LDB(mat.
m), LWORK(std::min(
m,
n)+std::max(std::min(
m,
n),NRHS)), INFO(1);
187 double *WORK(
new double[LWORK]);
188 dgels_(&TRANS, &
m, &
n, &NRHS,
array, &LDA, mat.
array, &LDB, WORK, &LWORK, &INFO);
192 for(CPPL_INT
i=0;
i<residual.
l;
i++){
193 for(CPPL_INT j=0; j<
m-
n; j++){
194 residual(
i) += std::pow(mat(n+j,
i), 2.0);
199 for(CPPL_INT
i=0;
i<tmp.
m;
i++){
200 for(CPPL_INT j=0; j<tmp.n; j++){
210 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
friend void swap(dgematrix &, dgematrix &)
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
CPPL_INT m
matrix row size
drovector & resize(const CPPL_INT &, const CPPL_INT=0)
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dgels |
( |
dcovector & |
vec, |
|
|
double & |
residual |
|
) |
| |
|
inline |
solve overdetermined or underdetermined A*x=y using dgels with the sum of residual squares output
The residual is set as the sum of residual squares for overdetermined problems while it is always zero for underdetermined problems.
Definition at line 222 of file dgematrix-lapack.hpp.
References array, dcovector::array, dcovector::clear(), i, dcovector::l, m, n, and swap.
223 {CPPL_VERBOSE_REPORT;
227 std::cerr <<
"These matrix and vector cannot be solved." << std::endl
228 <<
"Your input was (" <<
m <<
"x" <<
n <<
") and (" << vec.
l <<
")." << std::endl;
237 for(CPPL_INT
i=0;
i<vec.
l;
i++){
245 CPPL_INT NRHS(1), LDA(
m), LDB(vec.
l), LWORK(std::min(
m,
n)+std::max(std::min(
m,
n),NRHS)), INFO(1);
246 double *WORK(
new double[LWORK]);
247 dgels_(&TRANS, &
m, &
n, &NRHS,
array, &LDA, vec.
array, &LDB, WORK, &LWORK, &INFO);
251 for(CPPL_INT
i=0;
i<
m-
n;
i++){
252 residual+=std::pow(vec(n+
i),2.0);
256 for(CPPL_INT
i=0;
i<tmp.l;
i++){
265 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
friend void swap(dgematrix &, dgematrix &)
CPPL_INT n
matrix column size
double * array
1D array to store vector data
Real Double-precision Column Vector Class.
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dgeev |
( |
std::vector< double > & |
wr, |
|
|
std::vector< double > & |
wi, |
|
|
std::vector< dcovector > & |
vrr, |
|
|
std::vector< dcovector > & |
vri |
|
) |
| |
|
inline |
calculate right eigenvalues and right eigenvectors
All of the arguments need not to be initialized. wr, wi, vrr, vri are overwitten and become real and imaginary part of right eigenvalues and right eigenvectors, respectively. This matrix is also overwritten.
Definition at line 500 of file dgematrix-lapack.hpp.
References array, and i().
506 {CPPL_VERBOSE_REPORT;
510 std::cerr <<
"This matrix is not a square matrix." << std::endl
511 <<
"This matrix is (" <<
m <<
"x" <<
n <<
")." << std::endl;
520 for(CPPL_INT
i=0;
i<
n;
i++){
526 char JOBVL(
'n'), JOBVR(
'V');
527 CPPL_INT LDA(n), LDVL(1), LDVR(n), LWORK(4*n), INFO(1);
528 double *VL(NULL), *WORK(
new double[LWORK]);
529 dgeev_(&JOBVL, &JOBVR, &n,
array, &LDA, &wr[0], &wi[0], VL, &LDVL, VR.array, &LDVR, WORK, &LWORK, &INFO);
534 for(CPPL_INT j=0; j<
n; j++){
535 if(fabs(wi[j])<DBL_MIN){
536 for(CPPL_INT
i=0;
i<
n;
i++){
542 for(CPPL_INT
i=0;
i<
n;
i++){
544 vri[j](
i) = VR(
i,j+1);
545 vrr[j+1](
i) = VR(
i,j);
546 vri[j+1](
i) =-VR(
i,j+1);
554 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dgeev |
( |
std::vector< double > & |
wr, |
|
|
std::vector< double > & |
wi, |
|
|
std::vector< drovector > & |
vlr, |
|
|
std::vector< drovector > & |
vli |
|
) |
| |
|
inline |
calculate left eigenvalues and left eigenvectors
All of the arguments need not to be initialized. wr, wi, vrr, vri are overwitten and become real and imaginary part of left eigenvalues and left eigenvectors, respectively. This matrix is also overwritten.
Definition at line 567 of file dgematrix-lapack.hpp.
References array, i, m, and n.
570 {CPPL_VERBOSE_REPORT;
574 std::cerr <<
"This matrix is not a square matrix." << std::endl
575 <<
"This matrix is (" <<
m <<
"x" <<
n <<
")." << std::endl;
584 for(CPPL_INT
i=0;
i<
n;
i++){
590 char JOBVL(
'V'), JOBVR(
'n');
591 CPPL_INT LDA(n), LDVL(n), LDVR(1), LWORK(4*n), INFO(1);
592 double *VR(NULL), *WORK(
new double[LWORK]);
593 dgeev_(&JOBVL, &JOBVR, &n,
array, &LDA, &wr[0], &wi[0], VL.array, &LDVL, VR, &LDVR, WORK, &LWORK, &INFO);
598 for(CPPL_INT j=0; j<
n; j++){
599 if(fabs(wi[j])<DBL_MIN){
600 for(CPPL_INT
i=0;
i<
n;
i++){
606 for(CPPL_INT
i=0;
i<
n;
i++){
608 vli[j](
i) =-VL(
i,j+1);
609 vlr[j+1](
i) = VL(
i,j);
610 vli[j+1](
i) = VL(
i,j+1);
619 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dggev |
( |
dgematrix & |
matB, |
|
|
std::vector< double > & |
wr, |
|
|
std::vector< double > & |
wi |
|
) |
| |
|
inline |
calculate generalized eigenvalues
All of the arguments don't need to be initialized. wr and wi are overwitten and become real and imaginary part of generalized eigenvalues, respectively. This matrix and matB are also overwritten.
Definition at line 637 of file dgematrix-lapack.hpp.
References array, i, m, and n.
639 {CPPL_VERBOSE_REPORT;
643 std::cerr <<
"This matrix is not a square matrix." << std::endl
644 <<
"This matrix is (" <<
m <<
"x" <<
n <<
")." << std::endl;
647 if(matB.
m!=
n || matB.
n!=
n){
649 std::cerr <<
"The matrix B is not a square matrix having the same size as \"this\" matrix." << std::endl
650 <<
"The B matrix is (" << matB.
m <<
"x" << matB.
n <<
")." << std::endl;
657 char JOBVL(
'n'), JOBVR(
'n');
658 CPPL_INT LDA(
n), LDB(
n), LDVL(1), LDVR(1), LWORK(8*
n), INFO(1);
659 double *BETA(
new double[
n]), *VL(NULL), *VR(NULL), *WORK(
new double[LWORK]);
660 dggev_(&JOBVL, &JOBVR, &
n,
array, &LDA, matB.
array, &LDB, &wr[0], &wi[0], BETA, VL, &LDVL, VR, &LDVR, WORK, &LWORK, &INFO);
666 for(CPPL_INT
i=0;
i<
n;
i++){
674 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dggev |
( |
dgematrix & |
matB, |
|
|
std::vector< double > & |
wr, |
|
|
std::vector< double > & |
wi, |
|
|
std::vector< dcovector > & |
vrr, |
|
|
std::vector< dcovector > & |
vri |
|
) |
| |
|
inline |
calculate generalized eigenvalues and generalized right eigenvectors
All of the arguments don't need to be initialized. wr, wi, vrr and vri are overwitten and become real and imaginary part of generalized eigenvalue and generalized right eigenvector, respectively. This matrix and matB are also overwritten.
Definition at line 687 of file dgematrix-lapack.hpp.
References array, i, m, and n.
691 {CPPL_VERBOSE_REPORT;
695 std::cerr <<
"This matrix is not a square matrix." << std::endl
696 <<
"This matrix is (" <<
m <<
"x" <<
n <<
")." << std::endl;
699 if(matB.
m!=
n || matB.
n!=
n){
701 std::cerr <<
"The matrix B is not a square matrix having the same size as \"this\" matrix." << std::endl
702 <<
"The B matrix is (" << matB.
m <<
"x" << matB.
n <<
")." << std::endl;
711 for(CPPL_INT
i=0;
i<
n;
i++){
717 char JOBVL(
'n'), JOBVR(
'V');
718 CPPL_INT LDA(n), LDB(n), LDVL(1), LDVR(n), LWORK(8*n), INFO(1);
719 double *BETA(
new double[n]), *VL(NULL), *WORK(
new double[LWORK]);
720 dggev_(&JOBVL, &JOBVR, &n,
array, &LDA, matB.
array, &LDB, &wr[0], &wi[0], BETA, VL, &LDVL, VR.array, &LDVR, WORK, &LWORK, &INFO);
725 for(CPPL_INT
i=0;
i<
n;
i++){
732 for(CPPL_INT j=0; j<
n; j++){
733 if(fabs(wi[j])<DBL_MIN){
734 for(CPPL_INT
i=0;
i<
n;
i++){
740 for(CPPL_INT
i=0;
i<
n;
i++){
742 vri[j](
i) = VR(
i,j+1);
743 vrr[j+1](
i) = VR(
i,j);
744 vri[j+1](
i) =-VR(
i,j+1);
752 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
friend _dgematrix i(const dgematrix &)
CPPL_INT dgematrix::dggev |
( |
dgematrix & |
matB, |
|
|
std::vector< double > & |
wr, |
|
|
std::vector< double > & |
wi, |
|
|
std::vector< drovector > & |
vlr, |
|
|
std::vector< drovector > & |
vli |
|
) |
| |
|
inline |
calculate generalized eigenvalues and generalized left eigenvectors
All of the arguments don't need to be initialized. wr, wi, vlr and vli are overwitten and become real and imaginary part of generalized eigenvalue and generalized left eigenvector, respectively. This matrix and matB are also overwritten.
Definition at line 765 of file dgematrix-lapack.hpp.
References array, i, m, and n.
769 {CPPL_VERBOSE_REPORT;
773 std::cerr <<
"This matrix is not a square matrix." << std::endl
774 <<
"This matrix is (" <<
m <<
"x" <<
n <<
")." << std::endl;
777 if(matB.
m!=
n || matB.
n!=
n){
779 std::cerr <<
"The matrix B is not a square matrix having the same size as \"this\" matrix." << std::endl
780 <<
"The B matrix is (" << matB.
m <<
"x" << matB.
n <<
")." << std::endl;
789 for(CPPL_INT
i=0;
i<
n;
i++){
795 char JOBVL(
'V'), JOBVR(
'n');
796 CPPL_INT LDA(n), LDB(n), LDVL(n), LDVR(1), LWORK(8*n), INFO(1);
797 double *BETA(
new double[n]), *VR(NULL), *WORK(
new double[LWORK]);
798 dggev_(&JOBVL, &JOBVR, &n,
array, &LDA, matB.
array, &LDB, &wr[0], &wi[0], BETA, VL.array, &LDVL, VR, &LDVR, WORK, &LWORK, &INFO);
803 for(CPPL_INT
i=0;
i<
n;
i++){
810 for(CPPL_INT j=0; j<
n; j++){
811 if(fabs(wi[j])<DBL_MIN){
812 for(CPPL_INT
i=0;
i<
n;
i++){
818 for(CPPL_INT
i=0;
i<
n;
i++){
820 vli[j](
i) =-VL(
i,j+1);
821 vlr[j+1](
i) = VL(
i,j);
822 vli[j+1](
i) = VL(
i,j+1);
830 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
friend _dgematrix i(const dgematrix &)
compute the singular value decomposition (SVD)
The arguments are dcocector S, dgematrix U and VT. All of them need not to be initialized. S, U and VT are overwitten and become singular values, left singular vectors, and right singular vectors respectively. This matrix also overwritten.
Definition at line 885 of file dgematrix-lapack.hpp.
References array, dcovector::array, m, n, resize(), and dcovector::resize().
886 {CPPL_VERBOSE_REPORT;
887 char JOBU(
'A'), JOBVT(
'A');
888 CPPL_INT LDA(
m), LDU(
m), LDVT(
n), LWORK(std::max(3*std::min(
m,
n)+std::max(
m,
n),5*std::min(
m,
n))), INFO(1);
889 double *WORK(
new double[LWORK]);
894 dgesvd_(&JOBU, &JOBVT, &
m, &
n,
array, &LDA, S.
array, U.
array, &LDU, VT.
array, &LDVT, WORK, &LWORK, &INFO);
899 std::cerr <<
"Serious trouble happend. INFO = " << INFO <<
"." << std::endl;
dgematrix & resize(const CPPL_INT &, const CPPL_INT &)
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
dcovector & resize(const CPPL_INT &, const CPPL_INT=0)
CPPL_INT n
matrix column size
double * array
1D array to store vector data
solve the linear equality-constrained least squares (LSE) problem
Input matrix and vectors, B, c, and d, are overwitten. This matrix is also overwritten. The solution vector x is to be automatically resized.
Definition at line 915 of file dgematrix-lapack.hpp.
References array, dcovector::array, dcovector::clear(), dcovector::l, m, and dcovector::resize().
921 {CPPL_VERBOSE_REPORT;
925 std::cerr <<
"A.m and c.l should be the same." << std::endl
926 <<
"Your input was A.m=" <<
m <<
" and c.l=" << c.
l << std::endl;
931 std::cerr <<
"B.m and d.l should be the same." << std::endl
932 <<
"Your input was B.m=" << B.
m <<
" and d.l=" << d.
l << std::endl;
935 if( !(B.
m<=
n) || !(
n<=
m+B.
m) ){
937 std::cerr <<
"B.m<=A.n<=A.m+B.m should be satisfied." << std::endl
938 <<
"Your input was B.m=" << B.
m <<
", A.n=" <<
n <<
", and A.m+B.m=" <<
m+B.
m << std::endl;
943 CPPL_INT lwork(-1), info(1);
948 CPPL_INT lda =std::max(CPPL_INT(1),
m);
949 CPPL_INT ldb =std::max(CPPL_INT(1),B.
m);
950 dgglse_(&
m, &
n, &B.
m,
array, &lda, B.
array, &ldb, c.
array, d.
array, x.
array, work.array, &lwork, &info);
951 lwork =CPPL_INT(work(0));
956 dgglse_(&
m, &
n, &B.
m,
array, &lda, B.
array, &ldb, c.
array, d.
array, x.
array, work.array, &lwork, &info);
961 std::cerr <<
"Serious trouble happend. info = " << info <<
"." << std::endl;
CPPL_INT m
matrix row size
double * array
1D array to store matrix data
dcovector & resize(const CPPL_INT &, const CPPL_INT=0)
CPPL_INT n
matrix column size
double * array
1D array to store vector data
Real Double-precision Column Vector Class.
return its inverse matrix
Definition at line 18 of file dgematrix-calc.hpp.
Referenced by chsign(), col(), copy(), dgeev(), dgels(), dgematrix(), dggev(), identity(), operator()(), operator*=(), operator+=(), operator-=(), read(), resize(), set(), to_zgematrix(), write(), and zero().
23 std::cerr <<
"This matrix is not square and has no inverse matrix." << std::endl
24 <<
"Your input was (" << mat.
m <<
"x" << mat.
n <<
")." << std::endl;
31 mat_cp.dgesv(mat_inv);
CPPL_INT m
matrix row size
CPPL_INT n
matrix column size
Real Double-precision General Dence Matrix Class.
friend _dgematrix _(dgematrix &)