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: