Mercurial > octave
view doc/interpreter/set.txi @ 30199:37ddca7ad9cb stable
avoid internal error and segfault with eval and scripts (bug #61191)
* stack-frame.cc (script_stack_frame::get_val_offsets_with_insert):
If frame_offset is initially zero then update frame_offset from
m_lexical_frame_offsets after calling set_script_offsets_internal.
* test/bug-61191/bug-61191.tst, test/bug-61191/subdir/bug_61191.m:
New files.
* test/bug-61191/module.mk: Update.
* test/module.mk: Update.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 21 Sep 2021 13:14:31 -0400 |
parents | 00f796120a6d |
children | f3272029d42c |
line wrap: on
line source
@c Copyright (C) 1996-2019 John W. Eaton @c @c This file is part of Octave. @c @c Octave is free software: you can redistribute it and/or modify it @c under the terms of the GNU General Public License as published by @c the Free Software Foundation, either version 3 of the License, or @c (at your option) any later version. @c @c Octave is distributed in the hope that it will be useful, but @c WITHOUT ANY WARRANTY; without even the implied warranty of @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with Octave; see the file COPYING. If not, see @c <https://www.gnu.org/licenses/>. @node Sets @chapter Sets Octave has a number of functions for managing sets of data. A set is defined as a collection of unique elements and is typically represented by a vector of numbers sorted in ascending order. Any vector or matrix can be converted to a set by removing duplicates through the use of the @code{unique} function. However, it isn't necessary to explicitly create a set as all of the functions which operate on sets will convert their input to a set before proceeding. @DOCSTRING(unique) @menu * Set Operations:: @end menu @node Set Operations @section Set Operations Octave supports several basic set operations. Octave can compute the union, intersection, and difference of two sets. Octave also supports the @emph{Exclusive Or} set operation. The functions for set operations all work in the same way by accepting two input sets and returning a third set. As an example, assume that @code{a} and @code{b} contains two sets, then @example union (a, b) @end example @noindent computes the union of the two sets. Finally, determining whether elements belong to a set can be done with the @code{ismember} function. Because sets are ordered this operation is very efficient and is of order O(log2(n)) which is preferable to the @code{find} function which is of order O(n). @DOCSTRING(intersect) @DOCSTRING(union) @DOCSTRING(setdiff) @DOCSTRING(setxor) @DOCSTRING(ismember) @DOCSTRING(powerset)