comparison libinterp/dldfcn/symrcm.cc @ 20939:b17fda023ca6

maint: Use new C++ archetype in more files. Place input validation first in files. Move declaration of retval down in function to be closer to point of usage. Eliminate else clause after if () error. Use "return ovl()" where it makes sense. * find.cc, gammainc.cc, gcd.cc, getgrent.cc, getpwent.cc, givens.cc, graphics.cc, help.cc, hess.cc, hex2num.cc, input.cc, kron.cc, load-path.cc, load-save.cc, lookup.cc, mappers.cc, matrix_type.cc, mgorth.cc, nproc.cc, ordschur.cc, pager.cc, pinv.cc, pr-output.cc, profiler.cc, psi.cc, quad.cc, rcond.cc, regexp.cc, schur.cc, sighandlers.cc, sparse.cc, str2double.cc, strfind.cc, strfns.cc, sub2ind.cc, svd.cc, sylvester.cc, symtab.cc, syscalls.cc, sysdep.cc, time.cc, toplev.cc, tril.cc, tsearch.cc, typecast.cc, urlwrite.cc, utils.cc, variables.cc, __delaunayn__.cc, __eigs__.cc, __glpk__.cc, __magick_read__.cc, __osmesa_print__.cc, __voronoi__.cc, amd.cc, audiodevinfo.cc, audioread.cc, chol.cc, colamd.cc, dmperm.cc, fftw.cc, qr.cc, symbfact.cc, symrcm.cc, ov-bool-mat.cc, ov-cell.cc, ov-class.cc, ov-classdef.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc, ov-java.cc, ov-null-mat.cc, ov-oncleanup.cc, ov-re-mat.cc, ov-struct.cc, ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc, octave.cc: Use new C++ archetype in more files.
author Rik <rik@octave.org>
date Fri, 18 Dec 2015 15:37:22 -0800
parents 1142cf6abc0d
children 6176560b03d9
comparison
equal deleted inserted replaced
20938:aac911d8847b 20939:b17fda023ca6
435 Mathematics, ISBN 0-13-165274-5, 1981.\n\ 435 Mathematics, ISBN 0-13-165274-5, 1981.\n\
436 \n\ 436 \n\
437 @seealso{colperm, colamd, symamd}\n\ 437 @seealso{colperm, colamd, symamd}\n\
438 @end deftypefn") 438 @end deftypefn")
439 { 439 {
440 octave_value retval;
441
442 if (args.length () != 1) 440 if (args.length () != 1)
443 print_usage (); 441 print_usage ();
442
443 octave_value retval;
444 444
445 octave_value arg = args(0); 445 octave_value arg = args(0);
446 446
447 // the parameter of the matrix is converted into a sparse matrix 447 // the parameter of the matrix is converted into a sparse matrix
448 //(if necessary) 448 //(if necessary)
473 gripe_square_matrix_required ("symrcm"); 473 gripe_square_matrix_required ("symrcm");
474 return retval; 474 return retval;
475 } 475 }
476 476
477 if (nr == 0 && nc == 0) 477 if (nr == 0 && nc == 0)
478 return octave_value (NDArray (dim_vector (1, 0))); 478 return ovl (NDArray (dim_vector (1, 0)));
479 479
480 // sizes of the heaps 480 // sizes of the heaps
481 octave_idx_type s = 0; 481 octave_idx_type s = 0;
482 482
483 // head- and tail-indices for the queue 483 // head- and tail-indices for the queue
502 // the return value corresponds to the identity permutation 502 // the return value corresponds to the identity permutation
503 if (max_deg == 0) 503 if (max_deg == 0)
504 { 504 {
505 for (octave_idx_type i = 0; i < N; i++) 505 for (octave_idx_type i = 0; i < N; i++)
506 P(i) = i; 506 P(i) = i;
507 return octave_value (P); 507
508 return ovl (P);
508 } 509 }
509 510
510 // a heap for the a node's neighbors. The number of neighbors is 511 // a heap for the a node's neighbors. The number of neighbors is
511 // limited by the maximum degree max_deg: 512 // limited by the maximum degree max_deg:
512 OCTAVE_LOCAL_BUFFER (CMK_Node, S, max_deg); 513 OCTAVE_LOCAL_BUFFER (CMK_Node, S, max_deg);
691 s = N / 2 - 1; 692 s = N / 2 - 1;
692 for (octave_idx_type i = 0, j = N - 1; i <= s; i++, j--) 693 for (octave_idx_type i = 0, j = N - 1; i <= s; i++, j--)
693 std::swap (P.elem (i), P.elem (j)); 694 std::swap (P.elem (i), P.elem (j));
694 695
695 // increment all indices, since Octave is not C 696 // increment all indices, since Octave is not C
696 return octave_value (P+1); 697 return ovl (P+1);
697 } 698 }