23 #if defined (HAVE_CONFIG_H)
77 if (
args.length () != 3)
88 error (
"ordschur: SELECT must have same length as the sides of U and S");
89 else if (n != dimU(0) || n != dimS(0) || n != dimU(1) || n != dimS(1))
90 error (
"ordschur: U and S must be square and of equal sizes");
94 const bool double_type =
args(0).is_double_type ()
95 ||
args(1).is_double_type ();
96 const bool complex_type =
args(0).is_complex_type ()
97 ||
args(1).is_complex_type ();
99 #define PREPARE_ARGS(TYPE, TYPE_M, TYPE_COND) \
100 TYPE ## Matrix U = args(0).x ## TYPE_M ## _value ("ordschur: U and S must be real or complex floating point matrices"); \
101 TYPE ## Matrix S = args(1).x ## TYPE_M ## _value ("ordschur: U and S must be real or complex floating point matrices"); \
102 TYPE ## Matrix w (dim_vector (n, 1)); \
103 TYPE ## Matrix work (dim_vector (n, 1)); \
105 octave_idx_type info; \
106 TYPE_COND cond1, cond2;
108 #define PREPARE_OUTPUT() \
110 error ("ordschur: trsen failed"); \
121 (F77_CONST_CHAR_ARG (
"N"), F77_CONST_CHAR_ARG (
"V"),
137 (F77_CONST_CHAR_ARG (
"N"), F77_CONST_CHAR_ARG (
"V"),
138 sel.
data (), n, S.fortran_vec (), n, U.fortran_vec (), n,
140 work.fortran_vec (), n, iwork.
fortran_vec (), n, info));
152 (F77_CONST_CHAR_ARG (
"N"), F77_CONST_CHAR_ARG (
"V"),
168 (F77_CONST_CHAR_ARG (
"N"), F77_CONST_CHAR_ARG (
"V"),
169 sel.
data (), n, S.fortran_vec (), n, U.fortran_vec (), n,
171 work.fortran_vec (), n, iwork.
fortran_vec (), n, info));
178 #undef PREPARE_OUTPUT
#define PREPARE_ARGS(TYPE, TYPE_M, TYPE_COND)
OCTINTERP_API void print_usage(void)
octave_idx_type numel(void) const
Number of elements in the array.
#define F77_DBLE_CMPLX_ARG(x)
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the then the first element defines the pivoting tolerance for the unsymmetric the values defined such that for full matrix
#define DEFUN(name, args_name, nargout_name, doc)
void error(const char *fmt,...)
#define F77_XFCN(f, F, args)
nd deftypefn *octave_map m
std::complex< double > w(std::complex< double > z, double relerr=0)
const T * data(void) const
std::complex< float > FloatComplex
std::complex< double > Complex
const T * fortran_vec(void) const
Vector representing the dimensions (size) of an Array.