Mercurial > octave-nkf
comparison libinterp/corefcn/qz.cc @ 17787:175b392e91fe
Use GNU style coding conventions for code in libinterp/
* libinterp/corefcn/Cell.h, libinterp/corefcn/__contourc__.cc,
libinterp/corefcn/__dispatch__.cc, libinterp/corefcn/__lin_interpn__.cc,
libinterp/corefcn/__pchip_deriv__.cc, libinterp/corefcn/__qp__.cc,
libinterp/corefcn/balance.cc, libinterp/corefcn/besselj.cc,
libinterp/corefcn/betainc.cc, libinterp/corefcn/bitfcns.cc,
libinterp/corefcn/bsxfun.cc, libinterp/corefcn/c-file-ptr-stream.cc,
libinterp/corefcn/c-file-ptr-stream.h, libinterp/corefcn/cellfun.cc,
libinterp/corefcn/colloc.cc, libinterp/corefcn/comment-list.h,
libinterp/corefcn/conv2.cc, libinterp/corefcn/daspk.cc,
libinterp/corefcn/dasrt.cc, libinterp/corefcn/dassl.cc,
libinterp/corefcn/data.cc, libinterp/corefcn/debug.cc,
libinterp/corefcn/defaults.cc, libinterp/corefcn/defaults.in.h,
libinterp/corefcn/defun-int.h, libinterp/corefcn/defun.cc,
libinterp/corefcn/det.cc, libinterp/corefcn/dirfns.cc,
libinterp/corefcn/display.cc, libinterp/corefcn/dlmread.cc,
libinterp/corefcn/dot.cc, libinterp/corefcn/dynamic-ld.cc,
libinterp/corefcn/dynamic-ld.h, libinterp/corefcn/eig.cc,
libinterp/corefcn/ellipj.cc, libinterp/corefcn/error.cc,
libinterp/corefcn/error.h, libinterp/corefcn/event-queue.h,
libinterp/corefcn/fft.cc, libinterp/corefcn/fft2.cc, libinterp/corefcn/fftn.cc,
libinterp/corefcn/file-io.cc, libinterp/corefcn/filter.cc,
libinterp/corefcn/find.cc, libinterp/corefcn/gammainc.cc,
libinterp/corefcn/gcd.cc, libinterp/corefcn/getgrent.cc,
libinterp/corefcn/getpwent.cc, libinterp/corefcn/getrusage.cc,
libinterp/corefcn/givens.cc, libinterp/corefcn/gl-render.cc,
libinterp/corefcn/gl2ps-renderer.cc, libinterp/corefcn/gl2ps-renderer.h,
libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h,
libinterp/corefcn/gripes.cc, libinterp/corefcn/gripes.h,
libinterp/corefcn/help.cc, libinterp/corefcn/hess.cc,
libinterp/corefcn/hex2num.cc, libinterp/corefcn/input.cc,
libinterp/corefcn/input.h, libinterp/corefcn/inv.cc,
libinterp/corefcn/jit-ir.h, libinterp/corefcn/jit-typeinfo.cc,
libinterp/corefcn/jit-typeinfo.h, libinterp/corefcn/jit-util.h,
libinterp/corefcn/kron.cc, libinterp/corefcn/load-path.cc,
libinterp/corefcn/load-path.h, libinterp/corefcn/load-save.cc,
libinterp/corefcn/load-save.h, libinterp/corefcn/lookup.cc,
libinterp/corefcn/ls-ascii-helper.cc, libinterp/corefcn/ls-hdf5.cc,
libinterp/corefcn/ls-hdf5.h, libinterp/corefcn/ls-mat-ascii.cc,
libinterp/corefcn/ls-mat-ascii.h, libinterp/corefcn/ls-mat4.cc,
libinterp/corefcn/ls-mat5.cc, libinterp/corefcn/ls-mat5.h,
libinterp/corefcn/ls-oct-ascii.cc, libinterp/corefcn/lsode.cc,
libinterp/corefcn/lu.cc, libinterp/corefcn/luinc.cc,
libinterp/corefcn/mappers.cc, libinterp/corefcn/matrix_type.cc,
libinterp/corefcn/max.cc, libinterp/corefcn/md5sum.cc,
libinterp/corefcn/mex.cc, libinterp/corefcn/mexproto.h,
libinterp/corefcn/mgorth.cc, libinterp/corefcn/mxarray.in.h,
libinterp/corefcn/nproc.cc, libinterp/corefcn/oct-hist.cc,
libinterp/corefcn/oct-lvalue.h, libinterp/corefcn/oct-map.cc,
libinterp/corefcn/oct-map.h, libinterp/corefcn/oct-obj.h,
libinterp/corefcn/oct-prcstrm.h, libinterp/corefcn/oct-stdstrm.h,
libinterp/corefcn/oct-stream.cc, libinterp/corefcn/oct-stream.h,
libinterp/corefcn/octave-link.cc, libinterp/corefcn/octave-link.h,
libinterp/corefcn/pager.cc, libinterp/corefcn/pinv.cc,
libinterp/corefcn/pr-output.cc, libinterp/corefcn/procstream.h,
libinterp/corefcn/profiler.cc, libinterp/corefcn/pt-jit.cc,
libinterp/corefcn/pt-jit.h, libinterp/corefcn/quad.cc,
libinterp/corefcn/quadcc.cc, libinterp/corefcn/qz.cc,
libinterp/corefcn/rand.cc, libinterp/corefcn/rcond.cc,
libinterp/corefcn/regexp.cc, libinterp/corefcn/schur.cc,
libinterp/corefcn/sighandlers.cc, libinterp/corefcn/sighandlers.h,
libinterp/corefcn/sparse-xdiv.cc, libinterp/corefcn/sparse-xdiv.h,
libinterp/corefcn/sparse-xpow.cc, libinterp/corefcn/sparse.cc,
libinterp/corefcn/spparms.cc, libinterp/corefcn/sqrtm.cc,
libinterp/corefcn/str2double.cc, libinterp/corefcn/strfind.cc,
libinterp/corefcn/strfns.cc, libinterp/corefcn/sub2ind.cc,
libinterp/corefcn/svd.cc, libinterp/corefcn/syl.cc,
libinterp/corefcn/symtab.cc, libinterp/corefcn/symtab.h,
libinterp/corefcn/syscalls.cc, libinterp/corefcn/sysdep.cc,
libinterp/corefcn/sysdep.h, libinterp/corefcn/time.cc,
libinterp/corefcn/toplev.cc, libinterp/corefcn/toplev.h,
libinterp/corefcn/tril.cc, libinterp/corefcn/txt-eng-ft.cc,
libinterp/corefcn/txt-eng-ft.h, libinterp/corefcn/txt-eng.h,
libinterp/corefcn/typecast.cc, libinterp/corefcn/urlwrite.cc,
libinterp/corefcn/utils.cc, libinterp/corefcn/variables.cc,
libinterp/corefcn/variables.h, libinterp/corefcn/xdiv.cc,
libinterp/corefcn/xdiv.h, libinterp/corefcn/xnorm.h, libinterp/corefcn/xpow.cc,
libinterp/corefcn/xpow.h, libinterp/corefcn/zfstream.cc,
libinterp/corefcn/zfstream.h, libinterp/dldfcn/__delaunayn__.cc,
libinterp/dldfcn/__dsearchn__.cc, libinterp/dldfcn/__eigs__.cc,
libinterp/dldfcn/__fltk_uigetfile__.cc, libinterp/dldfcn/__glpk__.cc,
libinterp/dldfcn/__init_fltk__.cc, libinterp/dldfcn/__init_gnuplot__.cc,
libinterp/dldfcn/__magick_read__.cc, libinterp/dldfcn/__voronoi__.cc,
libinterp/dldfcn/amd.cc, libinterp/dldfcn/ccolamd.cc, libinterp/dldfcn/chol.cc,
libinterp/dldfcn/colamd.cc, libinterp/dldfcn/convhulln.cc,
libinterp/dldfcn/dmperm.cc, libinterp/dldfcn/fftw.cc, libinterp/dldfcn/qr.cc,
libinterp/dldfcn/symbfact.cc, libinterp/dldfcn/symrcm.cc,
libinterp/dldfcn/tsearch.cc, libinterp/octave-value/ov-base-diag.cc,
libinterp/octave-value/ov-base-diag.h, libinterp/octave-value/ov-base-int.cc,
libinterp/octave-value/ov-base-int.h, libinterp/octave-value/ov-base-mat.h,
libinterp/octave-value/ov-base-scalar.cc,
libinterp/octave-value/ov-base-scalar.h,
libinterp/octave-value/ov-base-sparse.cc,
libinterp/octave-value/ov-base-sparse.h, libinterp/octave-value/ov-base.cc,
libinterp/octave-value/ov-base.h, libinterp/octave-value/ov-bool-mat.cc,
libinterp/octave-value/ov-bool-mat.h, libinterp/octave-value/ov-bool-sparse.cc,
libinterp/octave-value/ov-bool-sparse.h, libinterp/octave-value/ov-bool.cc,
libinterp/octave-value/ov-bool.h, libinterp/octave-value/ov-builtin.cc,
libinterp/octave-value/ov-builtin.h, libinterp/octave-value/ov-cell.cc,
libinterp/octave-value/ov-cell.h, libinterp/octave-value/ov-ch-mat.cc,
libinterp/octave-value/ov-ch-mat.h, libinterp/octave-value/ov-class.cc,
libinterp/octave-value/ov-class.h, libinterp/octave-value/ov-colon.h,
libinterp/octave-value/ov-complex.cc, libinterp/octave-value/ov-complex.h,
libinterp/octave-value/ov-cx-diag.cc, libinterp/octave-value/ov-cx-diag.h,
libinterp/octave-value/ov-cx-mat.cc, libinterp/octave-value/ov-cx-mat.h,
libinterp/octave-value/ov-cx-sparse.cc, libinterp/octave-value/ov-cx-sparse.h,
libinterp/octave-value/ov-dld-fcn.h, libinterp/octave-value/ov-fcn-handle.cc,
libinterp/octave-value/ov-fcn-handle.h,
libinterp/octave-value/ov-fcn-inline.cc,
libinterp/octave-value/ov-fcn-inline.h, libinterp/octave-value/ov-fcn.h,
libinterp/octave-value/ov-float.cc, libinterp/octave-value/ov-float.h,
libinterp/octave-value/ov-flt-complex.cc,
libinterp/octave-value/ov-flt-complex.h,
libinterp/octave-value/ov-flt-cx-diag.cc,
libinterp/octave-value/ov-flt-cx-diag.h,
libinterp/octave-value/ov-flt-cx-mat.cc,
libinterp/octave-value/ov-flt-cx-mat.h,
libinterp/octave-value/ov-flt-re-diag.cc,
libinterp/octave-value/ov-flt-re-diag.h,
libinterp/octave-value/ov-flt-re-mat.cc,
libinterp/octave-value/ov-flt-re-mat.h, libinterp/octave-value/ov-int16.cc,
libinterp/octave-value/ov-int32.cc, libinterp/octave-value/ov-int64.cc,
libinterp/octave-value/ov-int8.cc, libinterp/octave-value/ov-intx.h,
libinterp/octave-value/ov-java.cc, libinterp/octave-value/ov-lazy-idx.h,
libinterp/octave-value/ov-mex-fcn.cc, libinterp/octave-value/ov-mex-fcn.h,
libinterp/octave-value/ov-null-mat.cc, libinterp/octave-value/ov-null-mat.h,
libinterp/octave-value/ov-oncleanup.cc, libinterp/octave-value/ov-perm.cc,
libinterp/octave-value/ov-perm.h, libinterp/octave-value/ov-range.cc,
libinterp/octave-value/ov-range.h, libinterp/octave-value/ov-re-diag.cc,
libinterp/octave-value/ov-re-diag.h, libinterp/octave-value/ov-re-mat.cc,
libinterp/octave-value/ov-re-mat.h, libinterp/octave-value/ov-re-sparse.cc,
libinterp/octave-value/ov-re-sparse.h, libinterp/octave-value/ov-scalar.cc,
libinterp/octave-value/ov-scalar.h, libinterp/octave-value/ov-str-mat.cc,
libinterp/octave-value/ov-str-mat.h, libinterp/octave-value/ov-struct.cc,
libinterp/octave-value/ov-struct.h, libinterp/octave-value/ov-type-conv.h,
libinterp/octave-value/ov-typeinfo.cc, libinterp/octave-value/ov-typeinfo.h,
libinterp/octave-value/ov-uint16.cc, libinterp/octave-value/ov-uint32.cc,
libinterp/octave-value/ov-uint64.cc, libinterp/octave-value/ov-uint8.cc,
libinterp/octave-value/ov-usr-fcn.cc, libinterp/octave-value/ov-usr-fcn.h,
libinterp/octave-value/ov.cc, libinterp/octave-value/ov.h, libinterp/octave.cc,
libinterp/operators/op-b-bm.cc, libinterp/operators/op-b-sbm.cc,
libinterp/operators/op-bm-b.cc, libinterp/operators/op-bm-bm.cc,
libinterp/operators/op-cdm-cdm.cc, libinterp/operators/op-chm.cc,
libinterp/operators/op-class.cc, libinterp/operators/op-cm-cm.cc,
libinterp/operators/op-cm-cs.cc, libinterp/operators/op-cm-s.cc,
libinterp/operators/op-cm-scm.cc, libinterp/operators/op-cm-sm.cc,
libinterp/operators/op-cs-cm.cc, libinterp/operators/op-cs-cs.cc,
libinterp/operators/op-cs-scm.cc, libinterp/operators/op-cs-sm.cc,
libinterp/operators/op-dm-dm.cc, libinterp/operators/op-dm-scm.cc,
libinterp/operators/op-double-conv.cc, libinterp/operators/op-fcdm-fcdm.cc,
libinterp/operators/op-fcm-fcm.cc, libinterp/operators/op-fcm-fcs.cc,
libinterp/operators/op-fcm-fm.cc, libinterp/operators/op-fcm-fs.cc,
libinterp/operators/op-fcs-fcm.cc, libinterp/operators/op-fcs-fcs.cc,
libinterp/operators/op-fcs-fm.cc, libinterp/operators/op-fcs-fs.cc,
libinterp/operators/op-fdm-fdm.cc, libinterp/operators/op-float-conv.cc,
libinterp/operators/op-fm-fcm.cc, libinterp/operators/op-fm-fcs.cc,
libinterp/operators/op-fm-fm.cc, libinterp/operators/op-fm-fs.cc,
libinterp/operators/op-fs-fcm.cc, libinterp/operators/op-fs-fcs.cc,
libinterp/operators/op-fs-fm.cc, libinterp/operators/op-fs-fs.cc,
libinterp/operators/op-m-cm.cc, libinterp/operators/op-m-cs.cc,
libinterp/operators/op-m-m.cc, libinterp/operators/op-m-s.cc,
libinterp/operators/op-m-scm.cc, libinterp/operators/op-m-sm.cc,
libinterp/operators/op-pm-scm.cc, libinterp/operators/op-range.cc,
libinterp/operators/op-s-cm.cc, libinterp/operators/op-s-cs.cc,
libinterp/operators/op-s-scm.cc, libinterp/operators/op-sbm-b.cc,
libinterp/operators/op-sbm-bm.cc, libinterp/operators/op-sbm-sbm.cc,
libinterp/operators/op-scm-cm.cc, libinterp/operators/op-scm-cs.cc,
libinterp/operators/op-scm-m.cc, libinterp/operators/op-scm-s.cc,
libinterp/operators/op-scm-scm.cc, libinterp/operators/op-scm-sm.cc,
libinterp/operators/op-sm-cm.cc, libinterp/operators/op-sm-m.cc,
libinterp/operators/op-sm-s.cc, libinterp/operators/op-sm-scm.cc,
libinterp/operators/op-sm-sm.cc, libinterp/operators/op-str-m.cc,
libinterp/operators/op-str-s.cc, libinterp/operators/op-str-str.cc,
libinterp/operators/ops.h, libinterp/parse-tree/lex.h,
libinterp/parse-tree/parse.h, libinterp/parse-tree/pt-arg-list.cc,
libinterp/parse-tree/pt-arg-list.h, libinterp/parse-tree/pt-assign.cc,
libinterp/parse-tree/pt-assign.h, libinterp/parse-tree/pt-binop.cc,
libinterp/parse-tree/pt-binop.h, libinterp/parse-tree/pt-bp.h,
libinterp/parse-tree/pt-cbinop.cc, libinterp/parse-tree/pt-check.cc,
libinterp/parse-tree/pt-colon.cc, libinterp/parse-tree/pt-colon.h,
libinterp/parse-tree/pt-const.cc, libinterp/parse-tree/pt-decl.cc,
libinterp/parse-tree/pt-decl.h, libinterp/parse-tree/pt-eval.cc,
libinterp/parse-tree/pt-except.h, libinterp/parse-tree/pt-exp.h,
libinterp/parse-tree/pt-fcn-handle.cc, libinterp/parse-tree/pt-id.cc,
libinterp/parse-tree/pt-id.h, libinterp/parse-tree/pt-idx.cc,
libinterp/parse-tree/pt-idx.h, libinterp/parse-tree/pt-loop.h,
libinterp/parse-tree/pt-mat.cc, libinterp/parse-tree/pt-misc.cc,
libinterp/parse-tree/pt-misc.h, libinterp/parse-tree/pt-pr-code.cc,
libinterp/parse-tree/pt-select.h, libinterp/parse-tree/pt-stmt.h,
libinterp/parse-tree/token.h, libinterp/version.cc:
Use GNU style coding conventions for code in libinterp/
author | Rik <rik@octave.org> |
---|---|
date | Mon, 28 Oct 2013 19:51:46 -0700 |
parents | d63878346099 |
children | 6113e0c6920b |
comparison
equal
deleted
inserted
replaced
17786:34d9812a943b | 17787:175b392e91fe |
---|---|
56 #endif | 56 #endif |
57 #include "symtab.h" | 57 #include "symtab.h" |
58 #include "utils.h" | 58 #include "utils.h" |
59 #include "variables.h" | 59 #include "variables.h" |
60 | 60 |
61 typedef octave_idx_type (*sort_function) (const octave_idx_type& LSIZE, const double& ALPHA, | 61 typedef octave_idx_type (*sort_function) (const octave_idx_type& LSIZE, |
62 const double& BETA, const double& S, | 62 const double& ALPHA, |
63 const double& P); | 63 const double& BETA, const double& S, |
64 const double& P); | |
64 | 65 |
65 extern "C" | 66 extern "C" |
66 { | 67 { |
67 F77_RET_T | 68 F77_RET_T |
68 F77_FUNC (dggbal, DGGBAL) (F77_CONST_CHAR_ARG_DECL, | 69 F77_FUNC (dggbal, DGGBAL) (F77_CONST_CHAR_ARG_DECL, |
289 | 290 |
290 | 291 |
291 //FIXME: Matlab does not produce lambda as the first output argument. | 292 //FIXME: Matlab does not produce lambda as the first output argument. |
292 // Compatibility problem? | 293 // Compatibility problem? |
293 DEFUN (qz, args, nargout, | 294 DEFUN (qz, args, nargout, |
294 "-*- texinfo -*-\n\ | 295 "-*- texinfo -*-\n\ |
295 @deftypefn {Built-in Function} {@var{lambda} =} qz (@var{A}, @var{B})\n\ | 296 @deftypefn {Built-in Function} {@var{lambda} =} qz (@var{A}, @var{B})\n\ |
296 @deftypefnx {Built-in Function} {@var{lambda} =} qz (@var{A}, @var{B}, @var{opt})\n\ | 297 @deftypefnx {Built-in Function} {@var{lambda} =} qz (@var{A}, @var{B}, @var{opt})\n\ |
297 QZ@tie{}decomposition of the generalized eigenvalue problem\n\ | 298 QZ@tie{}decomposition of the generalized eigenvalue problem\n\ |
298 (@math{A x = s B x}). There are three ways to call this function:\n\ | 299 (@math{A x = s B x}). There are three ways to call this function:\n\ |
299 @enumerate\n\ | 300 @enumerate\n\ |
374 { | 375 { |
375 octave_value_list retval; | 376 octave_value_list retval; |
376 int nargin = args.length (); | 377 int nargin = args.length (); |
377 | 378 |
378 #ifdef DEBUG | 379 #ifdef DEBUG |
379 std::cout << "qz: nargin = " << nargin << ", nargout = " << nargout << std::endl; | 380 std::cout << "qz: nargin = " << nargin |
381 << ", nargout = " << nargout << std::endl; | |
380 #endif | 382 #endif |
381 | 383 |
382 if (nargin < 2 || nargin > 3 || nargout > 7) | 384 if (nargin < 2 || nargin > 3 || nargout > 7) |
383 { | 385 { |
384 print_usage (); | 386 print_usage (); |
425 F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("S", 1), | 427 F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("S", 1), |
426 safmin | 428 safmin |
427 F77_CHAR_ARG_LEN (1)); | 429 F77_CHAR_ARG_LEN (1)); |
428 | 430 |
429 #ifdef DEBUG_EIG | 431 #ifdef DEBUG_EIG |
430 std::cout << "qz: initial value of safmin=" << setiosflags (std::ios::scientific) | 432 std::cout << "qz: initial value of safmin=" |
431 << safmin << std::endl; | 433 << setiosflags (std::ios::scientific) |
434 << safmin << std::endl; | |
432 #endif | 435 #endif |
433 | 436 |
434 // Some machines (e.g., DEC alpha) get safmin = 0; | 437 // Some machines (e.g., DEC alpha) get safmin = 0; |
435 // for these, use eps instead to avoid problems in dlag2. | 438 // for these, use eps instead to avoid problems in dlag2. |
436 if (safmin == 0) | 439 if (safmin == 0) |
442 F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("E", 1), | 445 F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("E", 1), |
443 safmin | 446 safmin |
444 F77_CHAR_ARG_LEN (1)); | 447 F77_CHAR_ARG_LEN (1)); |
445 | 448 |
446 #ifdef DEBUG_EIG | 449 #ifdef DEBUG_EIG |
447 std::cout << "qz: safmin set to " << setiosflags (std::ios::scientific) | 450 std::cout << "qz: safmin set to " |
448 << safmin << std::endl; | 451 << setiosflags (std::ios::scientific) |
452 << safmin << std::endl; | |
449 #endif | 453 #endif |
450 } | 454 } |
451 } | 455 } |
452 | 456 |
453 #ifdef DEBUG | 457 #ifdef DEBUG |
456 | 460 |
457 // Argument 1: check if it's o.k. dimensioned. | 461 // Argument 1: check if it's o.k. dimensioned. |
458 octave_idx_type nn = args(0).rows (); | 462 octave_idx_type nn = args(0).rows (); |
459 | 463 |
460 #ifdef DEBUG | 464 #ifdef DEBUG |
461 std::cout << "argument 1 dimensions: (" << nn << "," << args(0).columns () << ")" | 465 std::cout << "argument 1 dimensions: (" |
462 << std::endl; | 466 << nn << "," << args(0).columns () << ")" |
467 << std::endl; | |
463 #endif | 468 #endif |
464 | 469 |
465 int arg_is_empty = empty_arg ("qz", nn, args(0).columns ()); | 470 int arg_is_empty = empty_arg ("qz", nn, args(0).columns ()); |
466 | 471 |
467 if (arg_is_empty < 0) | 472 if (arg_is_empty < 0) |
551 | 556 |
552 if (complex_case) | 557 if (complex_case) |
553 { | 558 { |
554 #ifdef DEBUG | 559 #ifdef DEBUG |
555 if (compq == 'V') | 560 if (compq == 'V') |
556 std::cout << "qz: performing balancing; CQ=" << std::endl << CQ << std::endl; | 561 std::cout << "qz: performing balancing; CQ=" << std::endl |
562 << CQ << std::endl; | |
557 #endif | 563 #endif |
558 if (args(0).is_real_type ()) | 564 if (args(0).is_real_type ()) |
559 caa = ComplexMatrix (aa); | 565 caa = ComplexMatrix (aa); |
560 | 566 |
561 if (args(1).is_real_type ()) | 567 if (args(1).is_real_type ()) |
576 } | 582 } |
577 else | 583 else |
578 { | 584 { |
579 #ifdef DEBUG | 585 #ifdef DEBUG |
580 if (compq == 'V') | 586 if (compq == 'V') |
581 std::cout << "qz: performing balancing; QQ=" << std::endl << QQ << std::endl; | 587 std::cout << "qz: performing balancing; QQ=" << std::endl |
588 << QQ << std::endl; | |
582 #endif | 589 #endif |
583 | 590 |
584 F77_XFCN (dggbal, DGGBAL, | 591 F77_XFCN (dggbal, DGGBAL, |
585 (F77_CONST_CHAR_ARG2 (&bal_job, 1), | 592 (F77_CONST_CHAR_ARG2 (&bal_job, 1), |
586 nn, aa.fortran_vec (), nn, bb.fortran_vec (), | 593 nn, aa.fortran_vec (), nn, bb.fortran_vec (), |
701 | 708 |
702 // Compute the QR factorization of bb. | 709 // Compute the QR factorization of bb. |
703 QR bqr (bb); | 710 QR bqr (bb); |
704 | 711 |
705 #ifdef DEBUG | 712 #ifdef DEBUG |
706 std::cout << "qz: qr (bb) done; now peforming qz decomposition" << std::endl; | 713 std::cout << "qz: qr (bb) done; now peforming qz decomposition" |
714 << std::endl; | |
707 #endif | 715 #endif |
708 | 716 |
709 bb = bqr.R (); | 717 bb = bqr.R (); |
710 | 718 |
711 #ifdef DEBUG | 719 #ifdef DEBUG |
728 #ifdef DEBUG | 736 #ifdef DEBUG |
729 std::cout << "qz: precursors done..." << std::endl; | 737 std::cout << "qz: precursors done..." << std::endl; |
730 #endif | 738 #endif |
731 | 739 |
732 #ifdef DEBUG | 740 #ifdef DEBUG |
733 std::cout << "qz: compq = " << compq << ", compz = " << compz << std::endl; | 741 std::cout << "qz: compq = " << compq << ", compz = " << compz |
742 << std::endl; | |
734 #endif | 743 #endif |
735 | 744 |
736 // Reduce to generalized hessenberg form. | 745 // Reduce to generalized hessenberg form. |
737 F77_XFCN (dgghrd, DGGHRD, | 746 F77_XFCN (dgghrd, DGGHRD, |
738 (F77_CONST_CHAR_ARG2 (&compq, 1), | 747 (F77_CONST_CHAR_ARG2 (&compq, 1), |
769 F77_CHAR_ARG_LEN (1) | 778 F77_CHAR_ARG_LEN (1) |
770 F77_CHAR_ARG_LEN (1))); | 779 F77_CHAR_ARG_LEN (1))); |
771 | 780 |
772 #ifdef DEBUG | 781 #ifdef DEBUG |
773 if (compq == 'V') | 782 if (compq == 'V') |
774 std::cout << "qz: balancing done; QQ=" << std::endl << QQ << std::endl; | 783 std::cout << "qz: balancing done; QQ=" << std::endl |
775 #endif | 784 << QQ << std::endl; |
776 } | 785 #endif |
777 | 786 } |
778 // then right | 787 |
788 // then right | |
779 if (compz == 'V') | 789 if (compz == 'V') |
780 { | 790 { |
781 F77_XFCN (dggbak, DGGBAK, | 791 F77_XFCN (dggbak, DGGBAK, |
782 (F77_CONST_CHAR_ARG2 (&bal_job, 1), | 792 (F77_CONST_CHAR_ARG2 (&bal_job, 1), |
783 F77_CONST_CHAR_ARG2 ("R", 1), | 793 F77_CONST_CHAR_ARG2 ("R", 1), |
784 nn, ilo, ihi, lscale.data (), rscale.data (), | 794 nn, ilo, ihi, lscale.data (), rscale.data (), |
785 nn, ZZ.fortran_vec (), nn, info | 795 nn, ZZ.fortran_vec (), nn, info |
786 F77_CHAR_ARG_LEN (1) | 796 F77_CHAR_ARG_LEN (1) |
787 F77_CHAR_ARG_LEN (1))); | 797 F77_CHAR_ARG_LEN (1))); |
788 | 798 |
789 #ifdef DEBUG | 799 #ifdef DEBUG |
790 if (compz == 'V') | 800 if (compz == 'V') |
791 std::cout << "qz: balancing done; ZZ=" << std::endl << ZZ << std::endl; | 801 std::cout << "qz: balancing done; ZZ=" << std::endl |
802 << ZZ << std::endl; | |
792 #endif | 803 #endif |
793 } | 804 } |
794 | 805 |
795 } | 806 } |
796 | 807 |
913 if (zcnt == 1) | 924 if (zcnt == 1) |
914 { | 925 { |
915 // Real zero. | 926 // Real zero. |
916 #ifdef DEBUG_EIG | 927 #ifdef DEBUG_EIG |
917 std::cout << " single gen eig:" << std::endl; | 928 std::cout << " single gen eig:" << std::endl; |
918 std::cout << " alphar(" << jj << ") = " << aa(jj,jj) << std::endl; | 929 std::cout << " alphar(" << jj << ") = " << aa(jj,jj) |
919 std::cout << " betar( " << jj << ") = " << bb(jj,jj) << std::endl; | 930 << std::endl; |
931 std::cout << " betar( " << jj << ") = " << bb(jj,jj) | |
932 << std::endl; | |
920 std::cout << " alphai(" << jj << ") = 0" << std::endl; | 933 std::cout << " alphai(" << jj << ") = 0" << std::endl; |
921 #endif | 934 #endif |
922 | 935 |
923 alphar(jj) = aa(jj,jj); | 936 alphar(jj) = aa(jj,jj); |
924 alphai(jj) = 0; | 937 alphai(jj) = 0; |
928 { | 941 { |
929 // Complex conjugate pair. | 942 // Complex conjugate pair. |
930 #ifdef DEBUG_EIG | 943 #ifdef DEBUG_EIG |
931 std::cout << "qz: calling dlag2:" << std::endl; | 944 std::cout << "qz: calling dlag2:" << std::endl; |
932 std::cout << "safmin=" | 945 std::cout << "safmin=" |
933 << setiosflags (std::ios::scientific) << safmin << std::endl; | 946 << setiosflags (std::ios::scientific) |
947 << safmin << std::endl; | |
934 | 948 |
935 for (int idr = jj; idr <= jj+1; idr++) | 949 for (int idr = jj; idr <= jj+1; idr++) |
936 { | 950 { |
937 for (int idc = jj; idc <= jj+1; idc++) | 951 for (int idc = jj; idc <= jj+1; idc++) |
938 { | 952 { |
939 std::cout << "aa(" << idr << "," << idc << ")=" | 953 std::cout << "aa(" << idr << "," << idc << ")=" |
940 << aa(idr,idc) << std::endl; | 954 << aa(idr,idc) << std::endl; |
941 std::cout << "bb(" << idr << "," << idc << ")=" | 955 std::cout << "bb(" << idr << "," << idc << ")=" |
942 << bb(idr,idc) << std::endl; | 956 << bb(idr,idc) << std::endl; |
943 } | 957 } |
944 } | 958 } |
945 #endif | 959 #endif |
946 | 960 |
947 // FIXME -- probably should be using | 961 // FIXME: probably should be using |
948 // fortran_vec instead of &aa(jj,jj) here. | 962 // fortran_vec instead of &aa(jj,jj) here. |
949 | 963 |
950 double scale1, scale2, wr1, wr2, wi; | 964 double scale1, scale2, wr1, wr2, wi; |
951 const double *aa_ptr = aa.data () + jj * nn + jj; | 965 const double *aa_ptr = aa.data () + jj * nn + jj; |
952 const double *bb_ptr = bb.data () + jj * nn + jj; | 966 const double *bb_ptr = bb.data () + jj * nn + jj; |
954 (aa_ptr, nn, bb_ptr, nn, safmin, | 968 (aa_ptr, nn, bb_ptr, nn, safmin, |
955 scale1, scale2, wr1, wr2, wi)); | 969 scale1, scale2, wr1, wr2, wi)); |
956 | 970 |
957 #ifdef DEBUG_EIG | 971 #ifdef DEBUG_EIG |
958 std::cout << "dlag2 returns: scale1=" << scale1 | 972 std::cout << "dlag2 returns: scale1=" << scale1 |
959 << "\tscale2=" << scale2 << std::endl | 973 << "\tscale2=" << scale2 << std::endl |
960 << "\twr1=" << wr1 << "\twr2=" << wr2 | 974 << "\twr1=" << wr1 << "\twr2=" << wr2 |
961 << "\twi=" << wi << std::endl; | 975 << "\twi=" << wi << std::endl; |
962 #endif | 976 #endif |
963 | 977 |
964 // Just to be safe, check if it's a real pair. | 978 // Just to be safe, check if it's a real pair. |
965 if (wi == 0) | 979 if (wi == 0) |
966 { | 980 { |
993 { | 1007 { |
994 std::cout << std::endl << "ZZ=" << std::endl; | 1008 std::cout << std::endl << "ZZ=" << std::endl; |
995 octave_print_internal (std::cout, ZZ, 0); | 1009 octave_print_internal (std::cout, ZZ, 0); |
996 } | 1010 } |
997 std::cout << std::endl << "qz: ndim=" << ndim << std::endl | 1011 std::cout << std::endl << "qz: ndim=" << ndim << std::endl |
998 << "fail=" << fail << std::endl; | 1012 << "fail=" << fail << std::endl; |
999 std::cout << "alphar = " << std::endl; | 1013 std::cout << "alphar = " << std::endl; |
1000 octave_print_internal (std::cout, (Matrix) alphar, 0); | 1014 octave_print_internal (std::cout, (Matrix) alphar, 0); |
1001 std::cout << std::endl << "alphai = " << std::endl; | 1015 std::cout << std::endl << "alphai = " << std::endl; |
1002 octave_print_internal (std::cout, (Matrix) alphai, 0); | 1016 octave_print_internal (std::cout, (Matrix) alphai, 0); |
1003 std::cout << std::endl << "beta = " << std::endl; | 1017 std::cout << std::endl << "beta = " << std::endl; |
1208 std::cout << std::endl; | 1222 std::cout << std::endl; |
1209 #endif | 1223 #endif |
1210 retval(1) = cbb; | 1224 retval(1) = cbb; |
1211 retval(0) = caa; | 1225 retval(0) = caa; |
1212 } | 1226 } |
1213 else | 1227 else |
1214 { | 1228 { |
1215 #ifdef DEBUG | 1229 #ifdef DEBUG |
1216 std::cout << "qz: retval(1) = bb = " << std::endl; | 1230 std::cout << "qz: retval(1) = bb = " << std::endl; |
1217 octave_print_internal (std::cout, bb, 0); | 1231 octave_print_internal (std::cout, bb, 0); |
1218 std::cout << std::endl << "qz: retval(0) = aa = " <<std::endl; | 1232 std::cout << std::endl << "qz: retval(0) = aa = " <<std::endl; |
1219 octave_print_internal (std::cout, aa, 0); | 1233 octave_print_internal (std::cout, aa, 0); |
1220 std::cout << std::endl; | 1234 std::cout << std::endl; |
1221 #endif | 1235 #endif |
1222 retval(1) = bb; | 1236 retval(1) = bb; |
1223 retval(0) = aa; | 1237 retval(0) = aa; |
1224 } | 1238 } |
1225 } | 1239 } |
1226 break; | 1240 break; |
1227 | 1241 |
1228 | 1242 |
1229 case 1: | 1243 case 1: |