48 return ((nargout == 0 || nargout == 1)
58 bool is_single =
false)
69 for (
int i = sigA.
rows () - 1; i >= 0; i--)
77 for (
int i = sigA.
rows () - 1; i >= 0; i--)
152 int nargin = args.length ();
154 if (nargin < 2 || nargin > 3)
156 else if (nargin == 3)
157 warning (
"gsvd: economy-sized decomposition is not yet implemented, returning full decomposition");
170 if (nr == 0 || nc == 0)
223 error (
"gsvd: A cannot have Inf or NaN values");
225 error (
"gsvd: B cannot have Inf or NaN values");
235 error (
"gsvd: A cannot have Inf or NaN values");
237 error (
"gsvd: B cannot have Inf or NaN values");
242 error (
"gsvd: A and B must be real or complex matrices");
252 error (
"gsvd: A cannot have Inf or NaN values");
254 error (
"gsvd: B cannot have Inf or NaN values");
264 error (
"gsvd: A cannot have Inf or NaN values");
266 error (
"gsvd: B cannot have Inf or NaN values");
271 error (
"gsvd: A and B must be real or complex matrices");
bool any_element_is_inf_or_nan(void) const
T & dgxelem(octave_idx_type i)
octave_idx_type rows(void) const
bool any_element_is_inf_or_nan(void) const
bool any_element_is_inf_or_nan(void) const
MArray< T > diag(octave_idx_type k=0) const
bool any_element_is_inf_or_nan(void) const
T right_singular_matrix(void) const
T left_singular_matrix_A(void) const
T::real_diag_matrix_type singular_values_A(void) const
T::real_diag_matrix_type singular_values_B(void) const
T left_singular_matrix_B(void) const
octave_idx_type rows(void) const
FloatMatrix xfloat_matrix_value(const char *fmt,...) const
ComplexMatrix xcomplex_matrix_value(const char *fmt,...) const
FloatComplexMatrix xfloat_complex_matrix_value(const char *fmt,...) const
octave_idx_type columns(void) const
bool is_single_type(void) const
Matrix xmatrix_value(const char *fmt,...) const
bool iscomplex(void) const
OCTINTERP_API void print_usage(void)
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
void warning(const char *fmt,...)
void error(const char *fmt,...)
static octave::math::gsvd< T >::Type gsvd_type(int nargout)
static octave_value_list do_gsvd(const T &A, const T &B, const octave_idx_type nargout, bool is_single=false)
F77_RET_T const F77_INT F77_CMPLX const F77_INT F77_CMPLX * B
F77_RET_T const F77_INT F77_CMPLX * A
Matrix identity_matrix(octave_idx_type nr, octave_idx_type nc)
FloatMatrix float_identity_matrix(octave_idx_type nr, octave_idx_type nc)
octave_value::octave_value(const Array< char > &chm, char type) return retval