#include <cfloat>
#include <iostream>
#include <iomanip>
#include "CmplxQRP.h"
#include "CmplxQR.h"
#include "dbleQR.h"
#include "f77-fcn.h"
#include "lo-math.h"
#include "quit.h"
#include "defun-dld.h"
#include "error.h"
#include "gripes.h"
#include "oct-obj.h"
#include "oct-map.h"
#include "ov.h"
#include "pager.h"
#include "symtab.h"
#include "utils.h"
#include "variables.h"
Go to the source code of this file.
Typedefs | |
typedef octave_idx_type(* | sort_function )(const octave_idx_type &LSIZE, const double &ALPHA, const double &BETA, const double &S, const double &P) |
Functions | |
DEFUN_DLD (qz, args, nargout,"-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{lambda} =} qz (@var{A}, @var{B})\n\ @deftypefnx {Loadable Function} {@var{lambda} =} qz (@var{A}, @var{B}, @var{opt})\n\ QZ@tie{}decomposition of the generalized eigenvalue problem\n\ (@math{A x = s B x}). There are three ways to call this function:\n\ @enumerate\n\ @item @code{@var{lambda} = qz (@var{A}, @var{B})}\n\ \n\ Computes the generalized eigenvalues\n\ @tex\n\ $\\lambda$\n\ @end tex\n\ @ifnottex\n\ @var{lambda}\n\ @end ifnottex\n\ of @math{(A - s B)}.\n\ \n\ @item @code{[AA, BB, Q, Z, V, W, @var{lambda}] = qz (@var{A}, @var{B})}\n\ \n\ Computes QZ@tie{}decomposition, generalized eigenvectors, and\n\ generalized eigenvalues of @math{(A - s B)}\n\ @tex\n\ $$ AV = BV{ \\rm diag }(\\lambda) $$\n\ $$ W^T A = { \\rm diag }(\\lambda)W^T B $$\n\ $$ AA = Q^T AZ, BB = Q^T BZ $$\n\ @end tex\n\ @ifnottex\n\ \n\ @example\n\ @group\n\ \n\ A * V = B * V * diag (@var{lambda})\n\ W' * A = diag (@var{lambda}) * W' * B\n\ AA = Q * A * Z, BB = Q * B * Z\n\ \n\ @end group\n\ @end example\n\ \n\ @end ifnottex\n\ with @var{Q} and @var{Z} orthogonal (unitary)= @var{I}\n\ \n\ @item @code{[AA,BB,Z@{, @var{lambda}@}] = qz (@var{A}, @var{B}, @var{opt})}\n\ \n\ As in form [2], but allows ordering of generalized eigenpairs\n\ for (e.g.) solution of discrete time algebraic Riccati equations.\n\ Form 3 is not available for complex matrices, and does not compute\n\ the generalized eigenvectors @var{V}, @var{W}, nor the orthogonal matrix\n\ @var{Q}.\n\ \n\ @table @var\n\ @item opt\n\ for ordering eigenvalues of the GEP pencil. The leading block\n\ of the revised pencil contains all eigenvalues that satisfy:\n\ @table @asis\n\ @item \"N\"\n\ = unordered (default)\n\ \n\ @item \"S\"\n\ = small: leading block has all |lambda| @leq{} 1\n\ \n\ @item \"B\"\n\ = big: leading block has all |lambda| @geq{} 1\n\ \n\ @item \"-\"\n\ = negative real part: leading block has all eigenvalues\n\ in the open left half-plane\n\ \n\ @item \"+\"\n\ = non-negative real part: leading block has all eigenvalues\n\ in the closed right half-plane\n\ @end table\n\ @end table\n\ @end enumerate\n\ \n\ Note: @code{qz} performs permutation balancing, but not scaling\n\ (@pxref{doc-balance}). The order of output arguments was selected for\n\ compatibility with @sc{matlab}.\n\ @seealso{balance, eig, schur}\n\ @end deftypefn") | |
F77_RET_T | F77_FUNC (dlag2, DLAG2)(const double *A |
F77_RET_T | F77_FUNC (dggbal, DGGBAL)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (zggbal, ZGGBAL)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (zhgeqz, ZHGEQZ)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (zggbak, ZGGBAK)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (xdlange, XDLANGE)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (xdlamch, XDLAMCH)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (ztgevc, ZTGEVC)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (dtgevc, DTGEVC)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (dgghrd, DGGHRD)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (dsubsp, DSUBSP)(const octave_idx_type &NMAX |
F77_RET_T | F77_FUNC (dggbak, DGGBAK)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (dhgeqz, DHGEQZ)(F77_CONST_CHAR_ARG_DECL |
F77_RET_T | F77_FUNC (zgghrd, ZGGHRD)(F77_CONST_CHAR_ARG_DECL |
static octave_idx_type | fcrhp (const octave_idx_type &lsize, const double &alpha, const double &beta, const double &s, const double &) |
static octave_idx_type | fin (const octave_idx_type &lsize, const double &alpha, const double &beta, const double &, const double &p) |
static octave_idx_type | folhp (const octave_idx_type &lsize, const double &alpha, const double &beta, const double &s, const double &) |
static octave_idx_type | fout (const octave_idx_type &lsize, const double &alpha, const double &beta, const double &, const double &p) |
Variables | |
F77_RET_T const octave_idx_type double * | A |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex * | ALPHA |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double double * | ALPHAI |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double * | ALPHAR |
F77_RET_T const octave_idx_type double const octave_idx_type double * | B |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double double double * | BETA |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex * | CQ |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type const octave_idx_type octave_idx_type Complex * | CWORK |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type Complex * | CZ |
F77_RET_T const octave_idx_type double double double const double & | EPS |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type octave_idx_type double double double octave_idx_type &INFO | F77_CHAR_ARG_LEN_DECL |
F77_RET_T | F77_CONST_CHAR_ARG_DECL |
F77_RET_T const octave_idx_type double double double const double octave_idx_type octave_idx_type & | FAIL |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type octave_idx_type & | IHI |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type & | ILO |
F77_RET_T const octave_idx_type double double double const double octave_idx_type octave_idx_type octave_idx_type * | IND |
F77_RET_T const octave_idx_type double const octave_idx_type & | LDA |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type & | LDB |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type & | LDQ |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const double const double octave_idx_type double const octave_idx_type & | LDV |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type & | LDVL |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type & | LDVR |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type & | LDZ |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type octave_idx_type double * | LSCALE |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double double double double const octave_idx_type double const octave_idx_type double const octave_idx_type & | LWORK |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const double const double octave_idx_type & | M |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type const octave_idx_type & | MM |
F77_RET_T const octave_idx_type & | N |
F77_RET_T const octave_idx_type double double double const double octave_idx_type & | NDIM |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double * | Q |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type octave_idx_type double double * | RSCALE |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type double * | RWORK |
F77_RET_T const octave_idx_type const double const octave_idx_type const double & | SAFMIN |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double & | SCALE1 |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double & | SCALE2 |
F77_RET_T octave_idx_type * | SELECT |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const double const double octave_idx_type double * | V |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double * | VL |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double * | VR |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double double double & | WI |
F77_RET_T const octave_idx_type double const octave_idx_type double const octave_idx_type octave_idx_type octave_idx_type double double double * | WORK |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double & | WR1 |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double double & | WR2 |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex * | xVL |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex * | xVR |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double * | Z |
F77_RET_T const octave_idx_type double double double sort_function |
DEFUN_DLD | ( | qz | , | |
args | , | |||
nargout | ||||
) |
Definition at line 293 of file qz.cc.
References CQ, CZ, Array< T >::data(), DSUBSP(), empty_arg(), error(), error_state, F77_CHAR_ARG_LEN, F77_CONST_CHAR_ARG2, F77_FUNC(), F77_XFCN, Array< T >::fortran_vec(), gripe_empty_arg(), gripe_nonconformant(), gripe_square_matrix_required(), ComplexMatrix::hermitian(), nn, octave_print_internal(), panic_impossible, print_usage(), base_qr< qr_type >::Q(), base_qr< qr_type >::R(), transpose(), VL, VR, wi, xdlamch(), and xdlange().
F77_RET_T F77_FUNC | ( | dlag2 | , | |
DLAG2 | ||||
) | const |
F77_RET_T F77_FUNC | ( | dggbal | , | |
DGGBAL | ||||
) |
F77_RET_T F77_FUNC | ( | zggbal | , | |
ZGGBAL | ||||
) |
F77_RET_T F77_FUNC | ( | zhgeqz | , | |
ZHGEQZ | ||||
) |
F77_RET_T F77_FUNC | ( | zggbak | , | |
ZGGBAK | ||||
) |
F77_RET_T F77_FUNC | ( | xdlange | , | |
XDLANGE | ||||
) |
F77_RET_T F77_FUNC | ( | xdlamch | , | |
XDLAMCH | ||||
) |
F77_RET_T F77_FUNC | ( | ztgevc | , | |
ZTGEVC | ||||
) |
F77_RET_T F77_FUNC | ( | dtgevc | , | |
DTGEVC | ||||
) |
F77_RET_T F77_FUNC | ( | dgghrd | , | |
DGGHRD | ||||
) |
F77_RET_T F77_FUNC | ( | dsubsp | , | |
DSUBSP | ||||
) | const |
F77_RET_T F77_FUNC | ( | dggbak | , | |
DGGBAK | ||||
) |
F77_RET_T F77_FUNC | ( | dhgeqz | , | |
DHGEQZ | ||||
) |
F77_RET_T F77_FUNC | ( | zgghrd | , | |
ZGGHRD | ||||
) |
static octave_idx_type fcrhp | ( | const octave_idx_type & | lsize, | |
const double & | alpha, | |||
const double & | beta, | |||
const double & | s, | |||
const double & | ||||
) | [static] |
static octave_idx_type fin | ( | const octave_idx_type & | lsize, | |
const double & | alpha, | |||
const double & | beta, | |||
const double & | , | |||
const double & | p | |||
) | [static] |
static octave_idx_type folhp | ( | const octave_idx_type & | lsize, | |
const double & | alpha, | |||
const double & | beta, | |||
const double & | s, | |||
const double & | ||||
) | [static] |
static octave_idx_type fout | ( | const octave_idx_type & | lsize, | |
const double & | alpha, | |||
const double & | beta, | |||
const double & | , | |||
const double & | p | |||
) | [static] |
F77_RET_T octave_idx_type const octave_idx_type const Complex * A |
Definition at line 69 of file qz.cc.
Referenced by ALBETA(), convert_to_int_array(), convert_to_octave_idx_type_array(), CUNHJ(), CUNIK(), DEFUN_DLD(), DGAMLN(), CollocWt::first(), SparseMatrix::fsolve(), SparseComplexMatrix::fsolve(), GAMI(), GAMIT(), GAMLN(), sparse_base_chol< chol_type, chol_elt, p_type >::sparse_base_chol_rep::init(), CollocWt::operator=(), R9GMIT(), R9LGIC(), R9LGIT(), SparseQR::SparseQR_rep::SparseQR_rep(), XERRWD(), XERSVE(), ZUNHJ(), and ZUNIK().
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex* ALPHA |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double double* ALPHAI |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double* ALPHAR |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex * B |
Definition at line 69 of file qz.cc.
Referenced by ALBETA(), CUNHJ(), CUNIK(), DEFUN_DLD(), DGAMLN(), dmsolve_extract(), DQAGPE(), SparseMatrix::fsolve(), SparseComplexMatrix::fsolve(), GAMLN(), CollocWt::operator=(), qrsolve(), CollocWt::second(), ZUNHJ(), and ZUNIK().
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex * BETA |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex* CQ |
Definition at line 157 of file qz.cc.
Referenced by DEFUN_DLD().
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type const octave_idx_type octave_idx_type Complex* CWORK |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type Complex* CZ |
Definition at line 157 of file qz.cc.
Referenced by CBKNU(), and DEFUN_DLD().
F77_RET_T const octave_idx_type const octave_idx_type const double const octave_idx_type double double& F77_CHAR_ARG_LEN_DECL |
F77_RET_T F77_CONST_CHAR_ARG_DECL |
F77_RET_T const octave_idx_type double double double const double octave_idx_type octave_idx_type& FAIL |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type & IHI |
F77_RET_T const octave_idx_type const octave_idx_type & ILO |
F77_RET_T const octave_idx_type double double double const double octave_idx_type octave_idx_type octave_idx_type* IND |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type & LDA |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type & LDB |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type & LDQ |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const double const double octave_idx_type Complex const octave_idx_type & LDV |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type & LDVL |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type & LDVR |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type Complex const octave_idx_type & LDZ |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const float * LSCALE |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type Complex Complex Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type & LWORK |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type const octave_idx_type octave_idx_type & M |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type const octave_idx_type & MM |
F77_RET_T const octave_idx_type & N |
Definition at line 69 of file qz.cc.
Referenced by BETAI(), SparseQR::SparseQR_rep::C(), SparseComplexQR::SparseComplexQR_rep::C(), CBESH(), CSEVL(), CUNK1(), CUNK2(), DBETAI(), DCSEVL(), DDAJAC(), DEFUN_DLD(), DGAMMA(), DLSODE(), DMATD(), GAMMA(), INTDY(), SparseQR::SparseQR_rep::P(), SparseComplexQR::SparseComplexQR_rep::P(), SparseQR::SparseQR_rep::Pinv(), SparseComplexQR::SparseComplexQR_rep::Pinv(), PREPJ(), SparseQR::SparseQR_rep::Q(), SparseComplexQR::SparseComplexQR_rep::Q(), SparseQR::SparseQR_rep::R(), SparseComplexQR::SparseComplexQR_rep::R(), SINTDY(), SLSODE(), SOLSY(), SparseQR::SparseQR_rep::SparseQR_rep(), SPREPJ(), SSOLSY(), SSTODE(), STODE(), SparseQR::SparseQR_rep::V(), SparseComplexQR::SparseComplexQR_rep::V(), XERPRN(), XGETUA(), XSETUA(), ZBESH(), ZUNK1(), ZUNK2(), SparseComplexQR::SparseComplexQR_rep::~SparseComplexQR_rep(), and SparseQR::SparseQR_rep::~SparseQR_rep().
F77_RET_T const octave_idx_type double double double const double octave_idx_type& NDIM |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double double double double * Q |
Definition at line 113 of file qz.cc.
Referenced by ALBETA(), BETAI(), CBKNU(), sparse_base_lu< SparseComplexMatrix, Complex, SparseMatrix, double >::col_perm(), DBETAI(), DEFUN_DLD(), DSPIGM(), find_starting_node(), SparseMatrix::inverse(), SparseComplexMatrix::inverse(), sparse_base_lu< SparseComplexMatrix, Complex, SparseMatrix, double >::operator=(), sparse_base_lu< lu_type, lu_elt_type, p_type, p_elt_type >::Pc(), sparse_base_lu< lu_type, lu_elt_type, p_type, p_elt_type >::Pc_mat(), sparse_base_lu< lu_type, lu_elt_type, p_type, p_elt_type >::Pc_vec(), SparseComplexCHOL::Q(), and xpow().
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const float const float * RSCALE |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex const octave_idx_type const octave_idx_type octave_idx_type Complex double * RWORK |
F77_RET_T const octave_idx_type const double const octave_idx_type const double& SAFMIN |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double& SCALE1 |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double& SCALE2 |
F77_RET_T octave_idx_type * SELECT |
F77_RET_T const octave_idx_type const octave_idx_type const octave_idx_type const double const double octave_idx_type Complex * V |
Definition at line 89 of file qz.cc.
Referenced by DDWNRM(), DEFUN_DLD(), DSPIGM(), null(), pprsc(), FloatMatrix::pseudo_inverse(), FloatComplexMatrix::pseudo_inverse(), Matrix::pseudo_inverse(), and ComplexMatrix::pseudo_inverse().
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double* VL |
Definition at line 194 of file qz.cc.
Referenced by DEFUN_DLD().
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double* VR |
Definition at line 194 of file qz.cc.
Referenced by DEFUN_DLD().
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double double double& WI |
F77_RET_T octave_idx_type const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type double const octave_idx_type const octave_idx_type octave_idx_type double * WORK |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double& WR1 |
F77_RET_T const octave_idx_type const double const octave_idx_type const double double double double double& WR2 |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex* xVL |
F77_RET_T octave_idx_type const octave_idx_type const Complex const octave_idx_type const Complex const octave_idx_type Complex const octave_idx_type Complex* xVR |